Vous êtes sur la page 1sur 13

Chapitre IV

Gestion de la mmoire centrale


1. Introduction
Un programme ne peut s'excuter que si ses instructions et ses donnes (au moins
partiellement) sont en MC.
Si l'on dsire excuter plusieurs programmes simultanment, il faut que chacun soit charg
dans la mmoire.
Le gestionnaire de la mmoire est le module du SE qui se charge de la gestion de la mmoire
principale dans le but d'augmenter le rendement global du systme. Pour cela, il faut qu'il y ait
suffisamment de processus (tches) en mmoire pour assurer une bonne rpartition entre les
E/S et la demande de CPU.

Mcanismes d'adressage
Situation:
- Un programme contient l'instruction i := 10 (o i est une variable globale)
- L'adresse mmoire de la variable i est inconnue au moment de la compilation
- Le compilateur gnre pour i une adresse relative au dbut du module compil
- depl i sera modifie ultrieurement par lditeur de liens pour prendre en compte dautres
modules
Cas 1: systme mono programm
- le chargeur dtermine l'adresse de chargement b du programme
- le chargeur remplace depli par b+depli
- nom de cette opration: rimplantation statique (car elle prcde l'excution)

Cas 2: systme multiprogramm

P2 a d tre dplac en mmoire principale: la rimplantation statique nest pas suffisante


Dans un contexte de multiprogrammation, la rimplantation doit tre faite durant l'excution
=> Rimplantation dynamique

on distingue deux classes de mcanismes de rimplantation dynamique:


- rimplantation dynamique par registre de base conduit une gestion de la mmoire par
zones
- rimplantation dynamique par pagination conduit une gestion de la mmoire par pages
La rimplantation dynamique conduit distinguer adresse relle et adresse virtuelle
adresse virtuelle (ou adresse logique): adresse avant rimplantation
adresse relle (ou physique): adresse aprs rimplantation
espace virtuel: ensemble des adresses virtuelles que l'on peut former
2. Objectifs de la gestion de la mmoire
Le gestionnaire de la mmoire doit viser les objectifs suivants :
2.1. La rallocation
Le SE alloue chaque programme une zone mmoire.
Chaque fois qu'un utilisateur demande le lancement d'un programme, le systme doit trouver
une place dans la mmoire pour le charger : il y a donc rorganisation des programmes en
mmoire.
2.2. La protection
La coexistence de plusieurs programmes en mmoire ncessite la protection de chaque espace
mmoire vis--vis des autres. Par consquent, un processus P1 ne peut accder l'espace d'un
processus P2 que s'il est autoris.
2.3. Le partage
Parfois, il est utile de partager un espace mmoire entre plusieurs processus. Ainsi, le sous-
systme de gestion de la mmoire doit autoriser des accs contrls sans compromettre la
protection
3. Fonctions d'un gestionnaire de la mmoire
Un gestionnaire de la mmoire doit assurer les fonctions suivantes :
a. Garder trace du statut de chaque portion de la mmoire (libre ou alloue).
b. Dterminer une politique d'allocation de la mmoire qui permet de dcider qui doit avoir
de la mmoire, combien et pour combien de temps ?
c. Dterminer une technique d'allocation qui permet d'allouer de l'espace un processus.
d. Dterminer une politique de libration mmoire (Rcuprer l'espace allou un
processus lorsque celui-ci se termine).
e. Traiter le va-et-vient (swapping) entre le disque et la mmoire principale lorsque cette
dernire ne peut pas contenir tous les processus.
f. Possder un mcanisme de calcul de l'adresse physique (absolue) car, en gnral, les
adresses gnres par les compilateurs et les diteurs de liens sont des adresses relatives ou
virtuelles.
En gnral, pour ne pas ralentir l'accs la mmoire le calcul des adresses est ralis par le
matriel. Comme nous allons le voir, les techniques de gestion de la mmoire sont trs
conditionnes par les caractristiques du systme (mono programm ou multiprogramm) et du
matriel (registres de base et limite, MMU=Memory Management Unit).
4. Stratgie d'allocation de la mmoire
4.1. Allocation par zone unique
La mmoire est divise en deux zones contigus. L'une est alloue en permanence la partie
rsidente du SE. La deuxime zone permet de reloger un processus usager ou du systme non
rsident.
L'algorithme d'allocation peut tre dcrit par l'organigramme suivant :
Debut

oui
Tpgm>Tespace Chargement
usager impossible

non
Charger le programme
Excuter

Job termin
Librer espace allou

La gestion de la mmoire est trs simple


Inconvnient : la mauvaise utilisation de l'espace mmoire. Par ailleurs, la taille des
programmes est limite par la taille de l'espace utilisateur.
Le va-et-vient (swapping)
Le va-et-vient est mis en uvre lorsque tous les processus
ne peuvent pas tenir simultanment en MC. On doit alors
en dplacer temporairement certains sur une mmoire
provisoire, en gnral, une partie rserve du disque (swap
area ou backing store), quil faudra donc ramener
rgulirement en MC afin de les excuter. Le mouvement des processus entre la MC et le disque
est appel va-et-vient.
4.2. Allocation par partitions multiples
La MC est partage en rgions spares ou partitions mmoires. Chaque partition dispose de
son espace d'adressage. Le partitionnement de la mmoire peut tre statique ou dynamique.

4.2.1. Partitions multiples statiques


L'espace mmoire est divis a priori en partitions de tailles fixes. Le nombre et la taille de
chaque partition sont fixs la gnration du systme. L'tat (statut) et l'attribut de chaque
partition sont dtenus par une table de description des partitions (Partition Description Table
: PDT).
Les programmes sont placs dans une file d'attente (une file par partition ou une file unique)

Le programme est li une partition donne et ne peut s'excuter en dehors de celle-ci. Chaque
nouveau processus est plac dans la file d'attente de la plus petite partition qui peut le contenir.

Le programme n'est li aucune partition et peut tre charg et excut dans la premire
partition libre et de taille suffisante.
Deux stratgies pour l'allocation:
algorithme Best Fit (allocation de la plus petite zone satisfaisant la requte)
algorithme First Fit (allocation de la premire zone trouve satisfaisant la requte)
Fragmentation interne et externe de la mmoire
Soit un programme de taille M et une partition P de taille N. si la partition P est alloue au
programme Prog avec N>M, alors un espace de P reste inutilis : fragmentation interne.
Si toute partition libre Pi de taille Ni avec Ni<M alors, le programme Prog ne peut tre charg
dans aucune partition libre
Si la somme des espaces non utilises est suffisante pour lallocation de Prog, on parle donc de
la fragmentation externe.
4.2.2. Partitions multiples variables
Afin d'amliorer la stratgie de la gestion mmoire partitions fixes, on partitionnera la
mmoire dynamiquement selon la demande. A chaque programme est alloue une partition
exactement gale sa taille. Quand un programme termine son excution, sa partition est
rcupre par le systme pour tre alloue un autre programme compltement ou
partiellement selon la demande.
Dans une organisation partitions variables, le placement des programmes dans les partitions
se fait suivant diffrentes stratgies. Pour cela, le gestionnaire de la mmoire doit garder trace
des partitions occupes et des partitions libres. Une solution consiste maintenir deux tables
dont l'une est destine aux partitions occupes et l'autre aux partitions libres.
Libration
La libration se produit quand un processus est vacu de la MC. On marque alors le bloc
libre et on le fusionne ventuellement avec des blocs adjacents.
Supposons que X soit le bloc qui se libre, on a les schmas de fusion suivants :

Etat de la mmoire
Le systme garde la trace des emplacements occups de la mmoire par l'intermdiaire d'une
table de bits ou bien d'une liste chane.
Exemple
A B C D

On peut conserver l'tat des blocs mmoire grce une table de bits. Les units libres tant
notes par 0 et celles occupes par un 1.
1111000111111100110

On peut reprsenter la mmoire par une liste chaine des segments libre et occups. Un segment est
un ensemble dunits dallocations conscutives. Un lment de la liste est compos de 4 champs qui
indiquent :
- Ltat libre (ou hole) H ou occup P du segment.
- L'adresse de dbut du segment.
- La longueur du segment.
- Et un pointeur sur l'lment suivant de la liste.

P L P P L P L

0 4 7 12 14 16 18

4 3 5 2 2 2 1

Liste chaine
Les stratgies de placement
Dans une organisation partitions variables, le placement des programmes dans les partitions se fait
selon un certain nombre de stratgies possibles.

a) stratgie du "premier qui convient" (First Fit = FF)


