Gestion de la mémoire Abdelouahed Gherbi Hiver 2014 1
Plan Introduction Systèmes monoprogramés Protection Relocation Va-et-vient (Swapping) Systèmes multiprogrammés Partition fixes Partition variables État de la mémoire Algorithmes de placement et libération de mémoire 2
Introduction Les programmes résident sur le disque dans des fichiers binaires exécutables Pour être exécuté, un programme doit être chargé en mémoire et placé dans un processus Un programme utilisateur passe par plusieurs étapes avant d être exécutable Les adresses sont représentées de différentes façons selon l étape Code source : adresses symboliques. (P. ex. compteur) Module objet : adresses relative. (P. ex. 250 ième mot depuis le début d'espace mémoire) Binaire chargé en mémoire : adresses absolues. (P.ex. 0xFFF7) Étapes de compilation, édition des liens et chargement d un programme utilisateur [1] 3
Rôle du gestionnaire de mémoire Le gestionnaire de la mémoire est le composant du système d exploitation qui se charge de gérer l allocation d espace mémoire aux processus La fonction de gestion de mémoire traite les problèmes suivants : Organisation de la mémoire Nombre et la taille des partitions Partition fixes ou variables Politique d allocation de la mémoire une zone contiguë pour chaque processus? Allocation totale ou partielle de l espace nécessaire Gestion de l espace libre Mémorisation de l état de la mémoire Politique de placement : Parmi les parties libres en mémoire, lesquelles allouées au processus? Libération d espace mémoire en cas d insuffisance : Retirer un processus complétement ou partiellement Politique de remplacement : Choix du processus à retirer de la mémoire Protection des processus et du système d exploitation Exigences Efficacité, relocation, protection 4
Systèmes monoprogrammés Un seul processus ayant son programme en mémoire Le système d exploitation est aussi en mémoire Trois organisations simples ont souvent été utilisés Trois organisations de la mémoire d un système monoprogrammé [3] 5
Protection Il est nécessaire de protéger le code et les données du SE des processus ainsi que les processus entre eux Pour cela, on utilise un registre limite qui indique la limite de la zone réservée aux programmes utilisateurs. Chaque adresse référencée par la CPU est comparée avec le registre limite. 6
Relocation Lors de la compilation et l édition des liens les adresses des instructions et des données d un programmes sont relatives au début du programme 0 Ces adresses relatives (dites logiques ou virtuelles) seront ensuite translatées en adresse physiques. La translation peut se faire lors du chargement du processus Cette solution a un inconvénient : il ne sera plus possible de déplacer le processus. 7
Relocation Une autre solution consiste à faire la translation au cours de l exécution Cette solution doit être supportée par le matériel Doter la machine (MMU) de 2 registres spéciaux : Le registre de base (de translation) Le registre limite. Quand un processus est sélectionné par l ordonnanceur, le SE charge L adresse du début de la zone mémoire allouée au programme dans le registre de base La longueur de l espace d adresses du programme dans le registre limite. Durant l exécution d une instruction : chaque adresse relative référencée par l instruction est comparée avec le registre limite, afin d interdire tout accès en dehors de la partition courante (protection). Les adresses physiques sont obtenues en ajoutant le contenu du registre de base aux adresses relatives. Avantage : le processus peut être déplacé en mémoire. Support matériel pour la relocation et protection [1] 8
Va-et-vient (Swapping) Un processus doit être chargé en mémoire pour être exécuté Un processus peut être permuté (swapped out) temporairement à l extérieur de la mémoire Les processus permutés résident dans disque rapide (backing store) Le processus sera ramené (swapped in) vers la mémoire pour continuer sont exécution Le va-et-vient ou permutation (swapping) permet de libérer de la mémoire en cas d insuffisance La technique de swapping est limitée pour les programme non relogeables (non déplaçables) Contrainte : ramener le programme non déplaçable dans la même zone en mémoire Va-et-vient [1] Le temps nécessaire pour le swapping augmente le coût de la commutation de contexte 9
Multiprogrammation avec partitions fixes La mémoire est divisée en un ensemble de partitions. Le nombre et la taille des partitions sont fixés à l'avance lors du chargement du système. Les partitions peuvent être égales ou non. La choix du nombre et de la taille des partitions dépend du niveau de multiprogrammation voulu. L unité d allocation est une partition. Partition fixes avec tailles égales et inégales [2] 10
Multiprogrammation avec partitions Problèmes avec la partition fixe fixes Un programme peut ne pas correspondre à aucune partition La programmeur se trouve obligé de concevoir le programme utilisant des techniques comme les recouvrements (overlays) Utilisation inefficace de la mémoire Un programme aussi petit qu il soit occupe une partition entière Ceci résulte en le problème de fragmentation interne 11
Multiprogrammation avec partitions variables (dynamiques) Initialement, l espace mémoire réservé aux programmes constitue une seule partition. Quand un nouveau processus doit être chargé, on lui alloue une zone contiguë de taille suffisamment grande pour le contenir. Le nombre et les tailles des partitions varient au cours du temps. Évolution de l état d allocation de la mémoire [3] 12
Multiprogrammation avec partitions Exemple : variables Taille de la mémoire 256K OS occupe 40K 5 processus ayant les caractéristiques suivante Évolution de la mémoire Processus Besoin en mémoire P1 60K 10 P2 100K 5 P3 30K 20 P4 70K 8 Temps d exécution P5 50K 15 Que peut on remarquer? 13
Multiprogrammation avec partitions variables (dynamiques) L allocation de la mémoire avec partitions variables conduit éventuellement à l'apparition de trous trop petits pour les allouer à d autres processus : c'est la fragmentation externe Solutions? 14
Multiprogrammation avec partitions variables (dynamiques) L allocation de la mémoire avec partitions variables conduit éventuellement à l'apparition de trous trop petits pour les allouer à d autres processus : c'est la fragmentation externe Solutions Compactage Solution coûteuse Les processus doivent être relogeables (déplaçables) Allocation discontinue!!! 15
État de la mémoire Table de bits (bitmaps) La mémoire est un ensemble d unités d allocation. Un bit est associé à chaque unité. Lorsqu'on doit charger un processus de k unités, le gestionnaire de la mémoire doit chercher dans la table des bits une séquence de k zéros consécutifs. Cette méthode est rarement utilisée car la méthode de recherche est lente (k zéros consécutifs). Liste chainée Table des bits et liste chainée [3] 16
Algorithmes de placement Le gestionnaire de mémoire doit décider quel est le bloc libre qu il doit utiliser pour satisfaire la requête d un processus 17
Algorithme de placement Algorithme de la première zone libre convenable first fit Allouer La première zone libre qui convient. La recherche commence au début de la liste chainée On s arrête dés que on trouve un zone libre suffisamment large pour contenir le processus 18
Algorithme de placement Algorithme du meilleur ajustement best fit Allouer la plus petite zone libre qui est suffisamment grande pour contenir le processus On cherche dans toute la liste chainée à moins que la liste est ordonnée par la taille des trous Pourquoi? 19
Algorithme de placement Algorithme du meilleur ajustement best fit Allouer la plus petite zone libre qui est suffisamment grande pour contenir le processus On cherche dans toute la liste chainée à moins que la liste est ordonnée par la taille des trous Stratégie : La zone qui laisse le plus petit espace non occupé. 20
Algorithme de placement Algorithme du pire ajustement worst fit Allouer la plus grande zone libre On cherche dans toute la liste chainée sauf si la liste est ordonnée par ordre décroissant des tailles des trous Pourquoi? 21
Algorithme de placement Algorithme du pire ajustement worst fit Allouer la plus grande zone libre On cherche dans toute la liste chainée sauf si la liste est ordonnée par ordre décroissant des tailles des trous Stratégie : Choisir la zone qui laisse le plus grand espace non occupé qui sera plus utile qu un petit trou Pour tous les algorithme : Si la zone sélectionnée est plus grande que celle du processus à charger, elle est scindée en deux parties : la première est alloué au processus, la seconde est libre. 22
Allocation par subdivision (Buddy System) Les tailles des blocs sont des puissances de 2. Initialement, on a un seul bloc libre. Exemple : La taille maximale est de 1 Mo Un processus demande 70 Ko. Le gestionnaire détermine d abord la taille du bloc à allouer La plus petite puissance de 2 supérieure à la taille demandée Notre exemple : 70Ko, soit 128 Ko. La mémoire est récursivement divisée en deux blocs jusqu à l obtention d un bloc adéquat Notre exemple Comme il n y a pas de blocs libres de taille 128 Ko, 256 Ko ou 512 Ko la mémoire de 1 Mo est divisée en deux blocs de 512 Ko. Le premier bloc est divisé en deux blocs de 256 Ko. Enfin, le premier des deux blocs nouvellement créés est divisé en deux blocs de 128 Ko. L espace alloué au processus est situé entre l adresse 0 et 128 Ko. L allocation par subdivision est rapide mais elle est assez inefficace en ce qui concerne l utilisation de la mémoire (arrondir les tailles à une puissance de 2, fragmentation interne). 23
Allocation par subdivision (Buddy System) Exemple Exemple d allocation par subdivision (Buddy System) [2] 24
Allocation par subdivision (Buddy System) Représentation par un arbre de l allocation par subdivision juste après Release B [2] 25
Libération de la mémoire Un processus qui termine a deux voisins Excepté quand il est en haut de la mémoire ou en bas de la mémoire Ses voisins sont soit des processus ou des trous (zones mémoire non allouées) On a donc quatre (4) combinaisons 1 er cas : (a) mise à jour de la liste en remplaçant l état d occupation (P H) 2 ième cas : (b) et (c) Deux entrées (éléments) de la liste sont combinées en une seule et suppression d un élément 3ième cas (d) Trois entrées de la liste sont combinées et suppression de deux éléments de la liste 26
Références [1] SILBERSCHATZ, A. et P.B. GALVIN, Operating System Concepts. 8 th Edition, Addison Wesley. [2] William Stallings, Operating Systems : Internals and Design Principles, 5 th edition, Pearson [3] Andrew Tanenbaum, Modern Operating Systems, 3rd edition, 2008 27