Introduction du cours MGL810

publicité
Gestion de la mémoire
Abdelouahed Gherbi
Hiver 2014
LOG 710 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
LOG 710 Hiver 2014
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)
LOG 710 Hiver 2014
É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
LOG 710 Hiver 2014
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]
LOG 710 Hiver 2014
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.
LOG 710 Hiver 2014
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.
LOG 710 Hiver 2014
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 :
–
–
•
Support matériel pour la
relocation et protection [1]
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.
LOG 710 Hiver 2014
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
LOG 710 Hiver 2014
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.
LOG 710 Hiver 2014
Partition fixes avec tailles
égales et inégales [2]
10
•
Multiprogrammation avec partitions
fixes
Problèmes avec la partition fixe
• 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
LOG 710 Hiver 2014
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]
LOG 710 Hiver 2014
12
•
Multiprogrammation avec partitions
variables
Exemple :
– 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
Temps
d’exécution
P1
60K
10
P2
100K
5
P3
30K
20
P4
70K
8
P5
50K
15
Que peut on
remarquer ?
LOG 710 Hiver 2014
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 ?
LOG 710 Hiver 2014
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!!!
LOG 710 Hiver 2014
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]
LOG 710 Hiver 2014
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
LOG 710 Hiver 2014
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
LOG 710 Hiver 2014
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 ?
LOG 710 Hiver 2014
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é.
LOG 710 Hiver 2014
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 ?
LOG 710 Hiver 2014
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.
LOG 710 Hiver 2014
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).
LOG 710 Hiver 2014
23
Allocation par subdivision (Buddy
System)
• Exemple
Exemple d’allocation par
subdivision (Buddy System) [2]
LOG 710 Hiver 2014
24
Allocation par subdivision (Buddy
System)
•
Représentation par un arbre de l’allocation par subdivision juste après Release B [2]
LOG 710 Hiver 2014
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
• 1er cas : (a) mise à jour de la liste en
remplaçant l’état d’occupation (PH)
• 2iè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
LOG 710 Hiver 2014
26
Références
[1] SILBERSCHATZ, A. et P.B. GALVIN, Operating System
Concepts. 8th Edition, Addison Wesley.
[2] William Stallings, Operating Systems : Internals and Design
Principles, 5th edition, Pearson
[3] Andrew Tanenbaum, Modern Operating Systems, 3rd
edition, 2008
LOG 710 Hiver 2014
27
Téléchargement