Fondements des Systèmes d'Exploitation Pr Pierre Collet Equipe Fouille de Données et Bioinformatique Théorique Laboratoire des Sciences de l’Image, de l’Informatique et de la Télédétection [email protected] Véolia : 20/07/09 1 Origines de l’informatique – 1854. Algèbre de Boole, fondée sur ET/OU/NON. – 1931 : Gödel. Théorème de l’incomplétude. » Il y a des problèmes impossibles à résoudre en mathématiques et en logique… – 1938 : Alan Turing. Se pose des questions sur la calculabilité des nombres » peut-on obtenir tous les nombres avec un algorithme ? » Invente la « Machine de Turing » pour représenter des algorithmes. Pierre COLLET - Systèmes d'Exploitation 2 Origines ◆ 1944 : Premiers prototypes. Programmation très « hard. » ENIAC (Electronic Numerical Integrator and Calculator). 18 000 tubes, 30 tonnes. Multiplication de 2 nombres de 10 chiffres en 3 millisecondes. Mémoire interne très petite, programmation « aux clés » (fiches interchangeables). En fait, c’est une grosse calculette, et pas vraiment un ordinateur. ◆ 1945 : von Neuman décrit les 5 composants de son architecture : – – – – – L’Unité Arithmétique et Logique L’Unité de Commande La mémoire centrale L’Unité d’entrée L’Unité de sortie. Pierre COLLET - Systèmes d'Exploitation 3 Historique des ordinateurs ◆ 1945 : von Neumann propose l’EDVAC (Electronic Discrete Variable Automatic Computer) selon son architecture : Le programme et les données sont en mémoire ! La machine ne se commande plus par des fiches, mais par le contenu de sa mémoire ! Sauts, branchements conditionnels : l’ordinateur est né. ◆ Mais en fait, c’est Wilkes qui réalise en 1949 le premier ordinateur: l’EDSAC : Electronic Delay Storage Automatic Calculator Pierre COLLET - Systèmes d'Exploitation 4 Historique ◆ 51 – 58 : Premières machines commerciales, avec IBM en 53 (IBM 650 vendu à 1500 exemplaires !!!). Monoprogrammation, traitement par lots (batch). Cartes perforées, bandes magnétiques, imprimante. Pb : fiabilité des tubes à vide (lampes) : bugs ? ◆ 58 – 64 : Apparition des transistors => vitesse et fiabilité + apparition des mini-ordinateurs – Mode superviseur, E/S asynchrones et premiers systèmes temps partagé. Pierre COLLET - Systèmes d'Exploitation 5 Historique ◆ 64 – 78 : Premiers circuits intégrés (puces) (3è génération d’ordinateurs) Systèmes multi-programmés. ◆ 80 – 90 : VLSI et réseaux plusieurs millions de transistors/mm² (4e génération d’ordinateurs). Disques magnétiques/optiques, imprimantes laser, écrans couleur graphiques, interfaces multi-fenêtres, réseaux par câble, fibre optique, ligne téléphonique, satellite, … L'info. d'aujourd'hui est (pratiquement) la même qu'en 80 ! Pierre COLLET - Systèmes d'Exploitation 6 Puissance des super-ordinateurs ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ Ordinateur 1938 Zuse V1 1941 Zuse Z3 1946 UPenn ENIAC 1954 IBM NORC 1956 MIT TX-0 1958 IBM AN/FSQ-7 1960 UNIVAC LARC 1961 IBM 7030 1964 CDC 6600 1969 CDC 7600 1974 CDC STAR-100 Vitesse Propriétaire 1 OPS Konrad Zuse, Berlin, Germany 20 OPS Konrad Zuse, Berlin, Germany 100kops Department of War, Mariland, USA 67 kops Department of Defense, Virginia, USA 83 kops MIT, Lexington, Massachusetts, USA 400 kops25 U.S. Air Force sites across the USA 250 kFLOPS AEC, Livermore Labs, USA 1.2 MFLOPS AEC, New Mexico, USA 3 MFLOPS AEC Livermore Labs, USA 36 MFLOPS 100 MFLOPS Pierre COLLET - Systèmes d'Exploitation 7 1975 - 1996 ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ 1975 ILLIAC IV 150 MFLOPS NASA Ames, USA 1976 Cray-1 250 MFLOPS ERDA, USA 1981 CDC Cyber 205 400 MFLOPS 1983 Cray X-MP/4 941 MFLOPS U.S. Department of Energy 1984 M-13 2.4 GFLOPS Moscou, URSS 1985 Cray-2/8 3.9 GFLOPS Livermore Labs, USA 1989 ETA10-G/8 10.3 GFLOPS Florida State University 1990 NEC SX-3/44R 23.2 GFLOPS NEC Fuchu Plant, Japon 1993 CM-5/1024 59.7 GFLOPS Thinking Machines Corp Fujitsu Wind Tunnel 124.50 GFLOPS Aerospace Lab, Tokyo Intel Paragon XP/S 143.40 GFLOPS Sandia, New Mexico, USA 1994 Fujitsu Wind Tunnel 170.40 GFLOPS Aerospace Lab, Tokyo 1996 Hitachi SR2201 220.4 GFLOPS University of Tokyo, Japan Pierre COLLET - Systèmes d'Exploitation 8 1997 – Aujourd'hui ◆ 1997 Intel ASCI Red/9152 1.338 TFLOPS Sandia, New Mexico, USA ◆ 1999 Intel ASCI Red/9632 2.379 TFLOPS Sandia, New Mexico, USA ◆ 2000 IBM ASCI White ◆ 2002 NEC Earth Simulator 35.86 TFLOPS Yokohama, Japan ◆ 2004 IBM Blue Gene/L 70.72 TFLOPS IBM Rochester, USA ◆ 2005 IBM Blue Gene/L 136.8 TFLOPS Livermore labs, USA ◆ 2005 IBM Blue Gene/L 280.6 TFLOPS Livermore labs, USA ◆ 2007 IBM Blue Gene/L 478.2 TFLOPS Livermore labs, USA ◆ 2008 IBM Roadrunner ◆ 2008 IBM Roadrunner 7.226 TFLOPS Livermore Labs, USA 1.026 PFLOPS Los Alamos, USA 1.105 PFLOPS Los Alamos, USA Pierre COLLET - Systèmes d'Exploitation 9 Et les PC ??? ◆ Noter la progression des cartes graphiques ! Pierre COLLET - Systèmes d'Exploitation 10 Futur ? ◆ Stagnation de la vitesse des processeurs ! 2.9 GHz Pierre COLLET - Systèmes d'Exploitation 11 Problème : dissipation thermique ◆ Actuellement, on peut faire tourner un Intel à 6Ghz, mais avec quelques contraintes : Bain d'hélium liquide à -232°C ! Pierre COLLET - Systèmes d'Exploitation 12 Autre solution ? ◆ La loi de Moore s'applique toujours ! et devrait encore s'appliquer jusqu'en 2030... (2x plus de transistors par mm2 tous les 2 ans) Pierre COLLET - Systèmes d'Exploitation 13 Solution : processeurs multi-coeurs ? ◆ Mais la plupart des algos ne fonctionnent qu'en séquentiel, et ne peuvent donc utiliser qu'un seul coeur, et en divisant par le nombre de coeurs... ? Pierre COLLET - Systèmes d'Exploitation 14 Conclusion ? Stagnation de l'accélération pour la plupart des algorithmes, ◆ Accélération pour les algorithmes parallèles... ◆ Conclusion générale ◆ Le matériel est extraordinairement varié. ◆ Les systèmes d'exploitation ont un rôle essentiel à jouer, pour rendre les spécificités du matériel invisibles à l'utilisateur (par exemple, répartir automatiquement la charge entre les coeurs de la manière la plus transparente possible). Pierre COLLET - Systèmes d'Exploitation 15 Ordinateur, système, logiciels ◆ Matériel compliqué => il faut un programme pour gérer le matériel : c'est le Système d’Exploitation. Logiciel Système Matériel Ne jamais modifier Modification constante Interface Pierre COLLET - Systèmes d'Exploitation 16 Buts d’un Système d’Exploitation ◆ Réduire la complexité du matériel – Lancer des instructions complexes par des commandes simples – Offrir une notion de machine virtuelle ◆ Rentabiliser l’utilisation – Minimiser les temps morts (multitâche, parallélisation E/S, …) – Minimiser le temps passé sur la machine. ◆ Préserver investissements – Équipement, matériel et logiciel – Informations, programmes et données. ◆ Faciliter la vie de tout le monde : – Informaticiens – Utilisateurs (convivialité) Pierre COLLET - Systèmes d'Exploitation 17 Tâches du S.E. (1) ◆ Outils pour l’administration – – – – – – – – Protéger le système des utilisateurs, et les utilisateurs entre eux. Partage des périphériques (file d’attente) Surveillance et maintenance du système Diagnostic (test de la machine, gestion des erreurs) Gestion des utilisateurs (mots de passe, quotas, priorité) Gestion des ressources système Sauvegardes Contrôle des performances (embouteillages, saturation de l’espace disque, du swap) Pierre COLLET - Systèmes d'Exploitation 18 Tâches du S.E. (2) ◆ Gestion de la communication – Entre processus : » Synchronisation, partage mémoire, appel à distance – Entre ordinateurs : » Réseau local, réseau global Pierre COLLET - Systèmes d'Exploitation 19 Tâches du S.E. (3) ◆ Fournir un environnement à l'utilisateur – Interface pour dialoguer avec le système – Outils (compilateur, éditeur de liens, …) – Utilitaires (éditeur de texte, débogueurs, interpréteurs de commandes) – Système de gestion de fichiers pour structurer, protéger, partager,… – Traitement des erreurs – Services spéciaux (heure, date, …) Pierre COLLET - Systèmes d'Exploitation 20 Exemple de la complexité d'un SE ◆ Gestion du processeur : – Autrefois : système mono-tâche. – Puis, système « batch ». – Puis, multi-programmation (1960): » » » » Choisir les programmes à exécuter Echanger les programmes dans le processeur Répartir la mémoire Partager le code entre plusieurs programmes Pierre COLLET - Systèmes d'Exploitation 21 Intérêt de la «multiprogrammation» ◆ ◆ Intérêt premier : gestion des E/S en parallèle : – Soit un Pentium à 100GFlops, accès mémoire 60ns, accès disque 10ms. 10000000000 – Vous : 1 calcul / 10s. – 1 accès mémoire = ? 16,6 h !!!! – 1 accès disque = ? 178,4 ans !!!! Multi-programmation non préemptive: – On passe au programme suivant lors d’un « appel système » (typiquement entrée/sortie). ◆ Multi-tâches préemptif : – Notion de temps partagé (quantum). – Reprendre périodiquement le contrôle. – Nécessite un processeur préemptif avec mode superviseur Pierre COLLET - Systèmes d'Exploitation 22 Implications de la Multiprogrammation Gestion complexe de la mémoire : – Notion d’espace d’adressage. – Allocation, protection. – Mémoire linéaire. – Mémoire segmentée. – Mémoire paginée. – Prise en compte de la spécificité du matériel (Little Endian, Big Endian). Tout ça, rien que pour faire du multitâches, et notamment optimiser la gestion des entrées/sorties ! Pierre COLLET - Systèmes d'Exploitation 23 Composition d'un S.E. ◆ ◆ Noyau (Kernel) : c'est la couche la plus basse du système d'exploitation. Il nécessite environ 2000 lignes de langage machine, sur lesquels tout le reste va s'appuyer. Généralement, dans les systèmes multi-tâches, il contient le « scheduler » (ordonnanceur). Scheduler (Ordonnanceur) : c'est le programme qui va se charger de gérer le « temps partagé » et d'échanger les programmes au fur et à mesure des appels aux entrées/sorties, ou des préemptions. Pierre COLLET - Systèmes d'Exploitation 24 Composition d'un S.E. (2) ◆ ◆ Drivers (pilotes) : Les drivers servent à gérer le matériel informatique présent sur l'ordinateur (gestion des lectures/écritures sur le disque, sur une clé USB, gestion de l'impression sur une imprimante, gestion de l'écran, du clavier, de la carte son ,...). Les drivers peuvent être intégrés au noyau ou indépendants du noyau (suivant le système). Système de Gestion de Fichiers : c'est lui qui permet de stocker les informations de manière permanente, mais pas seulement. Sous Unix, tout est considéré comme un fichier (le clavier est un fichier, l'écran est un fichier, ...). Pierre COLLET - Systèmes d'Exploitation 25 Composition d'un S.E. (3) ◆ ◆ Interface utilisateur : pour demander au système de copier un fichier, de supprimer un fichier, de lancer une tâche, ... il faut communiquer avec le système. C'est fait grâce à un « interpréteur de commandes » (utilisant une interface texte) ou une interface graphique (style Windows). Outils et utilitaires : nécessaires à la programmation de l'ordinateur, comme un langage de programmation, un éditeur de textes, ... Pierre COLLET - Systèmes d'Exploitation 26 Différents systèmes d'exploitation ◆ ◆ ◆ + de 100 différents ! Les premiers systèmes d'exploitation des années 1960 étaient très lourds (VAX/VMS, Multics, ...), mais ils étaient déjà multi-tâches et multi-utilisateurs. Au milieu des années 70 Thompson, Kernighan et Ritchie ont créé Unix (en opposition à Multics), un système d'exploitation volontairement « simple », basé sur les fichiers. Ne trouvant pas de langage adapté à l'écriture du système, Thomson et Ritchie créèrent le langage « B », mais qui était un peu trop simpliste. Kernighan et Ritchie ont créé en 1971 le langage C, qui était l'«assembleur portable » qu'ils recherchaient. Pierre COLLET - Systèmes d'Exploitation 27 Unix ◆ ◆ ◆ ◆ ◆ En 1969 système écrit en assembleur par Ken Thomson sous le nom de NKS (New Ken's System), sur mini-ordinateur PDP7 dans les laboratoires Bell (AT&T). En 1971, pour améliorer la portabilité, création du langage B avec Dennis Ritchie, mais qui n'est pas suffisamment complet pour récrire le système, et conception du langage C qui permet de tout faire (c'est un « assembleur portable »). 1971-79 raffinement de l'Unix AT&T jusqu'au système 7. Entre 2, en 1977, Bill Joy crée la Berkeley Software Distribution (Unix BSD) et (entre autres) vi, mais aussi, TCP/ IP (qui permet internet), Sun Microsystems, Java, ... En 1983, le premier Unix System V qui, avec BSD, est l'ancêtre de Linux Pierre COLLET - Systèmes d'Exploitation 28 Unix / Linux ◆ ◆ 1985, Andy Tanenbaum crée Minix (qui tourne sur 80286). 1991, Linus Torvalds crée Linux, basé sur le noyau Minix, et qui utilise les utilitaires du projet Gnu (Gnu is Not Unix, qui se prononce comme « new » en américain) créés dans le cadre de l'Open Software Foundation de Richard Stallman (qui a écrit Emacs en 76). Pierre COLLET - Systèmes d'Exploitation 29 DOS ... ◆ ◆ ◆ ◆ En 1981, IBM crée le Personal Computer, et cherche un système d'exploitation simple pour le faire tourner. Contrairement aux gros ordinateurs, ses performances sont très limitées, donc les systèmes des gros ordinateurs sont inutilisables. Un petit jeune, nommé Bill Gates (qui a le sens du commerce et les dents longues) ose proposer à IBM un « Quick and Dirty Operating System » sous le nom de DOS (Disk Operating System). Bien qu'en 1981, les bases des systèmes d'exploitation existent depuis très longtemps (Unix existe déjà depuis 10 ans !), Gates « réinvente » tout (et mal), et surtout, fait exprès de ne pas reprendre les mêmes notations qu'Unix (\ au lieu de /, ...) ce qui créera d'énormes problèmes de compatibilité toujours visibles aujourd'hui (CR/LF, ...), mais qui fidélisera ses utilisateurs... Limitation des noms de fichier à 8 caractères . ext, limitation de la taille mémoire gérée par le système à 10 pages de 64K, ... !!! Pierre COLLET - Systèmes d'Exploitation 30 Windows... ◆ En 1985, l'interface graphique Windows 1.0 est créée au dessus de DOS. Elle est totalement inutilisable et plante constamment (et n'utilise pas les mêmes codes ascii étendus que DOS !!! C'est une constante de Micro$oft : trouver comment faire des versions non compatibles pour forcer les ventes, ex : docx de Word2007) ◆ ◆ ◆ ◆ La première version à peu près stable (= qui ne plante que toutes les 2h) sera Windows 2.10, qui sort en 1987. Windows 3.10 (première vraiment utilisable) sort en 1990, mais est toujours mono-utilisateur, et non préemptif. Il faudra attendre Windows 95 (25 ans après Unix) pour avoir un système à peu près multi-tâches (mais toujours monoutilisateur). Présentation de Win98 : http://www.youtube.com/watch?v=RgriTO8UHvs En parallèle est né Windows NT (New Technology) en 1993, qui se débarrasse enfin de MS-DOS, et qui a donné la branche actuelle de Windows XP, Vista, et prochainement 7 Pierre COLLET - Systèmes d'Exploitation 31 MacOS ◆ ◆ ◆ ◆ Mac OS était le système d'exploitation des Macintosh, premiers ordinateurs à avoir été conçus autour d'une interface graphique issue des travaux de Xerox Parc (souris, écran graphique, ...) en 1984 ! MacOS était bien plus stable que Windows (pourtant né après) ce qui en a fait le système de choix des graphistes et des professionnels. Les Entrées/Sorties n'étaient toujours pas gérées en parallèle (lire une disquette paralysait l'ordinateur), et la dernière version (MacOS 9) est sortie en 1999. Ensuite est apparu MacOS X, dérivé du système Next de Steve Jobs, basé sur Unix. MacOS X est donc un Unix avec une interface graphique propre à Apple. Pierre COLLET - Systèmes d'Exploitation 32 Fonctionnement d'un système monotâche Le système (qui occupe un morceau de la mémoire) contient un interpréteur de commandes qui est exécuté au démarrage de l'ordinateur. • L'interpréteur attend des commandes au clavier en affichant un « prompt » ($ sous unix, > sous dos, ...) • Lorsque la touche « retour » est pressée, la ligne est analysée. Le premier mot ( espace) peut être : Une commande « interne » du système ($ echo toto) Un mot qui n'est pas une commande interne... Le système cherche alors sur le disque si le mot est un nom de fichier exécutable. Si c'est le cas, le fichier est chargé en mémoire, puis lancé sur le processeur. Sinon : « commande introuvable » • Après exécution, retour en 1) Pierre COLLET - Systèmes d'Exploitation 33 Représentation graphique d'un syst monotâche Mémoire Occupation du processeur Système Interpréteur Fin d'exécution 0000 Lancement Programme Programme Pierre COLLET - Systèmes d'Exploitation 34 Système multi-tâches non préemptif ◆ ◆ ◆ ◆ ◆ Les choses sont plus compliquées car plusieurs tâches peuvent fonctionner « en parallèle ». Chaque tâche s'appelle un processus. Chaque processus fonctionne dans son « espace d'adressage » (32 bits maintenant 64 bits / 128 bits). Le processeur est partagé entre toutes les tâches, pour optimiser les entrées/sorties (qui doivent être asynchrones). Problème possible : si un processus effectue une boucle infinie (sans appel à une entrée/sortie) il est impossible de « reprendre la main », et l'ordinateur complet est bloqué. Pierre COLLET - Systèmes d'Exploitation 35 Fonctionnement d'un système multi-tâches Non préemptif ( = sans mode superviseur) : Destruction Créer Néant Prête Détruire Destruction Susp. Commutation Suspension Erreur Termin Elue Fin d’Exéc. Pierre COLLET - Systèmes d'Exploitation 36 Système multi-tâches préemptif ◆ ◆ Ajout d'une horloge dans le processeur capable d'envoyer des « signaux » (aussi appelés interruptions). Plusieurs processus s'exécutent en « temps partagé ». ◆ Passage en mode système (superviseur) nécessaire à chaque changement de contexte, pour la gestion des processus par le système d’exploitation. ◆ S'il ne fait pas d'entrée/sortie, un processus ne peut utiliser le processeur que pendant un laps de temps déterminé (quantum). ◆ Changement de contexte à chaque appel système/interruption = à chaque fois qu’un processus utilisateur doit modifier l’environnement. Mode utilisateur limité = garantie de l’intégrité du système. ◆ Pierre COLLET - Systèmes d'Exploitation 37 Fonctionnement d'un système multi-tâches ◆ Préemptif (lors de la préemption ou d'une entrée/sortie : passage en « mode superviseur ») : Allocation Créer Néant Détruire Destruction Elue Interruption Interr. PréemptionUSER Prête Retour USER Reprise Susp. Termin Arrêt Appel Système Retour Suspension Elue SYST Interruption Interr. SYST Retour Pierre COLLET - Systèmes d'Exploitation 38 Gestion mémoire linéaire multiprogrammée ◆ 2 registres nécessaires : registre de base B et registre de limite L (taille du ps). ◆ Mode utilisateur : accès à l'adresse A autorisé si A <=L (sinon, dépassement mémoire) et accès physique à l'adresse B+A. ◆ Mode système : l'ensemble de la mémoire est accessible, ainsi que les registres B et L. ◆ Gestion linéaire non pré-emptive : lorsqu'une tâche est soumise, on lui donne la première zone libre qui peut la contenir (first fit). ◆ Si pas de zone suffisamment grande, tâche mise en attente. Pierre COLLET - Systèmes d'Exploitation 39 Exemple ◆ Ordonnancement FIFO, et compactage de la mémoire dès qu'il y a suffisamment de mémoire pour une tâche, mais pas de trou suffisamment grand. ◆ Ordinateur de 512 Kmots (2 Mo si machine 32 bits) dont 128K sont utilisés par le système. ◆ Une tâche effectue plusieurs appels aux entrées/sorties, et chaque appel à une E/S dure 5 unités de temps. ◆ On propose l'exécution suivante: quelle sera l'utilisation de la mémoire ? ◆ Ps : Soumis, Elu, Prêt, E/S. Code : en memoire, en attente Pierre COLLET - Systèmes d'Exploitation 40 Questions : ◆ Pourquoi cette méthode fonctionne-t-elle en mode batch avec multiprogrammation, mais pas en temps partagé ? ◆ Cette méthode fonctionne-t-elle avec un ordonnancement attribuant la mémoire au premier processus qui peut tenir dans la mémoire libre ? ◆ Ré-essayer avec cette nouvelle règle du jeu. Pierre COLLET - Systèmes d'Exploitation 41 Mémoire linéaire à recouvrement ◆ Multiprogrammation avec va et vient. ◆ Mémoire divisée en blocs de taille fixe (1 Kmots). ◆ Lorsqu'une tâche est soumise, trouver le meilleur emplacement dans la mémoire. ◆ Lorsqu'une tâche est élue, il faut charger tous ses blocs en mémoire centrale, quitte à virer des blocs appartenant à une tâche en attente. ◆ Trouver un algorithme de recouvrement minimum. Pierre COLLET - Systèmes d'Exploitation 42 Exemple ◆ Tâches T1 T2 T3 T4 de taille respective 250, 80, 180, 100 Kmots. ◆ Mémoire utilisateur formée de blocs de 1 Kmots numérotés de 0 à 383. ◆ Tâches soumises au même instant, dans l'ordre de leur numéro. ◆ Trouver les adresses des tâches en mémoire. ◆ Dessiner l'état de la mémoire en régime permanent durant l'exécution de chacune des tâches. Pierre COLLET - Systèmes d'Exploitation 43 Algo de recouvrement minimum adresseOptimale(n){ som=0; pour (i=0;i<nbBlocsTâche(n);i++) som+=nbProcessBloc(i); min=som; pos=0; i=0; pour (j=nbBlocsTâche(n);j<max_blocs;j++){ som+=nbProcessBloc(j)-nbProcessBloc(i); i++; si (som<min) alors{ min=som; pos=i; } pour (i=pos;i<pos+nbBlocsTâche(n);i++) nbProcessBloc(i)++; } Pierre COLLET - Systèmes d'Exploitation 44 Mémoire virtuelle segmentée ◆ Faire croire à l'utilisateur qu'il y a plus de mémoire que ce qu'il y a en réalité : on accepte de lancer plus de tâches qu'on n'a de mémoire physique => zone de swap nécessaire. ◆ Les tâches étant trop lourdes à swapper entièrement, on les divise en segments (zones « logiques » pour la tâche : segment de code, de données, de pile,...). ◆ Chaque segment est contigu en mémoire centrale, qui est allouée par « granules » de G kilo-mots (mémoire segmentée). ◆ Il faut une structure système adaptée, notamment une table d'allocation des granules et pour économiser du temps, la notion de page propre / sale. Pierre COLLET - Systèmes d'Exploitation 45 Structure système nécessaire Table des segments système Mémoire centrale Registres topographiques du processus n Swap 0 1 2 . . . 7 Segment système Longueur en mots l e x (droits) c (segm. chargé) m (segm modifié) L'indirection permet de faire uncompactage transparent Vérifs effectuées lors d'un accès mémoire : Segment chargé (sinon « page fault » et chargement) adressage dans le segment < L(s) (segmentation fault) accès cohérent avec les droits. Relations vérifiées : x!e, me&p, !e!m, !p!m, pxel Pierre COLLET - Systèmes d'Exploitation 46 Coût optimal ◆ Location achat skis Pierre COLLET - Systèmes d'Exploitation 47 Stratégies de gesion de mémoire Qu'est-ce qui est le mieux ? ◆ First fit (première place disponible en MC) ? ◆ Best fit (plus petit trou capable de contenir le segment) ? ◆ Worst fit (plus gros trou capable de contenir le segment) ? First fit : éparpillement des granules libres, nécessite un compactage, mais très rapide. Best fit : recherche longue (plus petit trou capable de contenir le segment), et surtout : émiettement de la mémoire !!! Worst fit : recherche rapide (trous maintenus dans une liste décroissante). Favorise les petits segments, mais ralentit l'émiettement. Pierre COLLET - Systèmes d'Exploitation 48 Mémoire paginée ◆ Division de la mémoire en zones de taille fixe : des pages. ◆ Les données, le code, ... est divisé en pages. ◆ Lorsque le processus est exécuté, seules les pages nécessaires sont chargées en mémoire centrale. ◆ Chaque processus système conserve une table des pages contenant des infos (correspondance entre page logique et page physique, droits, ...) Pierre COLLET - Systèmes d'Exploitation 49 Structure système nécessaire Table des pages du ps Mémoire centrale Avantages / inconvénients ? Avantages : • pas de trous, • pas de compactage • gain de temps No page en MC l e x (droits) e (page évinçable) m (segm modifié) Inconvénients : • Complexité de gestion • Les pages sont des pages physiques et pas logiques pb si une page contient des données en lecture seule, et d'autres en écriture. Pierre COLLET - Systèmes d'Exploitation 50 Exemple ◆ Mémoire de 32Kmots, page de 512 mots, bloc disque de 512 mots ◆ Code C à faire tourner : For (x=N; x<=0; x­=K) T[X]=S[X]+V; ◆ Equivalent assembleur : Pierre COLLET - Systèmes d'Exploitation 51 Exemple Si chaque instruction ou variable occupe un mot, quelles pages avec quels droits ? Donnée E E+4 N K V @ page/offset 1/508 E+3 1/511 2/0 E+6 2/2 6/500 8/10 8/100 droits LX LX L L L X : registre d'adresse A : accumulateur E : adresse = 512*1+508 S et T : tableaux [N] S[0]=512*11+168 T[0]=512*12+456 N : cte = 799@512*6+500 V : cte = 2 @512*8+100 K : cte = 2 @512*8+10 Donnée S[0] S[344] T[0] T[56] T[568] @ page/offset droits 11/168 S[343] 11/511 L 12/0 S[799] 12/455 LE 12/456 T[55] 12/511 E 13/0 T[567] 13/511 E 14/0 T[799] 13/231 E Pierre COLLET - Systèmes d'Exploitation 52 Exécution du programme ◆ ◆ ◆ E On a les pgs 17, 21, 22, 23, 37, 42 en MC. En utilisant un algo premier chargé premier déchargé, si aucune page n'est chargée en mémoire au début de l'exécution, décrire la gestion avec les primitives : mod (p,d) : p = page de ps, d = droits trap(p) : défaut de page pour la page p charg(p,c) : page p en page c de MC dech (p) : déch. page p en page c On met une marque sur toute page sale. t1 : trap(1) charg(1,17) mode(1,XL) t2 : trap(6) charg(2,21) mode(6,L) E+1 t3 : trap(12) charg(12,22) mode(12,LE) E+2 t4 : trap(8) charg(8,23) mode(8,L) ... Table pages E t7 17 NC E 42 N 21 K&V 23 S[0][343] S[344][799] 22 T[0][55] T[56][567] 17 T[568][799] 37 Pierre COLLET - Systèmes d'Exploitation 53 Comparaison des gestions mémoire ◆ Pagination / mémoire linéaire ? ◆ Pagination / segmentation Simplicité système ? Compilateur ? Compactage ? ◆ Intérêt d'une mémoire segmentée paginée ? Pierre COLLET - Systèmes d'Exploitation 54 Algorithmes de remplacement de pages ◆ FIFO : lors d'un défaut de page, on remplace la plus ancienne page qui ait été chargée. ◆ Si un ps fait référence à ses pages logiques dans l'ordre suivant : 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1. ◆ Combien de défauts de page si on donne au processus 3 pages physiques A B C pour s'exécuter ? 3P 1 2 3 4 1 1 A X B B X 2 C 3 A 4 5 D X X X X X 2 5 1 2 3 4 5 1 2 3 4 5 1 X C A X X B X C B X A C X X X X X C X X X A X B X X X X X X Pierre COLLET - Systèmes d'Exploitation 55 Et avec 4 pages ??? 4P 1 2 3 4 1 2 5 1 2 3 4 5 1 A X B X B 2 X C C 3 X D X A D 4 A 5 X B X X X X X X D X X X X 1 2 3 4 5 1 X D C X D X X A X B X C X X X X X X C'est l'anomalie de Belady An anomaly in space-time characteristics of certain programs running in a paging machine, Communications of the ACM, Vol 12, Issue 6, pp349-353, June 1969 Pierre COLLET - Systèmes d'Exploitation 56 Existe-t-il un algo optimal ? ◆ Si l'on connaît l'avenir, lors d'un défaut de page, remplacer la page utilisée le plus tard possible. 4P 1 2 3 4 1 2 5 1 2 3 4 5 1 2 3 4 5 1 1 A B X 2 C 3 X B X D C 4 5 D X X X D X X X X Pourquoi cet algo est-il optimal ? Pierre COLLET - Systèmes d'Exploitation 57 Algorithme LRU ? 4P 1 2 3 4 1 2 5 1 2 3 4 5 1 2 3 4 5 1 1 A A A X B B 2 C X D 3 D X C 4 C X 5 X D X X X X X X X X X X X X X ◆ L'anomalie de Belady peut-elle apparaître avec un algorithme LRU ? ◆ Comment réaliser LRU ? Attention à l'efficacité (utilisation à chaque accès mémoire => algo hard !) Horloge incrémentée à chaque référence ? Timestamp à chaque utilisation d'une page ? Recherche de la page la plus ancienne ? Pierre COLLET - Systèmes d'Exploitation 58 Réalisation de LRU ◆ Si n cases sont allouées au processus, on utilise une matrice nxn bits. ◆ Si la case k est utilisée, on met des 1 sur la ligne k, puis des 0 sur la colonne k. ◆ Lors d'un défaut de page, on utilise la case dont la ligne a la plus petite valeur. ◆ 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5, 1, 4, 5, 2, 4, 1. 1 10111 0000 0000 0000 D 2 10011 21011 0000 0000 D 3 10001 21001 31101 0000 D 4 10000 21000 31100 41110 D 1 2 5 1 10111 10011 10001 10111 20000 21011 21001 20001 30100 30000 51101 50101 40110 40010 40000 40000 D Pierre COLLET - Systèmes d'Exploitation 59 1 10111 20001 50101 40000 2 10011 21011 50001 40000 3 10010 21010 50000 31110 D 4 10000 21000 41101 31100 D Pierre COLLET - Systèmes d'Exploitation 60 Approximation de LRU ◆ ◆ ◆ ◆ ◆ On utilise 1 bit de référence R (à 1 à chaque fois qu'on fait référence à une page) et 1 compteur pour chaque page. A chaque top d'horloge, pour toutes les pages (y compris non chargées) on décale le compteur, on met R en poids fort, puis on remet R à 0. Lors d'un défaut de page, on remplace la page avec R=0 ayant le plus petit compteur. 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5, 1, 4, 5, 2, 4, 1. 4 cases, compteur sur 4 bits, 1 top tous les 2 accès mémoire 2 Top 3 4 Top 1 2 Top 5 1 4P 1 1 1,0000 0,1000 0,0100 1,0100 0,1010 1,1010 1,0000 0,1000 2 0,0100 1,0100 0,1010 0,1000 0,0100 x,0100 1,0000 3 0,0100 1,0000 0,1000 4 1,0000 5 Pierre COLLET - Systèmes d'Exploitation 61 X X X X D X 5 1 Top 1,1010 0,1101 2 3 Top 4 5 Top 1 0,0110 x,0110 x,0011 1,0011 x,0100 0,0101 1,0101 0,1010 x,0010 1,0010 0,1001 0,0101 0,0100 x,0100 1,0000 0,0010 0,1000 2 x,0010 x,0001 1,0001 0,1000 0,0100 x,0100 1,0100 0,1010 X Pierre COLLET - Systèmes d'Exploitation 62 Algorithme NRU ◆ 2 bits R et M pour chaque page. R mis à 1 à chaque accès à une page, et remis à 0 à chaque top d'horloge. M mis à 1 si la page est modifiée. ◆ En cas de besoin, on vire la page de plus petit numéro 4P 1E 2L Top 3E 4L 1 11 01 10 00 2 11 3 10 4 5 X X X D X Top 1L 01 11 00 01 2E Top 5L 01 11 00 Pierre COLLET - Systèmes d'Exploitation 1E 11 01 01 00 X 10 X 63