Vous êtes sur la page 1sur 3

Université de Blida 1 Système d’exploitation

Département d’informatique 2ème année LMD

CHAPITRE 3 : GESTION DE LA MEMOIRE CENTRALE

1. Introduction

Tout processus existant dans le système a besoin d'espace mémoire pour y charger son programme
et ses données. Car le programme d'un processus ne peut être exécuté que s'il est chargé en
mémoire centrale (principale). Le processeur prélève les instructions à exécuter à partir de la
mémoire centrale.

2. Définition

Une mémoire est un circuit permettant d’enregistrer, de conserver et de restituer des informations.
Elle se présente sous la forme d’un ensemble de cases. Chaque case possède une adresse et peut
contenir un mot de données d’une longueur m qui est toujours une puissance de 2.

3. Adresse relative et adresse absolue

Au moment de la compilation, le compilateur génère des adresses relatives (appelées aussi logiques)
comptées à partir de 0. Ces adresses relatives sont comprises entre 0 et MAX-1. MAX étant la taille
du programme exécutable résultat de la compilation. Ceci signifie, a priori, qu’un programme
exécutable doit être chargé à l’adresse 0 de la mémoire centrale pour pouvoir s’exécuter.

En réalité, l’adresse de chargement d’un processus ne peut être connue qu’au moment du
chargement. Lors du chargement, le système d’exploitation se charge de trouver une (ou plusieurs)
zone mémoire libre suffisamment grande pour pouvoir "loger" le processus à charger. Les adresses
occupées par le processus sont appelées adresses absolues (ou aussi physiques).

Au moment de l’exécution, et à chaque accès à la mémoire centrale, les adresses relatives


manipulées par le processus sont transformées en adresses absolues. Cette transformation est l’une
des fonctions prises en charge par le système d’exploitation.

4. Gestion de la mémoire

C'est un module système dont la fonction est de gérer la mémoire principale. Il doit garder en
permanence des informations concernant l'espace libre et occupé de la mémoire. Le gestionnaire
alloue de la mémoire aux processus qui en ont besoin et récupère la mémoire libérée par un
processus. La mémoire principale étant limitée, le gestionnaire ne peut pas charger tous les
processus en mémoire centrale. Pour satisfaire les besoins des processus, le gestionnaire doit
décharger certains programmes de la mémoire principale et charger d'autres programmes à partir du
disque. Il est à noter que les programmes déchargés de la mémoire principale sont sauvegardés sur
disque (mémoire secondaire ou auxiliaire). Les principales fonctions d'un gestionnaire de la mémoire
sont les suivantes :

1/3
 Allouer / libérer l'espace de la mémoire principale,
 Charger / décharger (sauvegarder) les programmes des processus,
 Protéger les programmes et les données des processus,
 Partager des programmes et/ou des données entre plusieurs processus.

La correspondance entre adresses virtuelles (logiques) et adresses réelles (physiques) est effectuée
par un dispositif matériel que l'on appelle unité de gestion mémoire (MMU : Memory Management
Unit).

5. Allocation contigüe de la mémoire

a) Partition fixe : La mémoire réservée aux utilisateurs est divisée en un ensemble de partitions. Le
nombre et la taille des partitions sont fixés à l'avance (Les partitions peuvent être égales ou non).

b) Partition variable : Initialement, l’espace mémoire réservée aux utilisateurs constitue une seule
partition. Quand un nouveau processus doit être chargé, on lui alloue une zone contiguë de taille
suffisamment grande pour le contenir. Le nombre et les tailles des partitions varient au cours du
temps.

c) La fragmentation : On distingue deux types de fragmentations :


Interne : On dit qu'il y a fragmentation interne quand un programme de taille n est chargé dans une
partition de taille m avec m >n : Fragmentation interne = taille de la partition - taille du programme
ou (m - n).
Externe : On dit qu'il y a fragmentation externe, si un programme de taille n est en attente de la
mémoire alors qu'il existe un espace mémoire total suffisant pour satisfaire la requête (demande) du
programme mais cet espace n'est pas contigu : Il est constitué de plusieurs petites partitions (la
somme des tailles des partitions libres >= taille du programme).