Dans ce cas, la table des partitions libres est trie par ordre des adresses croissantes. Pour l'allocation
d'une partition donne, on commence par la partition libre de plus basse adresse et la recherche continue
jusqu' la rencontre de la premire partition dont la taille est au moins gale celle du programme en
attente.

b) Stratgie de "la zone libre suivante" (Next Fit = NF)


Elle est identique au prcdente mais elle mmorise en plus la position de l'espace libre trouv. La
recherche suivante commencera partir de cette position et non partir du dbut.

c) Stratgie du "meilleur qui convient" (Best Fit = BF)


Dans ce cas, la table des partitions libres est trie par tailles croissantes. Pour l'allocation d'une partition
donne, on commence par la partition libre de plus petite taille. La recherche continue jusqu' la
rencontre de la premire partition dont la taille est au moins gale celle du programme en attente.
Il a tendance remplir la mmoire avec de petites zones libres inutilisables.

d) Stratgie du "pire qui convient" (Worst Fit = WF)


Dans ce cas, on alloue au job la partition de plus grande taille. On doit parcourir toute la table sauf si
elle est trie. Les simulations ont montr que cette stratgie ne donne pas de bons rsultats.

4.2.3. Le compactage
Le compactage de mmoire a comme but de runir les espaces inutiliss en une seule partition en
dplaant tous les processus vers un sens.

