31
1 Gestion de la Mémoire Centrale Ecole Nationale d’Ingénieurs de Sousse Principes généraux des systèmes d’exploitation 1 1 A - ENISO 2009 / 2010

gestion memoire

Embed Size (px)

DESCRIPTION

gestion memoire

Citation preview

Page 1: gestion memoire

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

Page 2: gestion memoire

Cycle de vie D’un programme

21 A - ENISO 2009 / 2010

Page 3: gestion memoire

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

Page 4: gestion memoire

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

Page 5: gestion memoire

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

Page 6: gestion memoire

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

Page 7: gestion memoire

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

Page 8: gestion memoire

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

Page 9: gestion memoire

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

Page 10: gestion memoire

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

Page 11: gestion memoire

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

Page 12: gestion memoire

Swapping

121 A - ENISO 2009 / 2010

Page 13: gestion memoire

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

Page 14: gestion memoire

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

Page 15: gestion memoire

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

Page 16: gestion memoire

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

Page 17: gestion memoire

Allocation d’une partition unique

171 A - ENISO 2009 / 2010

Page 18: gestion memoire

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

Page 19: gestion memoire

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.

Page 20: gestion memoire

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

Page 21: gestion memoire

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.

Page 22: gestion memoire

Exemple

221 A - ENISO 2009 / 2010

Page 23: gestion memoire

Exemple : Exécution

231 A - ENISO 2009 / 2010

Page 24: gestion memoire

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

Page 25: gestion memoire

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

Page 26: gestion memoire

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

Page 27: gestion memoire

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

Page 28: gestion memoire

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

Page 29: gestion memoire

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

Page 30: gestion memoire

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

Page 31: gestion memoire

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