d) Les techniques d’allocation :

Algorithme First-fit (Le premier trouvé) : On alloue au processus le premier trou suffisamment grand.

Algorithme Best-fit (Le meilleur choix) : On alloue au processus le trou le plus petit suffisamment
grand ; c’est à dire celui qui provoquera la plus petite miette possible. Cet algorithme nécessite le
parcours de toute la liste des espaces libres.

Algorithme Worst-fit (Le plus mauvais choix) : On alloue au processus le trou le plus grand. Cet
algorithme nécessite le parcours de toute la liste des espaces libres.

e) Partition en zones siamoises : Dans un système de zones siamoises, la mémoire est allouée en
unités qui sont des puissances de 2. Lorsque la mémoire doit être allouée à un processus, ce dernier
reçoit une unité de mémoire qui est la plus petite puissance de 2 supérieure à la taille du processus.
S’il n’existe aucune unité de cette taille, la plus petite allocation disponible supérieure au processus
est divisée en deux unités égales (siamoises). La division se poursuit avec l’une des unités siamoises
jusqu’à ce qu’une unité d’allocation de la taille appropriée soit créée.

2/3
6. Allocation non contigüe

a) Pagination : Sur un système utilisant la pagination, la mémoire est divisée en n blocs de taille fixe
appelés cadres de page. Les processus sont divisés en blocs appelés pages de la même taille que les
cadres de pages. Les pages du processus sont chargées à des pages libres de la mémoire non
nécessairement contigus.

b) Segmentation : Comme la pagination, la segmentation divise un programme en un certain


nombre de blocs appelés segments mais de tailles variables.

7. La mémoire virtuel

La mémoire virtuelle est une technique grâce à laquelle on peut considérer la mémoire centrale
comme de taille infinie. En réalité, les programmes sont stockés sur disque dur et ils sont chargés en
mémoire centrale au fur et à mesure que cela est possible.

Le principe de la mémoire virtuelle est couramment implémenté avec la pagination à la demande;


c'est-à-dire que les pages des processus ne sont chargées en MC que lorsque le processeur demande
à y accéder.

Lorsque qu'un processus tente d'accéder à une page de son espace d'adressage qui n'est pas en
mémoire centrale, il se produit alors un défaut de page : c'est un déroutement qui oblige le
processeur à suspendre l'exécution du programme en cours pour lancer une entrée/sortie qui charge
la page manquante en mémoire centrale dans une case libre.
Lors d'un défaut de page, la page manquante est chargée dans une case libre. La totalité des cases de
la mémoire centrale peut être occupée : il faut donc libérer une case de la mémoire physique. Le
système d'exploitation utilise un algorithme pour choisir une case à libérer.

Les algorithmes de remplacement

FIFO : Cet algorithme mémorise dans une file FIFO les pages présentes en mémoire, de la page la plus
ancienne à la page la plus récente. Lorsqu'un défaut de page se produit, il retire la plus ancienne.

LRU: (Least Recently Used): Avec l'algorithme LRU, la page la moins récemment utilisée est retirée.

Optimal : L'algorithme optimal consiste à retirer la page qui sera référencée le plus tard possible
dans le futur : la page pour laquelle la prochaine référence est la plus éloignée dans le temps.

Horloge : Dans cet algorithme, les pages en mémoire sont mémorisées dans une liste circulaire en
forme d'horloge : Un indicateur pointe sur la page la plus ancienne selon FIFO. Lorsqu'un défaut de
page se produit, la page pointée par l'indicateur est examinée. Si le bit de référence R de la page
pointée par l'indicateur est à 0, la page est retirée, la nouvelle page est insérée à sa place et
l'indicateur avance d'une position. Sinon, il est mis à 0 et l'indicateur avance d'une position. Cette
opération est répétée jusqu'à ce qu'une page, ayant R égal à 0 soit trouvée. À noter que lorsqu'une
page est ajoutée, on met son bit de référence à 1.

3/3