Chapitre 4 Gestion de la mémoire centrale
Chapitre 4 : Gestion de la mémoire centrale
1. Objectifs d'un gestionnaire de la mémoire
Le mécanisme de gestion de la mémoire par le SE a pour objectifs :
• La gestion de la mémoire (allocation, libération) : La mémoire est partagée entre le système
d'exploitation et plusieurs processus. Il se pose alors le problème suivant : comment organiser la mémoire de
manière à faire cohabiter efficacement plusieurs processus ?
• La protection des processus : la cohabitation de plusieurs processus en mémoire doit assurer leur
protection, il ne faut pas permettre à un processus d'un utilisateur d'adresser la mémoire des processus des
autres utilisateurs. Quelle est donc, la meilleure manière d'assurer la protection des processus contre les
intrusions des autres ?
• Réalisation de la correspondance entre
adresse physique et adresse virtuelle : étant donné
que les processus sont chargés à différentes
adresses, les adresses relatives générées par les
compilateurs et les éditeurs de liens sont
différentes des adresses physiques, alors comment
réaliser la translation d'adresses ?
• Le partage d’un espace mémoire entre
plusieurs processus est parfois utile ; Comment
alors assurer un tel partage ?
Types de mémoires
2. Modes de partage de la mémoire
Système d’exploitation [Lic 2 SI] 1
Chapitre 4 Gestion de la mémoire centrale
3.1 Allocation contiguë avec Partition unique
La mémoire est divisée en deux sections, une pour le programme de
l’utilisateur et une autre pour le SE.
3.2 Allocation contiguë avec Plusieurs Partitions
❖ Politique d’allocation
Pour optimiser l'utilisation de tout ordinateur il est rapidement devenu indispensable de pouvoir charger
plusieurs programmes en mémoire (multiprogrammation).
L'espace des adresses physiques est découpé en zones disjointes appelées partitions, et on peut construire ainsi
des espaces d'adresses disjoints pour plusieurs processus qui sont soit :
• Allouées pour un programme
• Vides (libre)
Lors de sa création, un processus dispose de l'un de ces espaces
libre. Si un autre processus est présent en mémoire en même
temps que lui, celui-ci disposera d'un autre espace disjoint du
précédent.
Les programmes vont manipuler des adresses logiques et le
matériel de gestion de mémoire les convertira en adresses
physiques. Il faut donc un mécanisme permettant à partir des
adresses logiques de calculer les adresses physiques. Une des
méthodes les plus utilisées est celle des registres de base qui
existent dans presque tous les ordinateurs. Le mécanisme est le
suivant :
- Les programmes manipulent des adresses logiques, relatives au début du programme à l'adresse 0 ;
- Un registre spécial de l'unité centrale, appelé registre de base, contient l'adresse physique du début du
programme dans la mémoire ;
- Chaque fois que l'on fait une référence à la mémoire, on ajoute à l'adresse virtuelle trouvée dans le
programme le contenu du registre de base.
Il existe deux variantes de cette approche :
1. Partitions Statiques : les partitions sont de taille fixe, le degré de la multiprogrammation est fixé par le
nombre de partitions.
2. Partitions dynamiques : les partitions sont de tailles variables ; un processus ne peut se loger que dans une
partition de taille égale ou supérieur à sa taille
❖ Problème de fragmentation
Cette méthode d’allocation laisse inutilisées
certaines zones de la mémoire : la partie d'une
partition non utilisée par un processus est nommée
fragmentation interne. Ceci est dû au fait qu'il est
très difficile que tous les processus rentrent
exactement dans la taille de la partition. Les
partitions qui ne sont pas utilisées, engendrent la
fragmentation externe.
Système d’exploitation [Lic 2 SI] 2
Chapitre 4 Gestion de la mémoire centrale
❖ Stratégies de placement
Permet de décider de l’endroit de la mémoire à allouer pour un processus. L'efficacité de différentes stratégies
peut être mesurée au moyen des critères suivants :
• La rapidité du choix de l’emplacement
• La fragmentation externe qui en résulte (elle doit être minimale)
• L’utilisation globale de l’espace mémoire de la zone (elle doit être maximale)
Les trois stratégies les plus utilisées sont :
• Première zone libre (first-fit) : exploration des zones, choix de la première de taille suffisante
• Le meilleur ajustement (best-fit) : la plus petite zone de taille suffisante (fragment minimal)
• Le plus grand résidu (Worst-fit) : zone la plus grande choisie
Exercice d’application
Soit une mémoire de 256 K-octet le système d’exploitation occupe 40 Koctets. Schématiser le scénario
d’allocation pour un ordonnancement FIFO et en appliquant les stratégies first-fit, best-fit et worst-fit pour les
processus suivants :
Processus Besoin en mémoire Temps d’exécution
1 90K 10
2 100K 5
3 30K 20
4 70K 8
5 80K 15
3.3 Pagination
Pour obtenir une plus grande souplesse dans la gestion de la mémoire centrale, l'espace virtuel de chaque
programme est découpé en blocs, tous de taille identique appelé page. L'espace physique est découpé en blocs,
dites cadre de page ou case, de même taille que les pages de l'espace virtuel. Chaque page peut alors être
placée dans un cadre de page quelconque. Le mécanisme de pagination du matériel assure la traduction des
adresses de mémoire virtuelle en une adresse de mémoire physique, de façon à retrouver la contiguïté de cette
mémoire virtuelle.
Le mécanisme de gestion qui permet de passer d'une adresse virtuelle à une adresse physique dans un système
de pagination passe par la table des pages.
Système d’exploitation [Lic 2 SI] 3
Chapitre 4 Gestion de la mémoire centrale
3.4 Segmentation
Chaque processus dispose de son propre espace mémoire constitué d'un ensemble de segments, chaque
segment étant un espace linéaire de taille limitée. Ils correspondent à des parties logiques déterminées par le
programmeur ou par le compilateur. Un segment regroupe en général des objets de même nature (instructions,
données ou constantes, partagées ou propres, etc...). Un emplacement de cet espace est désigné par un couple
<s, d> où s désigne le segment, et d un déplacement à l'intérieur du segment.
3.5 Mémoire virtuelle
Le va-et-vient est utilisé lorsque tous les processus ne
peuvent pas tenir simultanément en mémoire. On doit
alors déplacer temporairement certains d'entre eux sur
une mémoire provisoire, en général une partie réservée
du disque (swap area).
❖ Le principe de la pagination à la demande
Elle consiste à mettre en mémoire physique que les
pages dont les processus ont besoin pour leur exécution
courante, les autres étant conservées sur mémoire
secondaire (disque). Lorsqu'un processus accède à une page qui n'est pas en mémoire physique (indicateur de
présence non positionné), l'instruction est interrompue, et un déroutement au système est exécuté. On dit qu'il
y a défaut de page. Le système doit alors allouer une case à cette page, lire la page depuis la mémoire
secondaire dans cette case et relancer l'exécution de l'instruction qui pourra alors se dérouler jusqu'à son terme.
Lorsqu'un défaut de page se produit, s'il y a une case libre, le système peut allouer cette case. Si aucune case
n'est libre, il est nécessaire de réquisitionner une case occupée par une autre page. On dit qu'il y a
remplacement de page. Plusieurs algorithmes de remplacement de pages ont été proposés qui diffèrent par le
choix de la page remplacée. Si celle-ci a été modifiée, il faut auparavant la réécrire en mémoire secondaire.
❖ Algorithmes de remplacement de Page
• L'algorithme chronologique de chargement (FIFO first in- first out) consiste à remplacer la page qui est
en mémoire depuis le plus longtemps. Sa mise en œuvre est simple, puisqu'il suffit d'avoir une file des
numéros de pages dans l'ordre où elles ont été amenées en mémoire.
Système d’exploitation [Lic 2 SI] 4
Chapitre 4 Gestion de la mémoire centrale
Exemple :
Considérant une mémoire de taille 6 k-octets avec une taille de page de 1 k-octets ; le système d’exploitation
occupe 2pages. Pour la chaîne de référence suivante : 1.2.3.4.5.3.4.1.6.7.8.7.8.7.8.9.7.8.9.5.4.5.4.2
Combien de défauts de pages génère l’algorithme FIFO.
1 2 3 4 5 3 4 1 6 7 8 7 8 7 8 9 7 8 9 5 4 5 4 2
S/D
• L'algorithme optimal (MIN) : consiste à choisir la page qui sera accédée dans un avenir le plus lointain
possible. Evidemment un tel algorithme n'est pas réalisable pratiquement, puisqu'il n'est pas possible de
prévoir les accès futurs des processus. Il a surtout l'avantage de la comparaison : c'est en fait celui qui
donnerait la meilleure efficacité.
Exemple :
Considérant une mémoire de taille 6 k-octets avec une taille de page de 1 k-octets ; le système d’exploitation
occupe 2pages. Pour la chaîne de référence suivante : 1.2.3.4.5.3.4.1.6.7.8.7.8.7.8.9.7.8.9.5.4.5.4.2
Combien de défauts de pages génère l’algorithme MIN.
1 2 3 4 5 3 4 1 6 7 8 7 8 7 8 9 7 8 9 5 4 5 4 2
S/D
• L'algorithme de fréquence d'utilisation (LFU least frequently used) consiste à remplacer la page qui a été
la moins fréquemment utilisée. Il faut maintenir une liste des numéros de page ordonnée par leur fréquence
d’utilisation. Cette liste change lors de chaque accès mémoire, et doit donc être maintenue par le matériel.
Exemple :
Considérant une mémoire de taille 6 k-octets avec une taille de page de 1 k-octets ; le système d’exploitation
occupe 2pages. Pour la chaîne de référence suivante : 1.2.3.4.5.3.4.1.6.7.8.7.8.7.8.9.7.8.9.5.4.5.4.2
Combien de défauts de pages génère l’algorithme LFU.
1 2 3 4 5 3 4 1 6 7 8 7 8 7 8 9 7 8 9 5 4 5 4 2
S/D
• L'algorithme chronologique d'utilisation (LRU least recently used) consiste à remplacer la page qui n'a pas
été utilisée depuis le plus longtemps. Il faut maintenir une liste des numéros de pages ordonnée par leur
dernier moment d'utilisation. Cette liste change lors de chaque accès mémoire, et doit donc être maintenue par
le matériel.
Système d’exploitation [Lic 2 SI] 5
Chapitre 4 Gestion de la mémoire centrale
Exemple :
Considérant une mémoire de taille 6 k-octets avec une taille de page de 1 k-octets ; le système d’exploitation
occupe 2pages. Pour la chaîne de référence suivante :1.2.3.4.5.3.4.1.6.7.8.7.8.7.8.9.7.8.9.5.4.5.4.2
Combien de défauts de pages génère l’algorithme LRU.
1 2 3 4 5 3 4 1 6 7 8 7 8 7 8 9 7 8 9 5 4 5 4 2
S/D
3. Protection de la mémoire
Dans la stratégie d’allocation avec plusieurs partitions il faut implanter des mécanismes de protection pour
permettre à plusieurs programmes de s'exécuter sans envahir l'espace d'adresses d'autre programme. Pour cela
il existe deux registres qui indiquent la plage des adresses disponibles pour chaque programme : registre limite
et le registre base.
Quand on lance un processus, on charge dans le registre de base l’adresse absolue du début de la partition, et
dans le registre limite la longueur de la partition. Pendant l'exécution d'une instruction, les adresses relatives
sont translatées en adresses physiques en ajoutant le contenu du registre de base à chaque adresse mémoire
référencée, on vérifie ensuite si les adresses ne dépassent pas le registre limite afin d'interdire tout accès en
dehors de la partition courante.
4. Partage de code.
Notons que le partage de données entre deux processus peut être obtenu de différentes façons. Par exemple, il
peut être obtenu au niveau des pages de leur mémoire linéaire, en allouant la même case de mémoire physique
aux deux processus, au même instant. Il peut être obtenu au niveau des hyper-pages de leur mémoire linéaire,
en allouant la même table des pages à deux hyper-pages de ces processus. Sans pagination, il peut être obtenu
au niveau segment en allouant la même zone de mémoire physique à deux segments de chacun des deux
processus.
Système d’exploitation [Lic 2 SI] 6