Systèmes d'exploitation Systèmes d'exploitation (Operating Systems) Remi Bonidal ([email protected]) Formation Continue Année 2010 R. Bonidal (FC 2010) Systèmes d'exploitation 1 Systèmes d'exploitation 1 Introduction 2 Conception des sytèmes d'exploitation 3 Gestion des processus 1 Gestion de la mémoire R. Bonidal (FC 2010) Systèmes d'exploitation 2 Systèmes d'exploitation Introduction Sommaire 1 Introduction Dénition Historique Types de systèmes d'exploitation Architecture matérielle 2 Conception des sytèmes d'exploitation 3 Gestion des processus 1 Gestion de la mémoire R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 3 Systèmes d'exploitation Introduction Dénition Sommaire 1 Introduction Dénition Historique Types de systèmes d'exploitation Architecture matérielle 2 Conception des sytèmes d'exploitation 3 Gestion des processus 1 Gestion de la mémoire R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 4 Systèmes d'exploitation Introduction Dénition Système d'exploitation ... ? Qu'est-ce qu'un système d'exploitation ? R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 5 Systèmes d'exploitation Introduction Dénition Système d'exploitation ... ? Qu'est-ce qu'un système d'exploitation ? ,→ L'interface entre le logiciel et le physique. R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 5 Systèmes d'exploitation Introduction Dénition Système d'exploitation ... ? Qu'est-ce qu'un système d'exploitation ? ,→ L'interface entre le logiciel et le physique. 1 Séparer les applications des spécicités du matériel : portabilité R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 5 Systèmes d'exploitation Introduction Dénition Système d'exploitation ... ? Qu'est-ce qu'un système d'exploitation ? ,→ L'interface entre le logiciel et le physique. 1 Séparer les applications des spécicités du matériel : portabilité 2 Séparer les applications des limitations du matériel : ni → inni R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 5 Systèmes d'exploitation Introduction Dénition Système d'exploitation ... ? Qu'est-ce qu'un système d'exploitation ? ,→ L'interface entre le logiciel et le physique. 1 Séparer les applications des spécicités du matériel : portabilité 2 Séparer les applications des limitations du matériel : ni → inni 3 Protéger le matériel des applications. R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 5 Systèmes d'exploitation Introduction Dénition Système d'exploitation ... ? Qu'est-ce qu'un système d'exploitation ? ,→ L'interface entre le logiciel et le physique. 1 Séparer les applications des spécicités du matériel : portabilité 2 Séparer les applications des limitations du matériel : ni → inni 3 Protéger le matériel des applications. Ce n'est pas facile ! ! R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 5 Systèmes d'exploitation Introduction Dénition Pourquoi se pencher dessus ? Pourquoi étudier les systèmes d'exploitation (SE) ? Tout utilisateur est concerné → Tout programme est concerné meilleure maîtrise → améliorer l'ecacité Confrontation aux mêmes problèmes → ne pas réinventer la roue Challenge intellectuel... et c'est intéressant, tout simplement R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 6 Systèmes d'exploitation Introduction Dénition Pourquoi un SE ? Les ressources matérielles sont complexes détails techniques embêtants Contrôleur de disquettes NEC PD765 Possède 16 commandes, manipulées écriture de 1 à 9 octets dans des registres : lecture/écriture d'un secteur (13 paramètres codés sur 9 octets) déplacement du bras de lecture initialisation du contrôleur et calibration des têtes de lecture Retourne 23 champs d'état et d'erreurs codés sur 7 octets. Il faut gérer soi-même le démarrage et la mise en veille du moteur (compromis entre surcoût temps et usure). Le programmeur λ doit-it vraiment gérer ça ? ! ? R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 7 Systèmes d'exploitation Introduction Dénition Un rôle de gestionnaire exemple : Partage d'imprimante Machine multi-utilisateurs avec service d'impression. Plusieurs programmes démarrés susceptibles d'imprimer : verrouillage temporaire de l'accès à l'imprimante ,→ ne pas mélanger les ots de caractères tampons d'impression ,→ un programme ne doit pas attendre inutilement R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 8 Systèmes d'exploitation Introduction Dénition Un rôle de gestionnaire Pour gérer l'accès à une ressource coûteuse. Il faut : connaître l'utilisateur de la ressource gérer les accès concurrentiels éviter les conits entre les programmes/usagers R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 9 Systèmes d'exploitation Introduction Dénition Fonctionnalités d'un SE Buts d'un système d'exploitation : décharger le programmeur d'une tache énorme et fastidieuse ,→ concentration sur le développement de SON application protéger le système et ses usagers de fausses manipulations orir une vue simple/uniforme/cohérente de la machine et des ressources R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 10 Systèmes d'exploitation Introduction Dénition Place du SE dans l'ordinateur R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 11 Systèmes d'exploitation Introduction Historique Sommaire 1 Introduction Dénition Historique Types de systèmes d'exploitation Architecture matérielle 2 Conception des sytèmes d'exploitation 3 Gestion des processus 1 Gestion de la mémoire R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 12 Systèmes d'exploitation Introduction Historique les premiers ordinateurs Génération 0 La genèse 18211836 : Première machine numérique de Charles Babbage N'a jamais pu fonctionner correctement Première génération 19401955 : Relais et tubes à vide, programmés par tableaux d'interrupteurs Trèèèès lent, cycle mesuré en secondes R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 13 Systèmes d'exploitation Introduction Historique Évolution des ordinateurs Deuxième génération Les mainframes 19551965 : Transistors, cartes perforées et exécution par lots Système d'exploitation FMS (Fortran Monitor System) $JOB $FORTRAN ...Programme... $LOAD $RUN ...Données... $END R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 14 Systèmes d'exploitation Introduction Historique Évolution des ordinateurs Troisième génération 19651980 : Circuits intégrés et multi-programmation Système d'exploitation OS/360 (3-4× plus complexe que FMS) Suivent diérentes évolutions : Multi-utilisateurs Extension de la multi-programmation vers le temps partagé Premier système à temps partagé CTSS (MIT) MULTICS (MIT - Bell Labs - General Electric) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 15 Systèmes d'exploitation Introduction Historique Évolution des ordinateurs Mini-ordinateurs 1961 : PDP-1 au PDP-11 (DEC) avec 4 K-mots de 18 bits(Programmable Data Processor) 1969 : MULTICS allégé pour PDP-7 (Ken Thompson, Bell Labs) : UNICS 19711977 : UNIX sur PDP-11 (Ken Thompson, Dennis Ritchie et al.) en C 1974 : Distribution d'UNIX aux universités américaines par AT&T 1977 : BSD 1 par l'université de Berkeley R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 16 Systèmes d'exploitation Introduction Historique Évolution des Unices http://www.levenez.com/unix/ R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 17 Systèmes d'exploitation Introduction Historique Évolution des ordinateurs Quatrième génération Les micro-ordinateurs 1980maintenant : Puces LSI (Large Scale Integration) et ordinateurs personnels CP/M (Gary Kildall, Digital Research), puis IBM PC et MS-DOS Interface graphique (GUI : Engelbart, Xerox PARC), fenêtre et souris Steve Jobs reprend le concept : Apple MS Windows (3.1, 95, 98, NT, Me, XP, Vista) se répand R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 18 Systèmes d'exploitation Introduction Types de systèmes d'exploitation Sommaire 1 Introduction Dénition Historique Types de systèmes d'exploitation Architecture matérielle 2 Conception des sytèmes d'exploitation 3 Gestion des processus 1 Gestion de la mémoire R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 19 Systèmes d'exploitation Introduction Types de systèmes d'exploitation Diérents types d'utilisations ... Diérents Systèmes d'exploitations ! Systèmes pour mainframes Systèmes pour serveurs Systèmes multiprocesseurs Systèmes personnels Systèmes temps réel Systèmes embarqués R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 20 Systèmes d'exploitation Introduction Types de systèmes d'exploitation Systèmes pour mainframes Grosses machines, beaucoup de ressources Batch, transactionnel ou temps partagé Systèmes pour serveurs Beaucoup d'utilisateurs Beaucoup de réseau Systèmes multiprocesseurs Plusieurs processeurs Gestion concurrente des ressources R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 21 Systèmes d'exploitation Introduction Types de systèmes d'exploitation Systèmes personnels Interface conviviale Utilisation basique Systèmes temps réel Respect de contraintes temporelles Temps réel dur vs Temps réel mou Systèmes embarqués Interface conviviale Contraintes matérielles Systèmes pour smart-cards R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 22 Systèmes d'exploitation Introduction Architecture matérielle Sommaire 1 Introduction Dénition Historique Types de systèmes d'exploitation Architecture matérielle 2 Conception des sytèmes d'exploitation 3 Gestion des processus 1 Gestion de la mémoire R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 23 Systèmes d'exploitation Introduction Architecture matérielle un ordinateur ...qu'est ce donc ? Quels sont les composants de base de l'ordinateur ? R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 24 Systèmes d'exploitation Introduction Architecture matérielle un peu d'histoire....(encore !) Architecture de von Neumann Pas de séparation données/instructions ! Architecture révolutionnaire en 45 ...mais un peu dépassé ! R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 26 Systèmes d'exploitation Introduction Architecture matérielle Et maintenant ... Architecture moderne Unité de calcul et de contrôle réunies BUS pour échange de données Mémoire non uniforme ! R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 27 Systèmes d'exploitation Introduction Architecture matérielle Un peu plus en détail : le CPU Cycle principal du CPU récupérer l'adresse de la prochaine instruction à exécuter (dans un registre spécique) récupérer l'instruction elle-même (par le bus) exécuter l'instruction incrémenter le compteur ordinal pour pointer vers la prochaine instruction Un exemple d'instruction add1 %eax, %edx R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 28 Systèmes d'exploitation Introduction Architecture matérielle Le cerveau de l'ordinateur Exécute les instructions selon un cycle Fetch → Decode → Execute Fonctionne selon plusieurs niveaux de privilèges Mode noyau : pas de restrictions Mode utilisateur : pas toutes les instructions Le système d'exploitation s'exécute en mode noyau Les programmes s'exécutent en mode utilisateur Les services du système sont accessibles via des appels systèmes qui basculent en mode noyau le temps d'exécuter le service R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 29 Systèmes d'exploitation Introduction Architecture matérielle La memoire Temps d'accès 1 ns 2 ns 10 ns 10 ms Registres Caches Mémoire principale Disque Géré par Compilateur Materiel OS OS Capacité < 1 Ko ≈ 1 Mo ≈ 1 Go ≈ 1 To Une mémoire non uniforme mais hiérarchique Des rôles diérents Des technologies diérentes Des gestions diérentes Nous verrons plus en détail la problématique de la gestion de la mémoire. R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 30 Systèmes d'exploitation Introduction Architecture matérielle Les bus : transfert d'information au sein de l'ordinateur Classication des bus Synchrone ou Asynchrone En fonction de ce qu'ils connectent : bus de processeur bus de mémoire (synchrone) bus d'entrée/sortie (asynchrone) En fonction de ce qu'ils transportent : bus de données : circulation données et instructions bus d'adressage : adresses (mémoire ou périphérique) bus de contrôle : actions demandées (écriture ou une lecture, entrée/sortie de ou vers un périphérique) + interruptions matérielles (IRQ) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 31 Systèmes d'exploitation Introduction Architecture matérielle Les bus classiques Des bus pour communiquer... ...mais comment ? R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 32 Systèmes d'exploitation Introduction Architecture matérielle Communiquer ... ...avec quoi ? Tout ce qui entre ou sort de l'ordinateur Disque dur, réseau, clavier, souris, ... ...est ce simple ? Le SE doit gérer les ux de données entre le CPU et les périphériques. Les périphériques sont lents. Les périphériques peuvent être asynchrones. R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 33 Systèmes d'exploitation Introduction Architecture matérielle Communiquer ... ...en sondant Le SE demande régulièrement si il y a de nouvelles données. R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 34 Systèmes d'exploitation Introduction Architecture matérielle Communiquer ... ...en sondant Le SE demande régulièrement si il y a de nouvelles données. INEFFICACE ! R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 34 Systèmes d'exploitation Introduction Architecture matérielle Communiquer ... ...en sondant Le SE demande régulièrement si il y a de nouvelles données. INEFFICACE ! R. Bonidal (FC 2010) ...en interrompant Le périphérique interrompt le CPU en l'avertissant qu'il y a de nouvelles données. MODERNE ! Systèmes d'exploitation Cours 1 34 Systèmes d'exploitation Introduction Architecture matérielle Le CPU attend les E/S write transmet le contrôle au programme d'E/S Le prog d'E/S prépare le périphérique Le CPU doit attendre la n du write L'attente peut être longue (imprimante, graveur, ...) Le prog d'E/S rend la main, on continue R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 35 Systèmes d'exploitation Introduction Architecture matérielle On attends ...On attends ... Inconvénient : On attends ... On attends ....On attends ....et ....On attends plus qu'autre chose ! Solution : se faire avertir quand c'est ni ! ...mais comment ? Système physique dédiés : une partie du bus de contrôle. une procédure spécique. C'est le principe des interruptions. R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 36 Systèmes d'exploitation Introduction Architecture matérielle Le gestionnaire d'interruptions Procédure d'interuption : Sauvegarde du contexte d'exécution du programme en cours. Lire l'emplacement du programme destiné à gérer cet événement (table d'association préétablie) Exécution de la routine Restauration du contexte Reprise du programme R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 37 Systèmes d'exploitation Introduction Architecture matérielle Exemple d'interruption Interruptions → meilleur usage du CPU Le gestionnaire d'interruptions prépare le prog d'E/S et le lance Il recharge le prog utilisateur qui s'exécute en même temps que les E/S : pas d'attente À la n du module d'E/S le gestionnaire d'interruption reprend la main pour examiner son état Le prog utilisateur reprend son cours (... si tout s'est bien passé) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 38 Systèmes d'exploitation Introduction Architecture matérielle Diérentes classes d'interruption : Les E/S Retourne l'état du module d'E/S : normal ou erreur Les exceptions Débordements, instructions illégales, référence hors espace utilisateur Timers Tick horloge Suspend un programme pour eectuer des tâches annexes Défauts matériels R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 39 Systèmes d'exploitation Introduction Architecture matérielle IRQ pour le PC/AT Liste des Interrupt Requests : IRQ 0 : Horloge Système IRQ 1 : Clavier IRQ 2 : N/A (cascade du second contrôleur) IRQ 3 : Port série (COM2/COM4) IRQ 4 : Port série (COM1/COM3) IRQ 5 : LPT2 (carte de son) IRQ 6 : Lecteur de disquettes R. Bonidal (FC 2010) IRQ 7 : Port parallèle (LPT1) IRQ 8 : Horloge temps réel IRQ 9 : N/A (PCI) IRQ 10 : N/A IRQ 11 : N/A (USB) IRQ 12 : N/A (PS/2) IRQ 13 : Coprocesseur math. IRQ 14 : Disque dur primaire IRQ 15 : Disque dur secondaire Systèmes d'exploitation Cours 1 40 Systèmes d'exploitation Introduction Architecture matérielle Références bibliographiques La bible (aussi disponible en français) : Modern Operating Systems , Andrew S. Tanenbaum e édition, février 2008, 1104 pages, Prentice Hall 3 Principes des systèmes d'exploitation , A. Silberschatz, P.B. Galvin, G. Gagne e édition, mars 2008, 872 pages, Vuibert 6 Le noyau Linux , Daniel P. Bovet, Marco Cesati e édition, août 2006, O'Reilly 3 Multiboot : http://www.bellamyjc.org/fr/multiboot.html R. Bonidal (FC 2010) Systèmes d'exploitation Cours 1 41 Systèmes d'exploitation Conception des sytèmes d'exploitation Sommaire 1 Introduction 2 Conception des sytèmes d'exploitation Rôle d'un SE Structures de SE 3 Gestion des processus 1 Gestion de la mémoire R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 42 Systèmes d'exploitation Conception des sytèmes d'exploitation Rôle d'un SE Sommaire 1 Introduction 2 Conception des sytèmes d'exploitation Rôle d'un SE Structures de SE 3 Gestion des processus 1 Gestion de la mémoire R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 43 Systèmes d'exploitation Conception des sytèmes d'exploitation Rôle d'un SE Le modèle Processus / Ressources SE = interface entre Programme et Matériel R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 44 Systèmes d'exploitation Conception des sytèmes d'exploitation Rôle d'un SE Le modèle Processus / Ressources SE = interface entre Programme et Matériel Interface à plusieurs niveaux d'abstraction entre : Le programme eectue des tâches → processus Les tâches sont exécutées par le matériel → ressources R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 44 Systèmes d'exploitation Conception des sytèmes d'exploitation Rôle d'un SE Rôle du SE Gérer les processus Gérer les ressources (pour le compte des processus) CPU Mémoire Fichiers ··· Protéger les processus et les ressources → Décomposition d'un SE en sous-système. R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 45 Systèmes d'exploitation Conception des sytèmes d'exploitation Rôle d'un SE Une protection ... A quel niveau ? Le matériel : partage équitable, bonne utilisation Les programmes : les accès, le privé Protection assistée par le matériel 2 niveaux d'exécutions : mode utilisateur mode privilégié (ou superviseur, noyaux, etc ...) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 46 Systèmes d'exploitation Conception des sytèmes d'exploitation Rôle d'un SE Exemples de protections Entrées/Sorties Toutes les instructions E/S sont privilégiées Elles passent toutes par le noyau La mémoire Certaines régions ne doivent pas être vu par les utilisateurs tables d'authentications zones d'auteurs utilisateurs Gestion de la mémoire au niveau matériel Temps processeur Éviter les boucles innies R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 47 Systèmes d'exploitation Conception des sytèmes d'exploitation Rôle d'un SE Les aspects du SE 2 aspects Passif : orir des services aux applications. Actif : Surveillance et contrôle. Quelques termes : Interface de commande (Texte ou graphique) : application standard Appel système(System call API) : Fonctions fournies par le SE aux applications Noyau : Système qui joue le rôle actif et qui implante les appels systèmes R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 48 Systèmes d'exploitation Conception des sytèmes d'exploitation Rôle d'un SE Les sous-systèmes d'un SE Gestion des processus Gestion des E/S Organisation Contrôler tous les périphériques Communication Unier les interfaces Gestion de la mémoire Gestion des chiers Aectation Robustesse Protection Sécurités Quels problèmes sont traités par ces sous systèmes ? R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 49 Systèmes d'exploitation Conception des sytèmes d'exploitation Rôle d'un SE Processus et CPU Processus Un processus = code + données CPU : Control Process Unit ,→ Unité de Contrôle des Traitements Le CPU = ressource qui sert à exécuter le code des processus Rôle du SE pour les processus (Ré)Activer un processus Suspendre un processus Tuer un processus Contôler l'exécution d'un processus De manière optimale pour le CPU R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 50 Systèmes d'exploitation Conception des sytèmes d'exploitation Rôle d'un SE Processus et CPU : les dés Comment transférer l'exécution d'un processus à un autre ? Comment choisir l'ordre des processus à exécuter ? Comment s'assurer que tous les processus vont pouvoir s'exécuter ? Comment synchroniser les processus lorsqu'ils accèdent à une même ressource partagée ? ··· R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 51 Systèmes d'exploitation Conception des sytèmes d'exploitation Rôle d'un SE Processus et mémoire 1 processus → 1 espace d'adressage (un ensemble d'adresses mémoire) La mémoire = code + données du processus pendant son exécution Rôle du SE Charger un processus en mémoire Libérer la mémoire en n d'exécution d'un processus Allouer et libérer de la mémoire dynamiquement demandée par les processus ,→ De manière optimale pour le CPU R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 52 Systèmes d'exploitation Conception des sytèmes d'exploitation Rôle d'un SE Processus et mémoire : les dés Questions : Comment organiser les processus en mémoire ? (partitionnement, segmentation, ...) Comment protéger les zones mémoires de chaques processus ? Comment s'assurer qu'il y a assez de mémoire pour un processus ? ··· R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 53 Systèmes d'exploitation Conception des sytèmes d'exploitation Rôle d'un SE Gestion des chiers Fichier = informations organisées sur un support Caractérise les chiers types droits d'accès structure Rôle du SE Création Modication Lecture Écriture Suppression ··· R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 54 Systèmes d'exploitation Conception des sytèmes d'exploitation Rôle d'un SE Autres composants Gestion des E/S (clavier, souris, écran, ...) Gestion du réseau réseau local SE distribué Gestion des comptes utilisateurs (groupes, ...) Gestion de l'alimentation À plus haut niveau (6∈ SE) ,→ Terminaux/Interprètes de commandes (shell) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 55 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Sommaire 1 Introduction 2 Conception des sytèmes d'exploitation Rôle d'un SE Structures de SE 3 Gestion des processus 1 Gestion de la mémoire R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 56 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Structure d'un SE Plusieurs possibilités de conception pour un SE 1 Sans réelle structure R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 57 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Structure d'un SE Plusieurs possibilités de conception pour un SE 1 Sans réelle structure 2 En couches R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 57 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Structure d'un SE Plusieurs possibilités de conception pour un SE 1 Sans réelle structure 2 En couches 3 À noyau Monolithique Microkernel Hybride Exokernel R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 57 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Sans réelle structure Structuration hiérarchique mal dénie Une entité peut faire appel aux services de toutes les couches inférieures Restrictions limitées, peu de contrôles : pas de sécurité Exemple : MS-DOS R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 58 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE À couches Structuration hiérarchique bien dénie Une couche ne fait appel qu'au services de la couche directement inférieure Bonne théorie générale, extensible Très peu ecace, trop d'intermédiaires Exemple : THE de Djiksrta (1968) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 59 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE À noyau Structuration à 2 niveaux généralement : 1 2 Mode noyau (Kernel Mode) Mode utilisateur (User Mode) Les applications en mode utilisateurs peuvent (doivent) demander des services au noyau à travers des appels système R. Bonidal (FC 2010) Exemple d'un noyau monolithique Systèmes d'exploitation Cours 2 60 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Les appels systèmes : lien entre applications et SE Généralement accédé par des Interface) API (Application Program Cas particulier d'interruption logicielle Les 3 plus courantes : Win32 API, POSIX API et JAVA API Pourquoi des API ? ...Pour comprendre les réponses des appels systèmes ! R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 61 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Exemple de l'appel R. Bonidal (FC 2010) read(fd, &buffer, nbytes) ; Systèmes d'exploitation Cours 2 62 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Exemple de l'appel R. Bonidal (FC 2010) read(fd, &buffer, nbytes) ; Systèmes d'exploitation Cours 2 62 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Exemple de l'appel R. Bonidal (FC 2010) read(fd, &buffer, nbytes) ; Systèmes d'exploitation Cours 2 62 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Exemple de l'appel R. Bonidal (FC 2010) read(fd, &buffer, nbytes) ; Systèmes d'exploitation Cours 2 62 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Exemple de l'appel R. Bonidal (FC 2010) read(fd, &buffer, nbytes) ; Systèmes d'exploitation Cours 2 62 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Exemple de l'appel R. Bonidal (FC 2010) read(fd, &buffer, nbytes) ; Systèmes d'exploitation Cours 2 62 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Exemple de l'appel R. Bonidal (FC 2010) read(fd, &buffer, nbytes) ; Systèmes d'exploitation Cours 2 62 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Exemple de l'appel R. Bonidal (FC 2010) read(fd, &buffer, nbytes) ; Systèmes d'exploitation Cours 2 62 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Exemple de l'appel R. Bonidal (FC 2010) read(fd, &buffer, nbytes) ; Systèmes d'exploitation Cours 2 62 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Exemple de l'appel R. Bonidal (FC 2010) read(fd, &buffer, nbytes) ; Systèmes d'exploitation Cours 2 62 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Exemple de l'appel R. Bonidal (FC 2010) read(fd, &buffer, nbytes) ; Systèmes d'exploitation Cours 2 62 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Exemple de l'appel R. Bonidal (FC 2010) read(fd, &buffer, nbytes) ; Systèmes d'exploitation Cours 2 62 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE À noyau : Monolithique Un seul programme → lourd et dicile à débugger The big mess gâchis de mémoire (tout est chargé) possibilité de modularité (Linux) Exemple : Linux R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 63 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE À noyau : Micronoyau Noyau réduit au presque minimum (microkernel) Gère principalement l'ordonnancement et les transferts de messages entre les programmes Les drivers et les applications s'exécutent en mode utilisateur Système client-serveur Portable et facilement maintenable Ecacité plutôt mauvaise (pas d'optimisation) Exemples : Mach, Minix R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 64 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE À noyau : Hybride Compromis entre le kernel monolithique et le micorkernel Les drivers s'exécutent en mode noyau → optimsation Exemple : Windows NT R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 65 Windows 2000 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE À noyau : Exonoyau Exokernel est un petit noyau gérant géneralement des machines virtuelles exécutées en mode utilisateur Les ressources sont allouées aux machines virtuelles par l'exokernel Un SE de SE en quelque sorte R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 67 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Le cas de linux Approche descriptive Interface d'appels systèmes Sous-systèmes de gestion des processus : gestion des processus ordonnancement gestion de la mémoire Sous-systèmes de gestion des chiers : gestion du buer-cache gestion des chiers gestion des périphériques R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 68 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Le cas de linux Approche fonctionnelle Une partie supérieure : fournit des services aux processus utilisateurs Une partie inférieure : fournit le traitement des interruptions R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 69 Systèmes d'exploitation Conception des sytèmes d'exploitation Structures de SE Diérence interruption/exception Une interruption est provoquée par un signal provenant du monde extérieur au processeur, et modiant le comportement de celui-ci. Une exception est un signal provoque par un dysfonctionnement du programme en cours d'exécution Chaque interruption ou exception dispose d'un sous-programme (handler) qui prend en charge l'évènement correspondant : table de vecteurs d'interruption ou IDT : Interrupt Descriptor Table dans le langage Linux. R. Bonidal (FC 2010) Systèmes d'exploitation Cours 2 70 Systèmes d'exploitation Gestion des processus Sommaire 1 Introduction 2 Conception des sytèmes d'exploitation 3 Gestion des processus Concepts Changement de contexte Ordonnancement Le cas des Unix Synchronisation des processus 1 Gestion de la mémoire R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 71 Systèmes d'exploitation Gestion des processus Concepts Sommaire 1 Introduction 2 Conception des sytèmes d'exploitation 3 Gestion des processus Concepts Changement de contexte Ordonnancement Le cas des Unix Synchronisation des processus 1 Gestion de la mémoire R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 72 Systèmes d'exploitation Gestion des processus Concepts Concepts Processus et boot Le kernel est chargé à partir du disque lors du démarrage du système Bootstrapping = initialisation du système et dénition de l'environnement pour exécuter des processus Un premier processus (init) est lancé S'exécute (réside) jusqu'à l'arrêt du système Les autres processus sont alors créés à partir d'init (ou d'un de ses descendants) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 73 Systèmes d'exploitation Gestion des processus Concepts Concepts Processus et espace d'adressage Plusieurs processus partagent le CPU, la mémoire, les périphériques Si système à temps partagé → l'exécution des processus est virtuellement concurrente Chaque processus a son espace d'adressage contenant Ses instructions (code) Ses données Cet espace est a priori virtuel Il contient un ensemble de registres (compteur ordinal, pointeur de pile, ...) nécessaires au bon fonctionnement du processus R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 74 Systèmes d'exploitation Gestion des processus Concepts Concepts Processus et noyau La sémantique des interactions entre le kernel et les processus utilisateurs est dénie à travers l'API système : les appels système Ainsi le kernel eectue les instructions pour le compte du processus Le kernel intervient également quand un processus eectue une action interdite division par zéro débordement de pile (stack overow) adressage mémoire incorrect (segmentation fault) ,→ cause une exception matériel (hardware exception) que le kernel traite pour le compte du processus R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 75 Systèmes d'exploitation Gestion des processus Concepts Concepts Espace d'adressage des processus et noyau Une partie de l'espace d'adressage de chaque processus correspond à du code et des objets du kernel : c'est la partie espace système Il n'existe qu'une seule instance du kernel dans le système Tous les processus pointent sur ce même espace kernel L'accès à l'espace système se fait en mode système à travers les appels système Le kernel gère les processus via 2 objets spéciques à chaque processus : L'espace usager (user space) qui contient des infos sur le processus Liste des chiers ouverts Valeurs des registres, ... La pile kernel (kernel stack) pour la gestion des fonctions de tous les processus en appel système R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 76 Systèmes d'exploitation Gestion des processus Concepts Concepts En résumé R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 77 Systèmes d'exploitation Gestion des processus Concepts Concepts Cycle de vie d'un processus Interruption possible d'un processus R. Bonidal (FC 2010) ⇒ = 6 Systèmes d'exploitation états Cours 3 78 Systèmes d'exploitation Gestion des processus Concepts Concepts Cycle de vie d'un processus Alternance de sections actives, durant lesquelles des unités de temps CPU (les giclées CPU, CPU burst) sont consommées, et de temps d'attentes d'E/S Le passage d'un processus à l'autre s'eectue par un changement de contexte (context switch) 2 mécanismes de gestion : L'ordonnancement (scheduling) : choix du processus à activer La synchronisation : gestion de l'accès à une ressource partagée R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 79 Systèmes d'exploitation Gestion des processus Changement de contexte Sommaire 1 Introduction 2 Conception des sytèmes d'exploitation 3 Gestion des processus Concepts Changement de contexte Ordonnancement Le cas des Unix Synchronisation des processus 1 Gestion de la mémoire R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 80 Systèmes d'exploitation Gestion des processus Changement de contexte Changement de contexte Interruption/activation de processus ⇒ changement de contexte pour le système (pour le CPU) Besoin d'un mécanisme de sauvegarde des données vitales du processus Maintient d'une table (process table) des processus Chaque entrée contient une structure, le PCB (Process Control Block), décrivant le contexte d'un processus (structure task_struct sous Linux) Champs possibles dans un PCB PID, registres, compteur ordinal, état du processus, temps CPU utilisé, UID, GID, umask, répertoire courant, descripteurs chiers, ... R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 81 Systèmes d'exploitation Gestion des processus Changement de contexte Changement de contexte R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 82 Systèmes d'exploitation Gestion des processus Ordonnancement Sommaire 1 Introduction 2 Conception des sytèmes d'exploitation 3 Gestion des processus Concepts Changement de contexte Ordonnancement Le cas des Unix Synchronisation des processus 1 Gestion de la mémoire R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 83 Systèmes d'exploitation Gestion des processus Ordonnancement Ordonnancement Scheduling L'ordonnanceur (scheduler) choisit les processus qui vont pouvoir accéder au CPU Pour la gestion de la mémoire virtuelle (espace d'adressage du processus) et du temps partagé (accès CPU), l'ordonnancement se fait à deux niveaux : Une répartition de haut niveau qui sélectionne le prochain processus à charger en mémoire (mémoire virtuelle) Une répartition de bas niveau (dispatcher) qui sélectionne, à chaque fois que le CPU devient inactif, un processus parmi tous ceux prêts Bas niveau Haut niveau R. Bonidal (FC 2010) Exécutions Très fréquentes Occasionnelles Performances demandées Excellentes Bonnes Systèmes d'exploitation Cours 3 84 Systèmes d'exploitation Gestion des processus Ordonnancement Ordonnancement Files d'attente Idée : gestion des accès par le d'attente Une le d'attente pour chaque périphérique (ressource) et par type d'E/S (lecture, écriture, ...) Questions : Ordre d'insertion des processus ? Mode de passage le ↔ CPU ? Gestion E/S et CPU identiques ? R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 85 Systèmes d'exploitation Gestion des processus Ordonnancement Files d'attentes Traitement par lots Batch mode Pas d'ordonnancement de bas niveau Si demande d'E/S le CPU reste inactif durant le traitement R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 86 Systèmes d'exploitation Gestion des processus Ordonnancement Files d'attentes Multiprogrammation Si demande d'E/S, le CPU est libéré pour traiter un autre processus R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 87 Systèmes d'exploitation Gestion des processus Ordonnancement Files d'attentes Temps partagé Quantum de temps : durée de temps maximale allouée à chaque processus R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 88 Systèmes d'exploitation Gestion des processus Ordonnancement Files d'attentes Mémoire virtuelle R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 89 Systèmes d'exploitation Gestion des processus Ordonnancement Ordonnancement Les algorithmes Les critères À minimiser Temps écoulé entre soumission et n d'exécution Temps de gestion (swap, changement de contexte, ...) Temps d'exécution des E/S (processus interactifs) À maximiser Taux d'activité du CPU Nombre de processus traités par unité de temps Comment quantier ? Faire des tests Faire des statistiques (moyenne, variance, médiane, extremums, ...) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 90 Systèmes d'exploitation Gestion des processus Ordonnancement Ordonnancement Les algorithmes 2 classes d'ordonnanceurs 1 2 Non préemptifs : un processus ne relâche le CPU que quand il a ni ou quand il passe en E/S Préemptif : l'utilisation du CPU est sujette à un quantum de temps Exemples Préemptifs Unix, Windows NT/2000/XP..., BeOS Non préemptifs MS-DOS, Windows 3.1, ancien MacOS R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 91 Systèmes d'exploitation Gestion des processus Ordonnancement Les algorithmes Non préemptifs : FCFS / PAPS First Come First Served (FCFS) Premier Arrivé, Premier Servi (PAPS) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 92 Systèmes d'exploitation Gestion des processus Ordonnancement Les algorithmes Non préemptif : SJF / PCA Shortest Job First (SJF) Plus Court d'Abord (PCA) Les processus ayant un minimum d'unités CPU à consommer sont mis en tête de liste En cas d'égalité → utiliser FCFS Problème Comment connaître le temps CPU des processus ? R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 93 Systèmes d'exploitation Gestion des processus Ordonnancement Les algorithmes Non préemptif : SJF / PCA Solutions Le demander à l'utilisateur L'estimer à partir de l'historique tn+1 = a ∗ tn + (1 − a) ∗ pn - tn est le temps du ne passage dans le CPU - pn est la prédiction faite au ne passage dans le CPU - a est un coecient de pondération (indice de conance) Problème Famine (starvation) des processus gourmands en CPU Solution Vieillissement automatique des processus R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 94 Systèmes d'exploitation Gestion des processus Ordonnancement Les algorithmes Préemptif : RR Round Robin (RR) Algorithme du tourniquet ≈ FCFS préemptif → quantum de temps Un processus libère le CPU si : Demande d'E/S Terminaison Fin du quantum de temps alloué R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 95 Systèmes d'exploitation Gestion des processus Ordonnancement Les algorithmes Préemptif : RR Problème Choix du quantum Si quantum long → processus courts pénalisés Si quantum ∞ → FCFS Si quantum trop court → meilleure interactivité, mais trop de changement de PCB Sous Unix Dépend de l'utilisation (serveur, ordinateur de bureau, ...) Généralement 100ms R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 96 Systèmes d'exploitation Gestion des processus Ordonnancement Les algorithmes Listes multiples Les processus ont des caractéristiques diérentes Calcul scientique Applications bureautiques Jeux Utilisation diérente du CPU Plusieurs les de priorité suivant le type de processus R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 97 Systèmes d'exploitation Gestion des processus Ordonnancement Les algorithmes Listes multiples Les processus de niveau 2 ne seront activés que lorsque ceux de niveau 1 seront terminés (eux-mêmes activés quand la liste de niveau 0 sera vide) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 98 Systèmes d'exploitation Gestion des processus Ordonnancement Les algorithmes Évaluation des algorithmes 1 TAM : temps d'attente moyen Exemple : 4 processus A, B, C et D arrivés dans cet ordre avec des temps CPU de 16, 2, 8 et 12 unités respectivement Cas FCFS : TAM = 0+(16)+(16+2)+(16+2+8) 4 TAM = 0+(2)+(2+8)+(2+8+12) 4 Cas SJF : = 15 = 8, 5 2 Pénalité : rapport temps passé / temps requis Large pénalité dans un système non préemptible → mieux vaut passer à du temps partagé R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 99 Systèmes d'exploitation Gestion des processus Le cas des Unix Sommaire 1 Introduction 2 Conception des sytèmes d'exploitation 3 Gestion des processus Concepts Changement de contexte Ordonnancement Le cas des Unix Synchronisation des processus 1 Gestion de la mémoire R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 100 Systèmes d'exploitation Gestion des processus Le cas des Unix Création de processus sous Unix Les états R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 101 Systèmes d'exploitation Gestion des processus Le cas des Unix Création de processus sous Unix Identiant d'un processus PID (Process IDentier) PPID (Parent Process IDentier) ,→ structure arborescente des processus UID (User IDentier) et GID (Group IDentier) UID, GID réels : ceux de l'utilisateur du processus UID, GID eectifs : ceux du propriétaire du processus R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 102 Systèmes d'exploitation Gestion des processus Le cas des Unix Création de processus sous Unix La fonction fork() fork() crée un nouveau processus Elle duplique l'espace d'adressage du processus original (code, données, variables, registres, descripteurs de chiers, ...) Le processus appelant la fonction fork() est le processus père (parent process) Le processus créé est le processus ls (child process) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 103 Systèmes d'exploitation Gestion des processus Le cas des Unix Création de processus sous Unix La fonction fork() Un appel système est transmis au kernel à travers la fonction fork() de la librairie C Le kernel recherche une place disponible dans la table des processus S'il en trouve une, il copie toute l'info du père dans le bloc de contrôle du ls Remarque La seule diérence entre les 2 PCB sont les champs PID et PPID du processus et de son père Souvent l'appel à fork() est immédiatement suivi d'un appel à la fonction exec() pour remplacer le code du père R. Bonidal (FC 2010) Systèmes d'exploitation Cours 3 104 Systèmes d'exploitation Gestion des processus Synchronisation des processus Sommaire 1 Introduction 2 Conception des sytèmes d'exploitation 3 Gestion des processus Concepts Changement de contexte Ordonnancement Le cas des Unix Synchronisation des processus 1 Gestion de la mémoire R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 105 Systèmes d'exploitation Gestion des processus Synchronisation des processus Les problèmes classiques Producteurs/Consommateurs Lecteurs/Rédacteurs Diner des Philosophes R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 106 Systèmes d'exploitation Gestion des processus Synchronisation des processus Producteurs/Consommateurs Lorsque des processus légers souhaitent communiquer entre eux, ils peuvent le faire par l'intermédiaire d'une le. Il faut dénir le comportement à avoir lorsqu'un thread souhaite lire depuis la le lorsque celle-ci est vide et lorsqu'un thread souhaite écrire dans la le mais que celle-ci est pleine. Peut être résolu à l'aide des sémaphores. R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 107 Systèmes d'exploitation Gestion des processus Synchronisation des processus Lecteurs/Rédacteurs Ce problème traite de l'accès concurrent en lecture et en écriture à une ressource. Plusieurs processus légers (thread) peuvent lire en même temps la ressource, mais il ne peut y avoir qu'un et un seul thread en écriture. Peut être résolu à l'aide des sémaphores. R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 108 Systèmes d'exploitation Gestion des processus Synchronisation des processus Le Diner des philosophes cinq philosophes (initialement mais il peut y en avoir beaucoup plus) se trouvent autour d'une table ; chacun des philosophes a devant lui un plat de spaghetti ; à gauche de chaque assiette se trouve une fourchette. R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 109 Systèmes d'exploitation Gestion des processus Synchronisation des processus Le Diner des philosophes Un philosophe n'a que trois états possibles : penser pendant un temps indéterminé ; être aamé (pendant un temps déterminé et ni sinon il y a famine) ; manger pendant un temps déterminé et ni. R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 110 Systèmes d'exploitation Gestion des processus Synchronisation des processus Le Diner des philosophes Des contraintes extérieures s'imposent à cette situation : quand un philosophe a faim, il va se mettre dans l'état aamé et attendre que les fourchettes soient libres ; pour manger, un philosophe a besoin de deux fourchettes : celle qui se trouve à gauche de sa propre assiette, et celle qui se trouve à gauche de celle de son voisin de droite (c'est-à-dire les deux fourchettes qui entourent sa propre assiette) ; si un philosophe n'arrive pas à s'emparer d'une fourchette, il reste aamé pendant un temps déterminé, en attendant de renouveler sa tentative. R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 111 Systèmes d'exploitation Gestion des processus Synchronisation des processus Race condition Situation de compétition (Race condition) Situation où plusieurs processus accèdent à la même ressource, de manière concurrente (au même moment , souvent la mémoire) Faille qui fait que le résultat va dépendre de l'ordre d'accès à la ressource par les diérents processus R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 112 Systèmes d'exploitation Gestion des processus Synchronisation des processus Race condition Situation de compétition (Race condition) Situation où plusieurs processus accèdent à la même ressource, de manière concurrente (au même moment , souvent la mémoire) Faille qui fait que le résultat va dépendre de l'ordre d'accès à la ressource par les diérents processus Question Que se passe-t-il si un processus est interrompu lors de son accès à la ressource, laissant la main à un autre processus qui utilse la même ressource ? R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 112 Systèmes d'exploitation Gestion des processus Synchronisation des processus Race condition Situation de compétition (Race condition) Situation où plusieurs processus accèdent à la même ressource, de manière concurrente (au même moment , souvent la mémoire) Faille qui fait que le résultat va dépendre de l'ordre d'accès à la ressource par les diérents processus Question Que se passe-t-il si un processus est interrompu lors de son accès à la ressource, laissant la main à un autre processus qui utilse la même ressource ? Solution Il faut un mécanisme d'exclusion mutuelle pour controler l'accès à la ressource R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 112 Systèmes d'exploitation Gestion des processus Synchronisation des processus Synchronisation des processus, exemple : R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 113 Systèmes d'exploitation Gestion des processus Synchronisation des processus Section critique Une suite d'instructions d'un programme accédant à une ressource partagée est appelée une section critique (SC) Critères requis pour bien gérer les race conditions 1 2 3 4 À tout moment, au plus un processus en SC Aucune hypothèse sur la vitesse et le nombre de CPU Aucun processus s'exécutant en dehors d'un SC ne doit bloquer les autres Aucun processus ne doit attendre indéniment avant de pouvoir entrer dans une SC (éviter les deadlock et la famine) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 114 Systèmes d'exploitation Gestion des processus Synchronisation des processus Désactivation des interruptions Pour ne pas être interrompu lors de l'entrée en SC, un processus peut désactiver les interruptions Elles sont ensuite réactivées à la sortie de la SC Problèmes Si erreur, l'ordinateur peut rester bloquer On repasse en monoprogrammation, on n'optimise pas l'usage du CPU Privilège trop imoprtant pour un processus utilisateur Que faire quand on a plusieurs CPU ? Néanmoins, ça peut être pratique pour le kernel R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 115 Systèmes d'exploitation Gestion des processus Synchronisation des processus Verrous Lock variables Le principe Associer à chaque ressource partagée une variable verrou prenant la valeur LIBRE ou OCCUPE Ce verrou est consulté et modié par chaque processus pour pouvoir accéder à la ressource Exemple ··· Tantque (etat_verrou == OCCUPE) /* Attente active */ ; etat_verrou = OCCUPE ; accès à la ressource paratgée etat_verrou = LIBRE ; ··· R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 116 Systèmes d'exploitation Gestion des processus Synchronisation des processus Verrous Problèmes 1 2 On déplace le problème sur le verrou : le verrou devient la ressource partagée Si l'ordonnanceur est préemptif le processus peut être interrompu entre le test du verrou et l'accès à la ressource R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 117 Systèmes d'exploitation Gestion des processus Synchronisation des processus L'alternance stricte L'alternance Processus 0 Répéter { Tantque ; } Processus 1 Répéter { Tantque (a_qui_le_tour != 0) ; /* section critique */ a_qui_le_tour = 1 ; /* section non critique */ } (a_qui_le_tour != 1) /* section critique */ a_qui_le_tour = 0 ; /* section non critique */ Évite les race conditions, mais... Problème Verrouillage avec attente active (spin lock) Viole la condition 3 de bonne gestion des race conditions Si un processus est très long il peut bloquer un autre processus pendant un certain temps R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 118 Systèmes d'exploitation Gestion des processus Synchronisation des processus Solution de Peterson Combinaison d'alternance strict et de verrouillage Processus 0 appelle entrer_SC() interesse[0] = TRUE tour = 0 Processus 1 appelle entrer_SC() interesse[1] = TRUE tour = 1 Attente sur le while que processus 0 appelle quitter_SC() Processus 0 et 1 appellent entrer_SC() interesse[0]=interesse[1] = TRUE tour = 0 puis tour = 1 Donc processus 0 en SC et processus 1 bloque sur le while R. Bonidal (FC 2010) Solution de Peterson int tour ; int interesse[2] ; void entrer_SC(int proc) { int autre = 1 - proc ; interesse[proc] = TRUE ; tour = proc ; while (tour == proc && intresse[autre] == TRUE) ; } void quitter_SC(int proc) { interesse[proc] = FALSE ; } Systèmes d'exploitation Cours 5 119 Systèmes d'exploitation Gestion des processus Synchronisation des processus Solution matérielle TSL : Test and Set Lock Certains processeurs disposent d'une instruction permettant d'eectuer de manière indivisible (atomique) le test de la valeur d'un registre et de lui assigner une nouvelle valeur Instruction TSL entrer_sc : TSL REGISTRE, LockFlag CMP REGISTRE, #0 JNE enter_region RET R. Bonidal (FC 2010) quitter_sc : MOV LockFlag, #0 RET Systèmes d'exploitation Cours 5 120 Systèmes d'exploitation Gestion des processus Synchronisation des processus Inconvénients Les processus doivent jouer le jeu et coopérer pour que les techniques fonctionnent Attente active → gaspillage du temps CPU Conditions 3 et 4 de gestion des race conditions pas tjrs vériées Inversion des priorités Deux procesus H (haute priorité) et B (basse priorité) On active toujours le processus de plus haute priorité R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 121 Systèmes d'exploitation Gestion des processus Synchronisation des processus Les sémaphores Problème des Producteurs / Consommateurs Ressource partagée Un buer (mémoire tampon) de taille BUFFER_SIZE Objectifs Un ou plusieurs producteurs produisent des objets Chaque producteur qui vient de produire un objet l'ajoute au buer S'il est plein, le producteur s'endort en attendant une place libre Un ou plusieurs consommateurs viennent retirer les objets Si le buer est vide, le consommateur s'endort Problème Régler les race conditions sur l'accès au buer R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 122 Systèmes d'exploitation Gestion des processus Synchronisation des processus Les sémaphores Comment éviter l'attente active ? 2 fonctions sleep() wakeup() Idée Quand un processus appelle sleep(), il s'endort wakeup(), il réveille Si un autre processus appelle le processus endormi R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 123 Systèmes d'exploitation Gestion des processus Synchronisation des processus Les sémaphores Problème des Producteurs / Consommateurs #define BUFFER_SIZE 100 int buffer[BUFFER_SIZE] ; int cpt = 0 ; /* nbr d'objets dans le buffer */ void producteur() { int item ; while(TRUE) { item = produire_objet() ; if (cpt == BUFFER_SIZE) sleep() ; deposer_objet(item, buffer) ; ++cpt ; if (cpt == 1) wakeup(consommateur) ; } } R. Bonidal (FC 2010) void consommateur() { int item ; while(TRUE) { if (cpt == 0) sleep() ; item = retirer_objet(buffer) ; --cpt ; if (cpt == BUFFER_SIZE - 1) wakeup(producteur) ; consommer_objet(item) ; } } Systèmes d'exploitation Cours 5 124 Systèmes d'exploitation Gestion des processus Synchronisation des processus Les sémaphores Problème Conit sur la variable cpt Illustration Solution Un consommateur teste cpt et trouve 0 L'ordonnanceur bascule sur un producteur Le producteur incrémente cpt et constate que le buer était vide Le producteur lance un wakeup() perdu car le consommateur n'était pas encore endormi ! Mémoriser le R. Bonidal (FC 2010) wakeup() → les sémaphores Systèmes d'exploitation Cours 5 125 Systèmes d'exploitation Gestion des processus Synchronisation des processus Les sémaphores Dénition Une sémaphore est une variable qui Contrôle l'accès à une ressource partagée Indique le nombre d'éléments de la ressource qui sont disponibles Maintient une liste des processus bloqués en attente de cette ressource (s'il y en a) Quand une sémaphore ne peut pas prendre de valeur plus grande que 1, on parlera de sémaphore binaire, ou de mutex (exclusion mutuelle) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 126 Systèmes d'exploitation Gestion des processus Synchronisation des processus Les sémaphores Implantation possible d'une sémaphore type semaphore = enregistrement valeur : int Lp : liste de PID n enregistrement Lp est une liste de processus qui va être utilisée pour conserver les processus bloqués en attente de la ressource partagée (qui ont cherché à y accéder alors qu'elle n'était pas/plus disponible) Quand la sémaphore est ≥0 elle indique le nombre d'unités de la ressoucre qui sont disponibles Quand elle est <0 elle indique généralement le nombre de processus qui sont bloqués en attente de la ressource R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 127 Systèmes d'exploitation Gestion des processus Synchronisation des processus Les sémaphores 2 opérations atomiques permettent de modier l'état d'une sémaphore down(S) S (ou P) décrémente S Puis vérie si elle est toujours ≥ 0 Si c'est n'est pas le cas, sleep() est déclenchée up(S) (ou V) incrémente S Si celle-ci est ≤ 0, un processus de la liste d'attente du sémaphore est réveillé Exemple d'implantation down(S) S.valeur = S.valeur - 1 si S.valeur < 0 ajouter(processus_courant, S.Lp) sleep() R. Bonidal (FC 2010) up(S) S.valeur = S.valeur + 1 si S.valeur ≤ 0 processus = retirer(S.Lp) wakeup(processus) Systèmes d'exploitation Cours 5 128 Systèmes d'exploitation Gestion des processus Synchronisation des processus Les sémaphores Utilisation Une solution au problème des producteurs / consommateurs Elle utilise 3 sémaphores 1 2 3 full Initialisée à 0 avec une liste vide Contrôle le nombre d'objet rangés dans le buer La liste contient les processus consommateurs bloqués empty Initialisée à BUFFER_SIZE avec une liste vide Contrôle le nombre de places vides dans le buer La liste contient les processus producteurs bloqués mutex Une sémaphore binaire initialisée à 1 Contrôle l'entrée et la sortie en SC R. Bonidal (FC 2010) Systèmes d'exploitation Cours 5 129 Systèmes d'exploitation Gestion des processus Synchronisation des processus Les sémaphores Utilisation Producteurs / Consommateurs avec sémaphores #define BUFFER_SIZE 100 int buffer[BUFFER_SIZE] ; /* Les sémaphores doivent être initialisées avant usage */ sema_t mutex, full, empty ; sema_init(&mutex, 1) ; sema_init(&full, 0) ; sema_init(&empty, BUFFER_SIZE) ; void producteur() { int item ; while(TRUE) { item = produire_objet() ; down(&empty) ; down(&mutex) ; deposer_objet(item, buffer) ; up(&mutex) ; up(&full) ; } } R. Bonidal (FC 2010) void consommateur() { int item ; while(TRUE) { down(&full) ; down(&mutex) ; item = retirer_objet(buffer) ; up(&mutex) ; up(&empty) ; consommer_objet(item) ; } } Systèmes d'exploitation Cours 5 130 Systèmes d'exploitation Gestion de la mémoire Sommaire 1 Introduction 2 Conception des sytèmes d'exploitation 3 Gestion des processus 1 Gestion de la mémoire Gestion des allocations mémoires Mémoire virtuelle R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 131 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Sommaire 1 Introduction 2 Conception des sytèmes d'exploitation 3 Gestion des processus 1 Gestion de la mémoire Gestion des allocations mémoires Mémoire virtuelle R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 132 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Gestion de la mémoire Objectifs Ressource critique du système à gérer : Connaître les zones libres de la mémoire physique Allouer de la mémoire au processus (éviter le gaspillage) Récupérer la mémoire à la terminaison d'un processus Orir aux processus des services de mémoire virtuelle, de taille supérieure à la mémoire physique technique de va-et-vient (swapping) et de pagination Toujours penser à l'ecacité ! R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 133 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Gestion de la mémoire Diversité de congurations En fonction du type de système : Monoprogrammtion Multiprogrammtion Partitionnement xe Partitionnement variable En fonction du type de code : Code absolu Code relogeable Quels algorithmes de gestion ? Chargements en mémoire Libération de la mémoire Déplacements en mémoire R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 134 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Monoprogrammation Gestion de la mémoire Plutôt basique car 1 seul processus en mémoire R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 135 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Multiprogrammation Modélisation et évaluation Objectif de la multiprogrammation : optimiser l'utilisation CPU Point de vue naïf Si un processus calcule en moyenne pendant 20% de son temps ⇒ 5 processus en mémoire pour une utilisation CPU optimale Vision optimiste car on suppose aucun temps d'attente en E/S Point de vue plus réaliste Modélisation probabiliste de l'usage du CPU p : probabilité pour un processus d'être en attente en E/S n : nombre de processus Taux d'utilisation du CPU : 1 − pn R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 136 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Multiprogrammation Modélisation Pourcentage d'utilisation du CPU 100 % 90 % 80 % 70 % 60 % 50 % 40 % 30 % 20 % 20% d'attente en E/S 50% d'attente en E/S 80% d'attente en E/S 10 % 0% 0 1 2 3 4 5 6 7 8 9 10 Degré de multiprogrammation (nombre de processus) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 137 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Multiprogrammation Gestion de la mémoire Partitions xes : division de l'espace mémoire en n partitions de tailles xées (initialisation du SE) Une le de priorité par partition Fragmentation externe : un processus attend alors que des partitions sont libres R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 138 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Multiprogrammation Gestion de la mémoire Partitions xes : division de l'espace mémoire en n partitions de tailles xées (initialisation du SE) Une le de priorité globale Fragmentation interne : grande partition pour un petit processus (mauvaise estimation) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 139 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Multiprogrammation Contrôle de la mémoire Comme plusieurs processus sont en mémoire simultanément, la multiprogrammation introduit deux problèmes essentiels à résoudre : 1 Le relogement du code (code relocation) 2 La protection des zones mémoires R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 140 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Code et espace d'adressage Adress binding Un programme écrit dans un langage autre que le langage machine fait appel à des noms pour accéder aux données et fonctions qu'il manipule Le programme en langage machine, lui, n'utilise pas ces noms, mais des adresses par lesquelles il accède à ces données À quel moment et comment se fait ce passage des adresses symboliques aux adresses système ? R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 141 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Code et espace d'adressage Adress binding 1 Code absolu : adresses déterminées une fois pour toute lors de la compilation ou de l'assemblage Pratique en monoprogrammation car 1 seul processus à la fois est en mémoire Pas de protection, si ce n'est avec le SE (très facile alors) Utilisé dans certains systèmes embarqués par exemple R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 142 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Code et espace d'adressage Adress binding 2 Code relogeagble : adresses déterminées une fois le code chargé en mémoire Il n'est pas possible de connaître à la compilation l'adresse réelle physique où sera la donnée, l'adressage doit doit être relatif Généralement utilisé en multiprogrammation avec des adresses relatives au début de la partition Peut aussi se rencontrer en monoprogrammation si le système n'est que partiellement résident en mémoire R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 143 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Code et espace d'adressage Adresses logique / adresses physiques Deux possibilités : 1 Au moment du chargement en mémoire le chargeur (loader) modie toutes les adresses en leur ajoutant l'adresse de départ de la partition Les adresses émises par le CPU à l'exécution sont donc des adresses physiques 2 Le CPU émet toujours des adresses logiques qui sont à chaque fois converties en adresses physiques Gérer par une entité spécique : la MMU (Memory Managment Unit) Fait à l'aide de 2 registres : Le registre de base : adresse du début de la partition Le registre limite : correspond à la taille de la partition, permet de vérier si l'accès est autorisé (protection mémoire) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 144 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Code et espace d'adressage Adresses logique / adresses physiques Unité de conversion des adresses logiques en adresses physiques R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 145 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Multiprogrammation Mécanisme de va-et-vient : le swapping Partitions variables : le nombre, la taille et la localisation des partitions changent au cours du temps Un processus ne connaît pas à l'avance l'emplacement de sa partition ,→ code relogeable R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 146 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Multiprogrammation Partitions variables Fragmentation externe non résolue Si A se repésente avant que B ne soit déchargé, blocage de A alors qu'il reste assez de place libre au total Fragmentation interne améliorée, + de contrôle Les délimitations n'étant pas xes, on peut se permettre de déplacer les zones S'il y a trop de trous on peut compacter la mémoire ,→ Utilisation d'un ramasse-miette (Garbage Collector) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 147 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Multiprogrammation Allocation d'espace libre Plusieurs stratégies possibles Le premier trou disponible (First Fit) Le plus petit trou disponible (Best Fit) Parcourir la liste des trous Le plus grand trou disponible (Worst Fit) Sauf si l'on rencontre un trou de taille adéquate Le trou restant sera encore grand et donc utilisable Dans tous les cas il faut une bonne représentation R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 148 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Multiprogrammation Représentation de l'espace Par bitmap : découpage en blocs d'allocation (généralement de n taille 2 ) Choix de n délicat Trop petit ⇒ bitmap trop grand Trop grand ⇒ gaspillage de mémoire Recherche de k blocs libres : lourd R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 149 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Multiprogrammation Représentation de l'espace Listes chaînées : construire et maintenir une liste de blocs de mémoire libres et occupés Chaque bloc est une suite d'adresses consécutives Toutes occupées par un même processus Ou toutes libres Maintenance plus aisée, recherche moins coûteuse R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 150 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Multiprogrammation Représentation de l'espace Listes chaînées : optimisation Utiliser des listes doublement chaînées Maintenir deux listes Une pour les blocs occupés Une pour les blocs libres Ordonner chaque liste suivant la taille des blocs La liste des bloc libres se simule avec... les blocs libres Pour chaque zone libre, le 1er octet est la taille de la zone, le 2e est l'adresse du précédent bloc libre et le 3e est l'adresse du bloc libre suivant R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 151 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Multiprogrammation Représentation de l'espace Listes chaînées Accélère l'allocation Mais ralentit la libération D'où allocation par subdivision (Buddy system) Le gestionnaire de mémoire ne manipule que des blocs de taille une puissance de 2 Chaîné par vecteur de listes : une liste d'indice k contient les blocs de taille 2k Ou représentation par arbre binaire Fragmentation interne forte Fragmentation externe persistante Mais gestion des blocs très ecace R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 152 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Multiprogrammation Buddy System R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 153 Systèmes d'exploitation Gestion de la mémoire Gestion des allocations mémoires Multiprogrammation Buddy System R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 154 Systèmes d'exploitation Gestion de la mémoire Mémoire virtuelle Sommaire 1 Introduction 2 Conception des sytèmes d'exploitation 3 Gestion des processus 1 Gestion de la mémoire Gestion des allocations mémoires Mémoire virtuelle R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 155 Systèmes d'exploitation Gestion de la mémoire Mémoire virtuelle Mémoire virtuelle Problèmes : Monoprogrammation Programmes trop volumineux pour tenir entièrement en mémoire Multiprogrammation + interactivité ,→ Beaucoup de processus en cours d'exécution en même temps Impossibilité de tout faire tenir en mémoire Solution : la mémoire virtuelle (virtual memory) Ne mettre en mémoire que les parties réellement utilisées des processus Charger et décharger les diérentes parties suivant les besoins des processus R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 156 Systèmes d'exploitation Gestion de la mémoire Mémoire virtuelle Mémoire virtuelle Pagination Mémoire physique trop petite pour contenir en même temps et entièrement TOUS les processus prêts ⇒ On découpe les processus en petites tranches n Les tranches sont de la même taille (xe, 2 ), on les appelle des pages Elles sont placées (mapped) en mémoire physique dans des cadres de page (frames) de même taille Seules les pages utiles sont chargées en mémoire physique R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 157 Systèmes d'exploitation Gestion de la mémoire Mémoire virtuelle Mémoire virtuelle Pagination Problème : pas assez de cadres libres pour toutes les pages Que faire si accès à une page non mappée en mémoire (52K-56K par exemple) ? Trap dans le SE : page fault Repéré par la MMU (bit de présence/abscence) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 158 Systèmes d'exploitation Gestion de la mémoire Mémoire virtuelle Mémoire virtuelle Pagination On utilise une table des pages Une par processus (puisque chacun a son propre espace d'adressage) Problèmes : La table des pages peut être très grande (adressage 32 bits, page de 4 Ko ≈ 1000000 de pages) Temps d'accès dégradés si trop d'indirections R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 159 Systèmes d'exploitation Gestion de la mémoire Mémoire virtuelle Mémoire virtuelle Pagination Solution / Optimisation pour la gestion des tables de pages : Plusieurs niveaux d'indirection Système de cache : utilisation de registres spécialisés, le TLB (Translation Lookaside Buer) R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 160 Systèmes d'exploitation Gestion de la mémoire Mémoire virtuelle Mémoire virtuelle Swap in / swap out Quand un défaut de page (page fault ) survient... que fait-on ? 1 2 3 4 La MMU lève une exception : interruption processeur, kernel trap Le processus est endormi Le pager est activé et charge, s'il n'y a pas d'erreur, la page requise dans un cadre de page Quand la page est chargée le processus est réveillé Problème : Quelle page remplace-t-on ? R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 161 Systèmes d'exploitation Gestion de la mémoire Mémoire virtuelle Mémoire virtuelle Demande de page Algorithme optimal : À chaque fois qu'une page est accédée, elle est étiquetée avec un label donnant le nombre d'instructions à exécuter avant le prochain accès à cette page Lors d'une demande de remplacement de page, la page avec le label le plus élevé est choisie pour être déchargée de la mémoire principale R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 162 Systèmes d'exploitation Gestion de la mémoire Mémoire virtuelle Mémoire virtuelle Demande de page Algorithme optimal : À chaque fois qu'une page est accédée, elle est étiquetée avec un label donnant le nombre d'instructions à exécuter avant le prochain accès à cette page Lors d'une demande de remplacement de page, la page avec le label le plus élevé est choisie pour être déchargée de la mémoire principale Impossible à implanter :p ! Mais théoriquement c'est une bonne base de comparaison R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 162 Systèmes d'exploitation Gestion de la mémoire Mémoire virtuelle Mémoire virtuelle Demande de page Algorithme NRU (Not Recently Used) : 2 bits : R, page reférencée, et M, page modiée Régulièrement (timer qui génère une interruption) le bit R est remis à zéro 4 cas possibles : 1 2 3 4 Non accédée, non modiée (R ,M ) Non accédée, modiée (R ,M ) Accédée, non modiée (R ,M ) Accédée, modiée (R ,M ) On enlève en priorité suivant l'ordre croissant des cas Facile à implanter et assez ecace R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 163 Systèmes d'exploitation Gestion de la mémoire Mémoire virtuelle Mémoire virtuelle Demande de page Algorithme FIFO (First In, First Out) : Liste des pages en mémoire principale suivant leur ordre d'arrivée Très basique et peut remplacer des pages importantes juste parce qu'elles sont vieilles Algorithme de la seconde chance (amélioration FIFO) Tenir compte du bit R Si bit R à 1 (accès récent), le bit R est remis à zéro et la page est réinsérée en n de la liste des pages Si tous les bits R sont à 1 ⇒ dégénère en FIFO Très nette amélioration par rapport à FIFO Algorithme de l'horloge = seconde chance avec liste circulaire R. Bonidal (FC 2010) Systèmes d'exploitation Cours 6 164 Systèmes d'exploitation Gestion de la mémoire Mémoire virtuelle Mémoire virtuelle Demande de page Algorithme LRU (Least Recently Used) : Enlever la page utilisée le moins récemment Un peu plus coûteux, mais excellente approximation de l'optimal Liste chaînée des pages, à mettre à jour à chaque accès à une page Ou bien compteur à incrémenter à chaque accès (matériel) Approximation par NFU (Not Frequently Used) : Mécanisme de vieillissement À chaque interruption (timer) un compteur associé à la page est décalé à droite (division par 2) et bit R recopié dans le bit de poids le plus fort R. Bonidal (FC 2010) ⇒ grand nombre = récemment accédée Systèmes d'exploitation Cours 6 165