4.3. La pagination
Principe:
lespace virtuel du processus est divis en tranches de taille fixe appeles pages
la mmoire est divise en tranches de la taille d'une page, appeles cases (en anglais frame)
une table des pages en mmoire principale tablit la correspondance page case

Adresse mmoire physique


Adresse logique

P d f d
CPU
p MC
Index

(P) : numro de page


(d) : dplacement dans la page
(f) :adresse de base de chaque page Table des pages
dans la mmoire physique Correspondance d'adresses pagines
Exemple : Soit un job compos de 4 pages, les pages peuvent tre charges des blocs (pages) physiques
non ncessairement contigus :
0 Page2
Page0 0 3
1 Page1
Page1 1 1
2
Page2 2 0
3 Page0
Page3 3 5
4
Programme Table des pages 5 Page3
MC

Adresse logique vs adresse physique


Exemple
Soit un systme pagin dont la taille d'une page est de 1000 octets. Considrons les 3 jobs suivants :

N job 1 2 3
Taille 2000 3000 1000

0
0 SE 0
5 1000
1000 SE 1
6 2000
2000 2518 2 Job2 (page0)
3000
0 3
518 2 4000
1000 4 Job2 (page1)
4 5000
2000 5 Job1 (page0)
2108 7 6000
3000 6 Job1 (page1)
7000
0 7108 7 Job2 (page2)
8 8000
1000 8 Job3 (page0)
9000
9
10000

