gestion memoire
DESCRIPTION
gestion memoireTRANSCRIPT
1
Gestion de la Mémoire Centrale
Ecole Nationale d’Ingénieurs de Sousse
Principes généraux des systèmes d’exploitation
11 A - ENISO 2009 / 2010
Cycle de vie D’un programme
21 A - ENISO 2009 / 2010
Liaison d’adresse Habituellement, un programme réside comme un
fichier binaire exécutable sur disque. Le programme doit être chargé en mémoire et
placé dans un processus afin d’être exécuté. La plupart des systèmes autorisent un processus
à résider n’importe ou dans la mémoire. En général : un programme traversera plusieurs
pas avant d’être exécuté.
31 A - ENISO 2009 / 2010
Liaison d’adresse
On peut effectuer la liaison d’instructions et de données à des adresses mémoire :
Au moment de la compilation Au moment du chargement Au moment de l’exécution
41 A - ENISO 2009 / 2010
Moment de compilation Si on connaît au moment de la compilation
où réside le processus en mémoire, on peut générer du code absolu.
Par exemple, si on sait à priori qu’un processus utilisateur réside en commençant à l’adresse R, le code du compilateur généré démarrera donc à cet emplacement et s’étendra à partir de là.
Si plus tard, l’emplacement change, il sera donc nécessaire de compiler à nouveau le code.
51 A - ENISO 2009 / 2010
Moment de chargement
Si on ne connaît pas au moment de la compilation l’endroit où résidera le processus en mémoire, le compilateur doit donc générer du code translatable.
Dans ce cas, la liaison finale est reportée jusqu’au moment du chargement.
Si l’adresse de début change, nous devons seulement recharger le code utilisateur
61 A - ENISO 2009 / 2010
Moment de l’exécution
Si on peut déplacer le processus pendant son exécution d’un segment de mémoire à un autre, la liaison doit donc être retardée jusqu’au moment de l’exécution.
71 A - ENISO 2009 / 2010
Chargement dynamique
On ne charge pas une routine avant qu’elle soit appelée.
Une routine non utilisée n’est jamais chargée.
Quand des grandes quantités de code sont nécessaires pour manipuler des cas qui se produisent rarement : routines d’erreur.
81 A - ENISO 2009 / 2010
Edition de liens dynamiques Editions de liens statiques : les bibliothèques des
langages du système sont traitées comme tout autre module objet et sont combinés par le chargeur dans une image binaire.
Editions de liens dynamiques : plutôt que de reporter le chargement jusqu’au temps d’exécution, on reporte l’édition des liens.
Cette caractéristique peut être étendue à des actualisations de la bibliothèque. On peut remplacer une bibliothèque par une nouvelle version. Ce système est également connu comme bibliothèques partagées.
91 A - ENISO 2009 / 2010
Recouvrement Afin qu’un processus puisse être plus
grand que la quantité de mémoire que l’on lui a allouée, on utilise le recouvrement
L’idée est de maintenir en mémoire seulement les instructions et les données nécessaires à chaque moment donné ; quand on besoin d’autres instructions, elles sont chargées dans l’espace précédemment occupé par des instructions qui ne sont plus nécessaires.
101 A - ENISO 2009 / 2010
Swapping Un processus doit être en mémoire pour être
exécuté. Cependant, un processus peut être transféré temporairement de la mémoire principale à une mémoire auxiliaire et être ensuite ramené en mémoire pour continuer son exécution.
Quand une tranche de temps expire, le gestionnaire de la mémoire commencera à transférer en mémoire auxiliaire (swap out) le processus qui vient de finir et à ramener (swap in) un autre processus à l’espace mémoire libéré
111 A - ENISO 2009 / 2010
Swapping
121 A - ENISO 2009 / 2010
Swapping Normalement, un processus transféré en mémoire auxiliaire est
ramené au même espace mémoire qu’il occupait précédemment.
Cette restriction est imposée par la méthode de liaison d’adresses :
Moment de chargement déplacement impossible
Moment de l’exécution déplacement possible
Le système assure la maintenance d’une file d’attente des processus prêts constituée de tous les processus dont les images mémoire se trouvent dans la mémoire auxiliaire ou dans la mémoire principale et qui sont prêts à être exécutés.
131 A - ENISO 2009 / 2010
Contraintes Si on désire transférer un processus, on
doit être sûr qu’il est complètement inactif. Les entrées/sorties en cours sont d’un intérêt particulier. Si un processus attend une opération d’E/S ? ? ?
Deux possibilités : ne jamais transférer un processus avec des E/S
en cours exécuter les opérations d’E/S seulement dans
les buffers du système.
141 A - ENISO 2009 / 2010
Allocation contigüe de la MC
La mémoire est habituellement divisée en deux partitions, une pour le système d’exploitation résident et l’autre pour les processus utilisateur
Mémoire centrale MC
151 A - ENISO 2009 / 2010
Allocation d’une partition unique
La totalité d’un processus est chargé dans une seule partition :
on doit protéger le code et les données du système contre les modifications (accidentelles) des processus utilisateur. On a besoin également de protéger les processus utilisateur entre eux.
registre translation et registre limite Le registre de translation contient la valeur de
l’adresse physique la plus petite ; le registre limite contient l’étendue des adresses logiques.
161 A - ENISO 2009 / 2010
Allocation d’une partition unique
171 A - ENISO 2009 / 2010
Allocation de plusieurs partitions subdiviser la mémoire en un certain nombre de partitions
fixes chaque partition peut contenir exactement un processus le degré de multi-programmation est limité par le nombre
de partitions quand une partition est libre, on sélectionne un processus à
la queue d’entrée et on le charge dans la partition libre. Quand le processus se termine, la partition devient
disponible pour un autre processus. Le SE maintient une table indiquant les partitions mémoire
disponibles et celles qui sont occupées. Au début, toute la mémoire est disponible pour les processus utilisateur, et elle est considérée comme un grand bloc libre
181 A - ENISO 2009 / 2010
Les partitions de taille fixe
Tout espace inutilisé dans la partition est perdu car on ne cumule pas des espaces appartenant à des partitions voisines : c’est un problème de fragmentation interne.
La description de la mémoire nécessite la connaissance des adresses d'implantation de chaque partition. Pour chaque partition : Un registre de base renferme l'adresse de début, Un registre limite permet de pointer la dernière adresse.
Quand le processus se termine, la partition redevient libre pour un autre processus.
Les partitions de taille fixe Système
d’exploitation
Partition 4
0
@1
Partition 3
Partition 2
Partition 1
Espa
ce
utili
sate
ur
@2
@3
@4
Partition N
….
@N
Processus 1
Processus 2
Processus 3
@ de base
@ limite
Les partitions de taille variable Considérer la mémoire disponible pour les utilisateurs comme un
seul espace, Plutôt que de diviser la mémoire en un ensemble fixe de partitions,
un SE peut choisir de placer des processus dans tout emplacement de mémoire inutilisé quel qu'il soit.
Quand un processus arrive en demandant de la mémoire, nous recherchons un espace suffisamment grand pour ce processus. Nous allouons seulement la quantité de mémoire nécessaire, laissant le reste disponible pour satisfaire des futures requêtes.
Si l’espace est trop grand, il est découpé en deux : une partie est allouée au processus, l'autre est renvoyée à l'ensemble des espaces libres.
inconv: une demande peut ne pas être satisfaite faute d'un espace de taille suffisante, bien que la somme des tailles des zones libres soit supérieure à cette demande : c’est la fragmentation externe.
Exemple
221 A - ENISO 2009 / 2010
Exemple : Exécution
231 A - ENISO 2009 / 2010
Algorithmes d’allocation Quand un processus arrive, on cherche dans cet
ensemble un trou suffisamment grand pour le processus : Allocation dynamique de la mémoire.
Les stratégies employées pour sélectionner un trou libre à partir d’un ensemble de trous sont :
First-fit (le premier trouvé) : alloue le premier trou suffisamment grand.
Best-fit (le meilleur choix) : alloue le trou le plus petit suffisamment grand.
Worst-fit (le plus mauvais choix) : alloue le trou le plus grand.
241 A - ENISO 2009 / 2010
First fit
Algorithme First-Fit (liste_espace_libre, taille_demandée)Liste_espace_libre : vecteur [1..N] de espaceDébut
i 1Tant que ( (i<=N) et (liste_espace_libre[i].taille < taille_demandée) )Faire
i i + 1Fin faireSi (i>N) alors erreur ;Si non charger (taille_demandée, liste_espace_libre[i])Fin si
fin
Espace = structure{adresse_debut : entier ;taille : entier ;état : logique}
MPV = vecteur [1..NMAX] de espace
251 A - ENISO 2009 / 2010
Fragmentation de la MC
Fragmentation externe
Au fur et à mesure que les processus sont chargés et supprimés de la mémoire ; l’espace de mémoire libre est découpé en petites parties. La fragmentation externe se présente quand il existe un espace mémoire total suffisant pour satisfaire une requête, mais il n’est pas contigu.
261 A - ENISO 2009 / 2010
Fragmentation interne
La figure suivante illustre un autre problème rencontré avec le schéma d’allocation de plusieurs partitions. Si nous allouons exactement le bloc requis, il reste un trou de 2 octets. Ainsi la mémoire allouée peut être légèrement plus grande que la mémoire requise : cette différence est appelée fragmentation interne.
271 A - ENISO 2009 / 2010
Algorithme worst-Fit (liste_espace_libre, taille_demandée)Liste_espace_libre : vecteur [1..Nmax] de espace
max , indice_max : entierDébut
Max liste_espace_libre[1].taille indice_max 1
Pour i 1 jusqu’à N fairesi (liste_espace_libre[i].taille >max)
alors max liste_espace_libre[i].taille indice_max i
fin siFin pour
Si (max < taille_demandée) alors erreur ;Si non
charger (taille_demandée, liste_espace_libre[indice_max])Fin si
fin 281 A - ENISO 2009 / 2010
Algorithme Best-Fit (liste_espace_libre, taille_demandée)Liste_espace_libre : vecteur [1..Nmax] de espace
best, indice_best : entier
Débutbest 100000000000indice_best 0Pour i 1 jusqu’à N faire
si (liste_espace_libre[i].taille >= taille_demandée) alors
si ( liste_espace_libre[i].taille <= best) alorsbest liste_espace_libre[i].taille indice_best i
fin sifin si
Fin pour
Si (indice_best = 0) alors erreur ;Si non
charger (taille_demandée, liste_espace_libre[indice_best])Fin si
fin291 A - ENISO 2009 / 2010
Exercice d’application On considère un système dont l'espace mémoire compte
1 Mo. On décide d'effectuer une partition fixe de cet espace mémoire en 3 partitions de tailles respectives 600 Ko, 300 Ko, 100 Ko.
Donner les états de la mémoire dans le cas suivant : L'ordonnanceur est en SJF et le mode d'allocation
utilise un algorithme de Best Fit.
File
des
dem
ande
s Processus Taille mémoire
Temps d’arrivée
Durée d’exécution
A 200 Ko 0 35B 400 Ko 10 65C 400 Ko 30 35D 80 Ko 40 25E 200 Ko 50 55F 300 Ko 70 15
SE
300 Ko
100 Ko
600 Ko
t = 0SE
100 Ko100 Ko
600 Ko
A 35
t = 10SE
100 Ko100 Ko
200 Ko
A 25
B 65
t = 30SE
100 Ko100 Ko
200 Ko
A 5
B 45
t = 35SE
300 Ko
100 Ko
200 Ko
B 40
t = 40SE
300 Ko
20 Ko
200 Ko
B 35
D 25
t = 50SE
100 Ko20 Ko
200 Ko
B 25
D 15
E 55
t = 65SE
100 Ko100 Ko
200 Ko
B 10
E 40
t = 75SE
100 Ko100 Ko
300 Ko
F 15
E 30
t = 70SE
100 Ko100 Ko
200 Ko
B 5
E 35
t = 90SE
100 Ko100 Ko
200 Ko
C 35
E 15
t = 105SE
300 Ko
100 Ko
200 Ko
C 20
t = 125SE
300 Ko
100 Ko
600 Ko