Histoire des systèmes dʼexploitation - membres
Transcription
Histoire des systèmes dʼexploitation - membres
Quʼest-ce quʼun système dʼexploitation ? “An operating system is a collection of things that don’t fit into a language. There shouldn’t be one.” Histoire des systèmes dʼexploitation « Un système d’exploitation, c’est une collection de choses qui ne tiennent pas dans un langage. Çà ne devrait pas exister. » Sacha Krakowiak Université de Grenoble & Aconit Dan Ingalls, “Design Principles Behind Smalltalk”, Byte Magazine, August 1981. © 2014, S. Krakowiak Quʼest-ce quʼun système dʼexploitation ? Histoire des systèmes dʼexploitation 2 Qualités dʼun système dʼexploitation MV MV ! Discrétion assurer ses fonctions, et …se faire oublier MV ! Économie Interface système Interface langage Appli 1 Appli 2 Machine abstraite (virtuelle) Système d’exploitation Langage A Langage B Interface physique bon usage des ressources performances Isolation, sécurité, protection Communication Transformation d'interface Virtualisation des ressources temps de réponse débit des travaux Gestion des ressources physiques Gestion des activités parallèles Gestion et conservation de l'information Fonctions d'intendance (entrées-sorties, bibliothèques) surcoût minimal équité ! Ergonomie facilité dʼusage qualité de lʼinterface prévisibilité © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 3 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 4 Temps partagé Ordinateurs individuels Traitement par lots économie non pertinente ergonomie +++ économie + ergonomie ++ … économie ++ ergonomie -- Accès direct, sans système Machines virtuelles 1980 1990 NeXT 1973 CP/M 1973 Alto (Xerox PARC), Alto OS 1981 IBM PC, MS-DOS 1984 MacOS 1950 1949 1960 1970 1980 1956 Premier moniteur d’enchaînement : GM/NAA 1961 Premier système en temps partagé : CTSS Premiers ordinateurs à programme enregistré (EDSAC, Manchester Mk1) Ordinateurs individuels 1962 Premier système multiprocesseur : Burroughs MCP B5000/5500 1964 Premier vrai «super-ordinateur» : CDC6600, E/S parallèles 1965 Multics, fondation des systèmes modernes 1969 Première version d’Unix (simplification de Multics) 1973 Alto (Xerox PARC), Alto OS Ordinateurs 1973 CP/M 1981 IBM PC, MS-DOS individuels 1982 Sun OS (Unix) Minis/Stations 1977 DEC Vax VMS 1964 OS/360, moniteur batch sur IBM 360 Mainframes TOPS-10 TENEX DEC PDP 10 1970 1967 Machines virtuelles VMWare 1972 IBM VM/370 Les dates des périodes sont approximatives … économie -ergonomie ++ … … Mainframes Minis/ stations CP/CMS, générateur de machines virtuelles IBM MVS SunOS renaissance du parallélisme multiprocesseurs interface mémoire conviviale cohérence virtuelle ordonnancement client-serveur sécurité protection système de fichiers machine virtuelle, hyperviseur Solaris 1995 Open BSD Unix BSD 1987 Minix 1969 Linux HP-Ux 1979 2007 iOS 1991 1983 Unix System V Accent 2012 Windows-8 2003 Android IBM AIX 1984 Mach 2006 OKL4 Mach3 L3 1980 Chorus L4 2002 Contiki Objets connectés ChorusOS 1982 QNX 1982 VxWorks Mobiles 2008 Riot 1999 TinyOS ! Pas de système dʼexploitation ! cache 1970 1996 Windows-Vista La préhistoire (1950-56) processus, synchronisation modèle en couches, abstraction 10.10 MacOS X 1993 Windows-NT 2000 IBM z/OS 1992 OpenVMS Vax VMS Concepts et techniques 1960 2010 1995 Windows-95 1987 Windows-2 2001 Windows-XP 1990 Windows-3 1974 Unix Noyaux temps réel 1972 IBM VM/370 2000 1985 Windows 1977 Micronoyaux Xen 1980 micro-noyau système de fichiers réparti tolérance aux fautes réalisations du cloud 1990 2000 applications : recherche, calcul scientifique, puis gestion ! Fonctionnement sur réservation mémoire transactionnelle le programmeur a le contrôle complet de la machine programmation en binaire ou assembleur mise au point interactive (clés) quelques outils simples 2010 noyau certifié systèmes pour réseaux (preuve de validité) 1956 assembleur et chargeur rudimentaires renaissance des machines virtuelles bibliothèque de sous-programmes outils de mise au point Premier moniteur batch Premier compilateur Fortran (arrêt sur adresse, affichage) ! Bon confort, mais... peu économique, vu le coût élevé du matériel faible productivité, vu la pauvreté des outils © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 7 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 8 Systèmes de traitement par lots Moniteur de traitement par lots (batch) Cette animation montre très schématiquement le fonctionnement dʼun système dʼexploitation à traitement par lots (batch) tel quʼil existait au début des années 1950. ! Motivation rentabiliser lʼinvestissement en matériel Programmes et données Cliquez pour commencer. maximiser le taux dʼutilisation des ressources ! Premier système (1956) Salle dʼaccueil développé par des utilisateurs (General Motors, North American Aviation) sur IBM 704 IBM suivra avec IBSYS Guichet dʼentrée Exécution Ordinateur Cartes Listings ! Principe Deux ou trois heures plus tard … regrouper les travaux par «fournées» (batch) enchaînement automatique des travaux entrées sur cartes, sortie sur imprimante fgdgdh hhjd jjdj jjjjjjjj fgdgdh hhjd jjdj jjjjjjjj jjdjdjdkd fgdgdh hhjd jjdj jjjjjjjj jjdjdjdkd fgdgdh hhjd jjdj jjjjjjjj jjdjdjdkd fgdgdhjjjkkk hhjd jjdj jjjjjjjj kdldldllljjdjdjdkd hhdjdjk fgdgdhjjjkkk hhjd jjdj jjjjjjjj kdldldlll hhdjdjk dkk jjjjjjj jjdjdjdkd kdldldlll hhdjdjk jjjkkk jjdjdjdkd dkk jjjjjjj kdldldlll dkk jjjjjjj hhdjdjk jjjkkk kdldldlll dkk jjjjjjj hhdjdjk jjjkkk kdldldlll dkk jjjjjjj hhdjdjk jjjkkk hg jkiuy ytzrz dkk jjjjjjj hg jkiuy ytzrz gdghdhh hg jkiuy ytzrz gdghdhh hhhh hg jkiuy ytzrz gdghdhh hhhhgdghdhh hg jkiuy ytzrz hhhh hg jkiuy ytzrz gdghdhh hhhh gdghdhh hhhh hhhh Guichet de sortie plus tard : bandes magnétiques Tout est prêt pour la fournée suivante ! Résultats Cliquez pour recommencer. © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 9 Un nouveau modèle dʼexploitation Avancées architecturales Le système dʼexploitation impose des changements dans lʼarchitecture des machines ! Lʼutilisateur éloigné de la machine… ! Lʼhorloge programmable perte de lʼinteractivité longs délais dʼattente faible tolérance aux erreurs problème : boucle infinie dans un programme dʼutilisateur bloque tout le train de travaux remède : lʼhorloge programmable ! De nouveaux métiers chaque travail indique une durée maximale dʼexécution atelier de préparation des travaux suite des ateliers de mécanographie il est interrompu si cette limite est atteinte © FEB - Jean Bellec ! La protection de mémoire «perfo - vérif» problème : un programme écrit «nʼimporte où» dans la mémoire gestion et surveillance de lʼexécution risque dʼécrire dans le programme ou les données du système opérateur - pupitreur remède placer le système dans une zone de mémoire protégée Courtesy Computer History Museum © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 11 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 12 Préparation soumission des travaux guichet d'entrée préparation du train de travaux lecteur de cartes Ordinateur La course à lʼefficacité (2) : La multiprogrammation train de travaux Processeur découpage et tri des résultats guichet de sortie collecte des résultats Exécution quelques heures plus tard… unité centrale listing collectif des résultats imprimante Mémoire centrale La course à lʼefficacité (1) : ordinateurs couplés lecteur de cartes train de travaux ! Influence sur lʼarchitecture mémoire secondaire rapide (disques Mémoire secondaire (disque) unité de bandes magnétiques transfert de bandes canaux dʼentrée-sortie (E/S simultanées) sortie des résultats imprimante Ordinateur auxiliaire ! Principe plusieurs travaux coexistent en mémoire chargement des travaux en parallèle avec lʼexécution entrée des programmes transfert de bandes listing collectif des résultats ! Objectif réduire le temps de commutation entre travaux Ordinateur principal registres de base Lʼordinateur principal et l'ordinateur auxiliaire fonctionnent en parallèle et peuvent être en des lieux différents. © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 13 Entrées-sorties simultanées Trois systèmes du début des années 60 ! Le Spool (Simultaneous Peripherals Operation On Line) ! Deux systèmes novateurs (1961-62) recouvrement entre exécution de programme et entrées-sorties exploite les canaux dʼentrée-sortie et les disques canal processeur images de cartes Burroughs MCP (Master Control Program) pour B5000/5500 premier système pour multiprocesseur programmé en langage de haut niveau (sous-ensemble dʼAlgol 60) canal organisation originale de la mémoire (segments gérés par logiciel, exécution sur une pile) images de pages le système dʼexploitation est lui-même segmenté Atlas (Univ. Manchester - Ferranti) lecteur de cartes tampon d’entrée tampon de sortie (mémoire) (mémoire) mémoire «à un niveau» : invention de la mémoire virtuelle paginée première mise en œuvre du spool imprimante invention des appels au superviseur ! Un système à large diffusion : OS/360 (1964) Disque © 2014, S. Krakowiak Disque Histoire des systèmes dʼexploitation Système dʼexploitation unique pour la gamme IBM/360 15 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 16 Un système batch typique : OS/360 (1) Un système batch typique : OS/360 (2) ! Le défi ! Du côté de lʼutilisateur un système dʼexploitation unique pour la gamme IBM/360 quelques compromis pour les petites configurations lʼinterface : JCL (Job Control Language) indications pour le traitement (priorité, temps max, etc.) définition des programmes et données ! Les réalisations un langage peu convivial PCP : un travail (job) à la fois MFT : multiprogrammé, nombre fixe de tâches (1964) MVT : multiprogrammé, nombre variable de tâches (1967) une syntaxe rigide (liée au format des cartes) une définition de données complexe (pré-bases de données) ! Du côté du génie logiciel exploitation quasi-optimale du matériel… un système complexe (le plus gros logiciel de lʼépoque) sans dessein architectural … mais peu de considération pour lʼutilisateur ! Les extensions (Fred Brooks : “a multi-million dollar mistake”) TSO : Time sharing option (1971) programmé en assembleur (initialement) difficile à maintenir accès interactif, soumission et mise au point des travaux à distance OS/VS1, VS/2 : mémoire virtuelle (1972) © 2014, S. Krakowiak Histoire des systèmes dʼexploitation (“1000 bugs per release”) 17 Les débuts du temps partagé Histoire des systèmes dʼexploitation 18 CTSS (Compatible Time-Sharing System) ! Un système novateur ! Motivations premier système en temps partagé retrouver lʼinteraction directe, perdue avec le traitement par lots… … en maintenant une bonne exploitation des ressources (compatible avec batch) ordonnancement multi-niveaux communication entre utilisateurs langage de commande ! Une vision prophétique “… computing may someday be organized as a public utility just as the telephone system is a public utility” Fernando Corbató ! La réalisation John McCarthy (1961) Jason Dorfman, MIT CSAIL IBM 7094, modifié à la demande ! Principe de base 2 bancs de mémoire de 32K mots Exploiter la différence dʼéchelle de temps entre lʼhomme (seconde) et le processeur (microseconde) Pendant le temps de réflexion dʼun usager, on peut servir beaucoup dʼautres usagers protection de mémoire, système de déroutements («trappes») version 0 : 1961 (4 terminaux), production : 1964-74 ! Les retombées démonstration de la viabilité du temps partagé influence directe : Multics (MIT), CP/CMS (IBM) ! Un prototype de recherche : CTSS (MIT), 1961 © 2014, S. Krakowiak © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 19 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 20 Un système en temps partagé Mémoire Processeur Utilisation du processeur dans le temps 3 1 5 2 7 programme 3 programme 5 … 1 ! Une période charnière : 1965-70 2 1967 : First ACM Symposium on Operating Systems Principles 3 ! Un concept clé : la virtualisation … programme 1 processeur# # processus Les débuts dʼune approche scientifique mémoire# # # mémoire virtuelle des systèmes dʼexploitation segment disque# # # fichier entrée-sortie# # flot écran# # # fenêtre machine# # # machine virtuelle …# # # # … n quelques dizaines de millisecondes 7 Disque 2 Grâce au partage du processeur : Chaque utilisateur a lʼimpression quʼil dispose seul de lʼordinateur ! Des expériences fondatrices Grâce à lʼutilisation du disque : Chaque utilisateur a lʼimpression quʼil dispose dʼune mémoire pratiquement illimitée (mémoire virtuelle) © 2014, S. Krakowiak THE, Multics, CP67 21 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation Les deux faces de la virtualisation 22 Programmes concurrents ! Les origines ! Ascendante (abstraction) interface exportée Un outil de partage de ressources Création de ressources «hautes» La multiprogrammation permet lʼexécution concurrente de plusieurs programmes : divers schémas possibles temps Multiplexage de ressources «basses» pas de concurrence a) interface existante Interface visible, réalisation cachée Transformation (ou non) dʼinterfaces Préservation dʼinvariants interface souhaitée (pseudo-parallélisme) multiprocesseur c) ! Un mécanisme ! Descendante (raffinement) Un outil de conception De la spécification à la réalisation Hiérarchie de machines abstraites processeur partagé b) (parallélisme réél) ranger contexte courant 1 interface existante 2 interruption © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 23 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation charger nouveau contexte 24 Dangers des interruptions (1) Danger des interruptions (2) «Cʼétait une grande invention, mais aussi une boîte de Pandore.» ! Exécution pseudo-parallèle Edsger Dijkstra ! Effet dʼune interruption les changements de programme sont déclenchés par des interruptions dʼhorloge (en lʼabsence de précautions) exemple : deux opérations de dépôt sur un même compte bancaire activité 1 activité 2 insérer une séquence dʼinstructions «nʼimporte où» dans le corps dʼun programme lʼexécution du programme devient indéterministe (non reproductible) un scénario dʼexécution : 1.1 ; 1.2 ; 2.1 ; 2.2 ; 2.3 ; 1.3 il devient difficile (voire impossible) de raisonner sur lʼeffet du programme © 2014, S. Krakowiak Histoire des systèmes dʼexploitation résultat net ? le compte est crédité de 1 000 € au lieu de 4 000 € ! 25 © 2014, S. Krakowiak Un problème de synchronisation Histoire des systèmes dʼexploitation La notion de processus ! Comment éviter la perte de mise à jour ? ! Un pas vers lʼabstraction… un remède : imposer une exécution séquentielle des deux opérations de dépôt (A1 et A2) soit A1 puis A2, soit A2 puis A1 : tout entrelacement est interdit autrement dit : une seule des activités (au plus) peut exécuter à un instant donné lʼopération en cause (dite section critique) quʼy a-t-il de commun entre les exécutions suivantes ? a) b) Edsger W. Dijkstra (1930 - 2002) c) A1 A1 A2 permis A1 permis on arrive ainsi à la notion de processus (séquentiel), programme en cours dʼexécution, indépendamment de ses ressources interdit Cette condition sʼappelle lʼexclusion mutuelle ; cʼest le premier problème de synchronisation explicitement formulé (Dijkstra, 1965) © 2014, S. Krakowiak Histoire des systèmes dʼexploitation crédit : University of Texas at Austin réponse : deux activités considérées comme séquences dʼactions, indépendamment des conditions de leur exécution. A2 A2 26 chaque processus a un processeur virtuel (éventuellement à vitesse nulle) avantage : séparer les aspects logiques de lʼallocation de ressources 27 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 28 Synchronisation des processus Réaliser les processus : le noyau Deux fonctions ! Objectif imposer des contraintes logiques entre processus pour régler la compétition ou la coopération ! Allouer le(s) processeur(s) Choisir une politique dʼordonnancement Exemple : le tourniquet (round robin), plus court dʼabord, etc. ! Moyens bloquer (faire attendre) un processus jusquʼà réalisation dʼune condition ! Exemple processus p1 … verrouiller (v) section critique déverrouiller (v) … processus p2 … verrouiller (v) section critique déverrouiller (v) … Histoire des systèmes dʼexploitation existence actif ordonnancement élu synchronisation bloqué éligible 29 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation Virtualiser la mémoire (1) 30 Virtualiser la mémoire (2) ! Un système précurseur… ! Deux problèmes à résoudre LʼAtlas (Manchester, 1961) Concept de «mémoire à un niveau» (one level store) Un espace unique, réalisé par mémoire principale et secondaire Définir la structure dʼune «mémoire virtuelle» (telle que vue par lʼutilisateur) Réaliser la correspondance entre mémoire virtuelle et mémoire physique mémoire principale vue logique : un espace unique 192 pages de 512 mots de 48 bits ! Structure de la mémoire virtuelle … Mémoire linéaire (peut être plus grande que la mémoire physique) Mémoire segmentée (ex : Burroughs MCP, Multics) 0 ensemble de segments de taille variable 190 191 3 table dʼimplantation 0 … schéma idéal, mais peu utilisé à lʼétat «pur» table associative 32 entrées 31 30 190 vue physique 31 30 3 … instructions spéciales verrous sémaphores moniteurs messages © 2014, S. Krakowiak Création, destruction, examen des processus Réalisation des primitives de synchronisation exclusion mutuelle … ! Outils ! Fournir une interface Tambour Tambour Tambour 1 0 0 adresse tambour 32 cases de 512 mots ! Mise en œuvre de la mémoire virtuelle ! … mais des problèmes inattendus Pagination à la demande Dégradation brutale et inexpliquée des performances (écroulement) Lʼexplication viendra… en 1968 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 31 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 32 Virtualiser la mémoire (3) Pagination à la demande Mémoire virtuelle npage Mémoire physique Mémoire associative (TLB) P 2 —1 npage ncase npage npage UGM dep échec adresse physique ncase npage dep 10 0 0 0 © 2014, S. Krakowiak défaut de page (b) Traduction des adresses Histoire des systèmes dʼexploitation adresse disque ... protect ncase présent = 0 Mémoire (a) Correspondance pages-cases adresse physique succès ncase 1 1 dep adresse virtuelle modif Processeur ncase dep adresse virtuelle présent 2 M —1 33 Table de pages (en mémoire) registre de base de la table de pages une par mémoire virtuelle © 2014, S. Krakowiak Histoire des systèmes dʼexploitation Un piège de la mémoire virtuelle 34 Comprendre et éviter lʼécroulement ! Lʼécroulement (thrashing) taux dʼactivité CPU ! Lorsque la charge augmente, le système «sʼécroule» ! et n mesurés sur dernier intervalle dʼobservation (t-∆t, t) explosion du taux dʼactivité du disque et du temps de réponse B. Brawn, F. Gustavson. Program behavior in a paging environment. Proc. AFIPS FJCC, pp. 1019-1032 (1968) 100% baisse dʼactivité du processeur Prévention de lʼécroulement : expériences IBM M44/44X (1968) Charge normale ! Explication schématique Sous-charge Comportement des programmes n tout programme a besoin dʼune taille minimale pour fonctionner dans de bonnes conditions 1200 1000 sans contrôle dʼadmission avec contrôle dʼadmission 600 every ∆t do if (overload) move one process from ready set to waiting set else if (underload and (waiting set ≠ ")) $ admit one waiting process to ready set T temps moyen de traitement dʼun défaut de page t temps moyen dʼexécution dʼune instruction à Temps dʼexécution (secondes) 800 Coût élevé du défaut de page T / t de lʼordre de Nombre de remplacements de page a) modèle simple de comportement du système au-dessous de cette taille, le nombre de défauts de page augmente très vite 103 Surcharge 104 400 200 1 2 3 4 5 Nombre de processus actifs b) effet de la limitation de charge par contrôle dʼadmission © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 35 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 36 Communication interne Structure dʼun système dʼexploitation (1) Application gestion des travaux Appel système communication Blocage/ réveil mode utilisateur Système Traitant gestion des fichiers interface machine physique read(fich, buf, n) Application mode noyau asynchrone Application synchrone interface système dans un système dʼexploitation Traitant vérifier paramètres sauver état, bloquer exécuter commande restaurer état réactiver Matériel gestion des processus Interruption Commande E/S, horloge, MMU, ... gestion de la mémoire lecture disque interruption (b) Appel système (a) Flot de contrôle Machine physique interface indépendante du matériel Couche dʼadaptation du matériel interface processus © 2014, S. Krakowiak interface mémoire pilotes 37 Histoire des systèmes dʼexploitation Causes dʼinterruption Appel système Déroutement Horloge Entrée-sortie Organe externe Incident Opération sur fichier Entrée-sortie Opération sur processus Opération impossible Débordement Erreur dʼadressage © 2014, S. Krakowiak Machines virtuelles Histoire des systèmes dʼexploitation Machines virtuelles : comment çà marche ! Lʼhyperviseur, un super-OS Appli. Présente une interface uniforme aux machines virtuelles (MVs) Appli. Gère (et protège) les ressources physiques Mode utilisateur OS Cʼest un composant critique Appli. Interface machine physique Appli. OS MV1 ! Première réalisation Appli. … ... … Interruption Instructions privilégiées OS MV2 Machine physique Hyperviseur Mode privilégié Trap État MV1 Entrées-sorties Interruptions Mémoire virtuelle … État MV2 Machine physique Hyperviseur ! Un problème … CP67 (IBM 360/67) Utilisation : CP/CMS Trap Machine physique Base pour VM/370 © 2014, S. Krakowiak Trap Instructions privilégiées OS Instructions privilégiées Encapsule lʼétat interne des MVs Isolation Défaillances Sécurité 38 Histoire des systèmes dʼexploitation 39 Sur les machines actuelles (IA-32, etc.), lʼeffet de certaines instructions dépend du mode courant (privilégié ou utilisateur) De telles instructions ne sont pas virtualisables © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 40 Machines virtuelles Sécurité et protection (1) ! Comment contourner le problème des instructions multi-modes ? La paravirtualisation : changer lʼinterface de lʼhyperviseur Remplacer les instructions non virtualisables Lʼinterface nʼest plus celle de la machine physique Les OS doivent donc être modifiés ! En pratique, on ne modifie que la HAL (couche dʼabstraction) Appli. Interface modifiée La traduction dynamique de code binaire : Appli. Appli. … Unix Windows MV2 modifié HAL-W Hyperviseur Remplacer à la volée les instructions non virtualisables Agents et objets Droits, domaines, capacités Dans lʼavenir : Les nouveaux processeurs sont conçus pour la virtualisation Histoire des systèmes dʼexploitation Confidentialité (qui peut accéder aux données, pour faire quoi) Intégrité (pas de modification non désirée) Accès aux services Authentification (prouver que lʼon est celui quʼon prétend être) ! Protection : avancées 1968-70 Machine physique © 2014, S. Krakowiak Sécurité : définition de politiques visant à fixer des règles dʼaccès aux ressources Protection : ensemble de mécanismes permettant de mettre en œuvre des politiques de sécurité ! Sécurité dans un système dʼexploitation … MV1 modifié HAL-U ! Un exemple de séparation politique-mécanismes 41 © 2014, S. Krakowiak Sécurité et protection (2) Histoire des systèmes dʼexploitation 42 Failles de protection (1) “You canʼt trust code that you did not totally create yourself (especially code from companies that employ people like me)” ! Un problème (toujours) non résolu… ! Notion de domaine «Vous ne pouvez pas vous fier à du code que vous nʼavez pas entièrement créé vousmême (et particulièrement sʼil vient dʼentreprises qui emploient des gens comme moi)» un espace contenant des données et des points dʼaccès à des services lʼaccès à ce contenu est protégé Ken Thompson (1984) ! Un point faible : lʼaccès au code objet points de passage obligés («guichets») Développeurs, distributeurs, installateurs de mises à jour… Insertion de code malveillant dans les compilateurs… Une faille dans le code objet est très difficile à détecter contrôle des droits dʼaccès Exemples les modes maître-esclave les anneaux de Multics ! Des points dʼentrée non prévus les systèmes à capacités (clé-serrure) Cheval de Troie Porte dérobée ! Mais le système nʼest pas invulnérable… ! Exemple : attaques contre Multics © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 43 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 44 Failles de protection (2) ! Exploiter les situations dʼerreur la réaction aux défaillances est souvent moins sécurisée que le code «normal» exemples Lʼépoque moderne débordement de tampon (après lʼavènement de lʼapproche scientifique) introduire du code exécutable dans une zone de données détournement dʼun mécanisme de pagination découvrir rapidement un mot de passe dans le système Tenex ! Utiliser des canaux cachés communication illégale entre domaines spécifiés comme isolés peut altérer la confidentialité ou le droit dʼaccès ! Exploiter la vulnérabilité des réseaux exemple : man in the middle © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 45 © 2014, S. Krakowiak Multics, à la charnière de deux époques Multics, système fondateur ! Un projet ambitieux… ! Matériel sur mesure Suite du succès de CTSS Objectif : un service universel de calcul Consortium MIT, General Electric, Bell Labs (support matériel) pas de distinction entre segment et fichier gestion des segments par pagination à la demande ! Modèle hiérarchique de gestion des fichiers Les principes sont établis (processus, mémoire virtuelle, protection, gestion de lʼinformation) universellement adopté, avec variations ! Liaison dynamiqueracine des segments procédures Premier Symposium on Operating Systems Principles en 1967 Multics intègre ces principes et joue un rôle de pionnier ! Protectioncatalogue par anneaux catalogue ! … mais une histoire mouvementée ! Génie logiciel catalogue fichier catalogue Projet lourd et complexe, performances décevantes au début Dissolution du consortium en 1969-70 Percée commerciale limitée et très tardive Histoire des systèmes dʼexploitation (GE-645, modification du GE-635 ~ IBM 7094) ! Mémoire virtuelle segmentée ! 1965-70 : le début de lʼère moderne des systèmes © 2014, S. Krakowiak Histoire des systèmes dʼexploitation catalogue fichier fichier catalogue système écrit en PL/1 fichier fichier fichier fichier catalogue fichier fichier instrumentation complète lien fichier avancé fichier système dʼarchivage - restauration 47 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 46 Vie de Multics rachat informatique GE par Honeywell Cie Honeywell Bull Bull GE arrivée GE 645 CTSS 1965 Honeywell 6180 installations en France (INRIA, IMAG) 1970 arrêt Multics arrêt Multics INRIA MIT, IMAG 1980 Conception articles FJCC De Multics à Unix Multics en service (12) première installation en Europe sur GE 645 (Honeywell-Bull) 1990 Bull reprend div. informatique Honeywell 1969 2000 Arrêt dernier site Multics retrait Bell Labs début Unix 1970 1972 Les Bell Labs quittent Multics Les Bell Labs commencent à sʼintéresser au projet Ken Thompson et Dennis Ritchie lancent le projet Unics «en perruque» sur PDP-7 Unics devient Unix, multi-utilisateurs porté sur PDP 11/20 1974 1975-76 Publication dʼun article dans les CACM Début de la communauté Unix “Lionsʼ Commentary” V6 Expansion de la communauté Première licence Histoire des systèmes dʼexploitation 1979-80 Premières versions industrielles 1988 Première version de Posix ©FEB photo du GE-645 des Études Bull Paris 1972 conservée par Marc Loux Au premier rang Dave Vinograd, Allen Berglund (†), Rick Gumpertz Au second rang l'équipe !Française : Albert Harari, Marc Loux, François Du Jeu, Ainsi que! John Zona (Field Engineer), John Ammons (Cpu Designe) © 2014, S. Krakowiak Ritchie réécrit Unix dans le langage C Unix devient portable Première installation commerciale 49 © 2014, S. Krakowiak La famille Unix Histoire des systèmes dʼexploitation 50 Unix : architecture dʼensemble 1970 Applications BSD System V 1980 langage de commande Utilisateurs shell 1 shell 2 Linux 1990 Outils de base bibliothèque (éditeurs, compilateurs, etc.) appels système Bibliothèque standard mode utilisateur Dennis Ritchie, Ken Thompson Noyau Unix 2000 Hardware Adaptation Layer Source : Wikipedia, author : Peter Hamer mode noyau 2010 Machine physique source : Wikipedia, Levenez Unix History Diagram © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 51 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 52 Unix : principes de base Micro-noyaux ! Motivations ! Entité de base : le processus Éliminer les inconvénients des systèmes monolithiques mémoire virtuelle linéaire + flots dʼexécution (threads) segments «mappés» dans la mémoire virtuelle mémoire virtuelle partagée Modularité, construction de systèmes «à la carte» ! Principes Le micro-noyau assure 3 fonctions ! Fichiers gestion de mémoire à bas niveau gestion des activités (threads) communication par messages système hiérarchique à la Multics + protection simple descripteur (inode) + tables dʼimplantation multiniveaux outil universel de gestion de lʼinformation (inclut entrées-sorties) Un système dʼexploitation est construit à partir de ces fonctions ! Problèmes ! Allocation des ressources Manque de souplesse «Abstractions» imposées Performances processeur : tourniquet multiniveaux mémoire paginée à la demande avec limiteur de charge ! Réalisations ! Shell Mach ; Chorus ; L3, L4 composition dʼoutils élémentaires (pipe, flots, redirection) © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 53 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation Application gestion des travaux communication 1973 Interface indépendante du matériel Couche d'adaptation au matériel Application gestion des processus interface processeur gestion des fichiers interface mémoire 1975 Interface micro-noyau S1 Micro-noyau S2 2014 Windows 8 Seattle Computer Products Phone 8 Microsoft Bill Gates Application S3 S4 S1 : serveur de processus S2 : serveur de fichiers S3 : serveur de mémoire S4 : serveur de réseau Gestion de threads Gestion élémentaire de mémoire Communication par messages Image courtesy of Computer History Museum Schéma logique de lʼAlto Chuck Thacker Alto Machine Apple Lisa Xerox Star Image courtesy of Computer History Museum Xerox PARC 55 Steve Jobs Butler Lampson Alto OS Réseau (b) Système à micro-noyau Histoire des systèmes dʼexploitation Windows MS/DOS ©Tom OʼNeal Image courtesy of Computer History Museum Application 2012 (quick & dirty) Gary Kildall (a) Système monolithique 1985 IBM PC QDOS Réseau 1983 Intel 8086 Digital Research Exemples Windows NT Mac OS X (Darwin sur Mach 3) 1981 1979 CP/M pilotes Machine © 2014, S. Krakowiak 1977 Altair, Amstrad, Osborne, Apple II gestion de la mémoire Interface système 54 Les débuts des systèmes dʼexploitation pour ordinateurs individuels Système sur micro-noyau Interface système Domaine actif dans les années 1980 à 1995 En retrait depuis, mais renouveau récent (systèmes embarqués) © 2014, S. Krakowiak Image courtesy of Computer History Museum NeXT Macintosh ©Microsoft MacOS Pilot Apple Histoire des systèmes dʼexploitation MacOS X Unix, Mach iOS 56 Systèmes pour objets connectés Virtualisation dans les systèmes embarqués ! Domaine dʼapplication ! Contraintes spécifiques micro-contrôleurs, réseaux de capteurs Complexité croissante des applications Maîtrise des performances Réduction de la taille de la base informatique de confiance ! Contraintes faible consommation dʼénergie capacité de mémoire limitée ! Un renouveau pour les micro-noyaux ! Exigences Le micro-noyau comme hyperviseur à bas niveau Des systèmes dʼexploitation «sur mesure» pour une application fiabilité, adaptabilité, qualité de service permet de réaliser des «appareils virtuels» (appareil + son OS spécifique) ! Exemple : TinyOS (U. Berkeley, Intel, Crossbow Technology) Les pilotes peuvent sortir de la base de confiance Les composants critiques peuvent être isolés dans des MV système modulaire, état encapsulé piloté par les événements (origine externe ou interne) file dʼordonnancement tâche de fond G. Heiser, “The Role of Virtualization in Embedded Systems”, Proc. First Workshop on Isolation and Integration in Embedded Systems (IIESʼ08), pp 11-16, April 2008 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 57 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 58 Les défis des systèmes dʼexploitation Un micro-noyau vérifié Isabelle/HOL ! Une version du micro-noyau L4 Machine virtuelle donnant une image simplifiée du matériel conception ! Sécurité raffinement preuve ! Difficultés Asynchronisme Gestion de la mémoire (pointeurs) Accès direct aux fonctions du matériel (MMU, …) spécification abstraite prototype Haskell Simulateur génération automatique ! seL4, base dʼun “microviseur” OKL4 (Open Kernel Labs) Base installée : un milliard … spécification exécutable ! Certification ! Systèmes embarqués et mobiles ! Parallélisme (multi-cœurs) raffinement preuve ! Gestion de grands volumes de données ! Virtualisation à grande échelle code C optimisé ! Autonomie et adaptation Gerwin Klein et al., “seL4: Formal Verification of an Operating-System Kernel”, Communications of the ACM, vol. 53, no 6, pp. 107-115, June 2010 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 59 © 2014, S. Krakowiak Histoire des systèmes dʼexploitation 60