Académique Documents
Professionnel Documents
Culture Documents
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)
oui
Tpgm>Tespace Chargement
usager impossible
non
Charger le programme
Excuter
Job termin
Librer espace allou
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.
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
P d f d
CPU
p MC
Index
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 :
Adresse
s d
CPU mmoire
physique MC
O
+
>
N
Erreur d'adressage
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.
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.
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