L'adresse 2108 (page2, 108) correspond l'adresse physique pagine (7, 108).
L'adresse 518 (page0, 518) correspond l'adresse physique pagine (2, 518).
L'emplacement logique 2108 correspond l'emplacement physique 7108=7*1000+108.
L'emplacement logique 518 correspond l'emplacement physique 2518=2*1000+518.
Remarque : la gestionnaire de la mmoire pagine limine le problme de la fragmentation externe.
Cependant, le problme de la fragmentation interne demeure entier. Si un job ncessite n pages et 1
octet, on doit lui allouer (n+1) blocs (pages physique).
la gestion par pages multiplie par deux le nombre d'accs la mmoire
pour viter ce surcot, un mcanisme acclrateur a t introduit TLB (Translation Look-aside
Buffer): temps d'accs 5-10 ns (au lieu de plusieurs centaines de ns pour l'accs la mmoire)
traduction d'adresse:
recherche d'une page d'abord dans le TLB (pas d'accs la mmoire)
si pas trouv, recherche dans la table des pages (en mmoire)
TLB: mmoire associative
mmoire petite, ne pouvant contenir qu'un sous-ensemble des pages d'un processus
recherche en parallle (temps constant)
gestion des couples (pages,cases) contenus dans la mmoire: voir algorithmes de remplacement de
pages
lorsque le scheduler change de processus, toute la TLB est invalide
lors du changement d'une entre de la table des pages, l'entre correspondante de la TLB est invalide

4.4. La segmentation
La segmentation concerne la division du programme en modules appels segments, chaque segment
correspondant une entit logique, telle une procdure ou un bloc de donnes, indpendante des autres
segments.
La segmentation permet au programmeur de dfinir plusieurs espaces d'adresses logiques spars.
Le SE se charge de placer en mmoire les segments ncessaires l'excution des programmes prts
utiliser le CPU. Le systme doit donc savoir o sont stocks les diffrents segments. Pour cela, il organise
et il gre un ensemble de tables de segments, une table par job, concernant les adresses de chargement
des segments de chaque programme.

Implantation de la segmentation
La transformation d'adresses logiques en adresses physiques est ralise selon le schma suivant :

Table des segments


s
Index
limite base
Adresse logique

Adresse
s d
CPU mmoire
physique MC
O
+
>
N

Erreur d'adressage

Translation adresse logique/physique


dans un systme segment
Exemple :
1400
limite base segment0
procdure pile 2400
0 1000 1400
segment0 segment3
1 400 6300 3200
programme table des 2 400 4300 segment3
principal symboles 4300
3 1100 3200
segment2 sgment1 segment2
Table des segments 4700

Espace d'adressage 6300


logique segment1
6700

MC
L'adresse logique (2, 53) correspond l'adresse physique 4353=4300+53.
L'adresse logique (0, 1222) gnre une erreur d'adressage, alors que l'adresse logique (3, 852) correspond
l'adresse physique 4052=3200+852.
Remarque : la segmentation ncessite l'allocation mmoire de tous les segments d'un programme,
comme dans le cas de la pagination la diffrence que les segments sont de taille variables.

5. La mmoire virtuelle
Les programmes dont la taille est suprieure la taille de la mmoire physique ne peuvent tre
compltement chargs dans celle-ci. La technique de mmoire virtuelle permet de laisser penser que la
machine a plus de mmoire qu'elle n'en a rellement, elle permet l'excution d'un processus
partiellement charg en mmoire.
Les avantages de cette technique peuvent se rsumer comme suit :
La taille d'un programme n'est pas conditionne par la taille de la mmoire physique.
A un instant T, l'utilisateur monopolise un espace restreint de la mmoire, ce qui permet la coexis-
tence de plusieurs portions de programmes simultanment.

5.1. Pagination la demande


La pagination la demande est similaire au systme de pagination avec swapping ("va-et-vient").

Bit de validit
0
0 A 0 3 v 1
1 B 1 i 2 A B
2 C 2 5 v 3 A
C D
3 D 3 i 4
4 E 4 i 5 C E F
5 F 5 8 v 6
programme table des pages 7
8 F Unit de swapping
MC
Lorsqu'on rfrence une page qui n'est pas prsente en MC, on dit qu'on a un dfaut de page. Dans ce
cas, le SE doit lire la page demande dans la mmoire secondaire et la placer dans la MC. Il faut donc
enlever une ancienne page de la MC pour placer la page nouvellement rfrence. Il existe plusieurs
algorithmes permettant de choisir la page enlever.

Le remplacement de pages
Le choix de la page victime lors du traitement d'un dfaut de page pour un processus peut se faire doit
localement ce processus, soit globalement sur l'ensemble des processus. Dans le premier cas, la page
victime doit forcment appartenir l'espace d'adressage du processus en dfaut de page. Dans le second
cas, la page victime peut appartenir l'espace d'adressage de n'importe lequel des processus prsents
en MC. Ce dernier cas est le plus souvent mis en uvre car il donne de meilleurs rsultats quant
l'utilisation de la MC.

p droits r w M V adresse disque N de case


x physique

Bit validation vrai si la page est prsente en MC

Bit modification vrai si la page a t modifie en MC

Droits d'accs la page en lecture/criture/excution

Format d'une entre de la table des pages

Lorsqu'une adresse logique <p, d> est gnre par le CPU :


1. accs l'entre p de la table des pages du processus actif et test de la valeur du bit de validation V ;
2. si la valeur du bit V est 0, alors il y a dfaut de page ;
3. une case libre est recherche. S'il n'y a pas de cases libres, une page victime est choisie. Si la valeur
du bit M pour cette page est 1, alors une opration d'E/S est lance pour sauvegarder la page victime
;
4. une opration d'E/S est lance pour charger la page dans la MC dans la case libre ou libre ;
5. la table des pages du processus est mise jour, c'est--dire que le bit de validation V passe 1 et le
champ numro de case est renseign avec l'adresse d'implantation de la case abritant maintenant la
page p ;

Algorithmes de remplacement de page


Quel critre utiliser pour dcider quelles sont les anciennes pages qui seront retires de la mmoire et
copies sur disque pour faire de la place ?
C'est en rponse cette question qu'un certain nombre d'algorithmes, appels algorithmes de
remplacement de pages, ont t dfinis qui tendent plus ou moins vers l'objectif optimal. Ce sont les
stratgies :
FIFO (First In, First Out) : ordre chronologique de chargement ;
LRU (Least Recently Used) : la moins rcemment utilise, ordre chronologique d'utilisation ;
Algorithme optimal.
On donne un exemple de chaque stratgie sur la chaine de rfrences 8, 1, 2, 3, 1, 4, 1, 5, 3, 4, 1, 4, 3 o
chaque chiffre i correspond un accs la page i. dans chaque exemple, on suppose une MC compose
de 3 case initialement vides.

Remplacement FIFO
Avec cet algorithme, c'est la page la plus anciennement charge qui est remplace. Une implmentation
de cet algorithme peut tre ralise en conservant dans la table des pages, la date de chargement de
chaque page. La page choisie est alors celle pour laquelle la date de chargement est la plus ancienne.

8 1 2 3 1 4 1 5 3 4 1 4 3
case1 8 8 8 3 3 3 3 5 5 5 1 1 1
case2 1 1 1 1 4 4 4 3 3 3 3 3
case3 2 2 2 2 1 1 1 4 4 4 4
D D D D D D D D D D
10 dfauts de page

Remplacement LRU
Le principe de l'algorithme LRU consiste remplacer la page dont l'utilisation est la plus recule dans
le temps. Il associe chaque page le temps de sa dernire utilisation. Quand une page doit tre
remplace, l'algorithme choisit la page qui n'a pas t utilise pour une grande priode.

8 1 2 3 1 4 1 5 3 4 1 4 3
case1 8 8 8 3 3 3 3 5 5 5 1 1 1
case2 1 1 1 1 1 1 1 1 4 4 4 4
case3 2 2 2 4 4 4 3 3 3 3 3
D D D D D D D D D
9 dfauts de page

Remplacement optimal
Cet algorithme remplace la page qui ne va pas tre utilise pendant la plus grande priode de temps.
C'est l'algorithme qui provoque un nombre minimum de dfauts de page, d'o le nom Optimal.
Cet algorithme est cependant difficile implmenter, car il ncessite une information a priori sur la
chaine de rfrences des pages.

8 1 2 3 1 4 1 5 3 4 1 4 3
case1 8 8 8 3 3 3 3 3 3 3 3 3 3
case2 1 1 1 1 1 1 5 5 5 1 1 1
case3 2 2 2 4 4 4 4 4 4 4 4
D D D D D D D
7 dfauts de page
6. Protection de la mmoire
Dans les systmes monoprogramms, pour protger le code et les donnes du SE des changements que
peuvent provoquer les programmes des utilisateurs, il y a un registre limite qui contient l'adresse
partir de laquelle commencent les instructions et donnes des programmes des utilisateurs. Chaque
adresse (instruction ou donne) gnre par un programme est compare avec le registre limite. Si
l'adresse gnre est la valeur du registre, on l'accepte, sinon on refuse l'accs et on interrompt le
processus avec un message d'accs illgal de mmoire. Toute rfrence la mmoire doit tre vrifie,
ce qui implique un ralentissement du systme.
Il y a plusieurs stratgies pour implanter le registre limite. L'une d'entre elles consiste utiliser une
valeur fixe, enregistre au niveau matriel ou au dbut du dmarrage du systme. Cependant si la
valeur choisie est trop petite et que le SE grandisse, il se retrouvera dans une zone non protge, ou au
contraire, l'espace pour les programmes serait diminu. Une solution est l'existence d'un registre
variable pour permettre d'initialiser diffrentes valeurs d'adresses au registre limite. Celui-ci peut tre
charg par le SE qui utilise des privilges spciaux, c'est dire, on excute le SE en mode moniteur.

Registre limite

Dans les systmes multiprogramms, il faut protger chaque programme contre les fautes ventuelles
des autres utilisateurs : possibilit de dborder dans la zone mmoire d'un autre utilisateur. Il suffit
donc de vrifier que toute adresse calcule pendant l'excution soit interne l'intervalle des adresses
alloues au programme excutant.
La solution consiste comparer, l'aide d'un dispositif spcial, l'adresse effective (physique) calcule
avec les adresses extrmes de la zone alloue au programme, stockes dans des registres bornes. Bien
sr, seul le SE a le droit de changer le contenu des registres base et des registres borne.
Si un programme rfrence une adresse l'extrieur des ses bornes, le dispositif de vrification gnre
une interruption alertant le systme d'exploitation. On force donc chaque processus n'utiliser que les
positions de mmoire qui lui sont alloues.
MC

Base B Registre de base

Adresse rfrence Dep Dplacement par rapport B

Programme P sup Sup Registre borne (limite


suprieure du programme)

Pour trouver l'adresse rfrence, on


calcule l'adresse effective (physique)
AE = B +Dep, et on teste si B AE Sup

Protection par registre borne

Vous aimerez peut-être aussi