Gestion de la mémoire centrale

RESUME

Dans le cadre d’un système multiprogrammé, plusieurs programmes sont chargés dans la mémoire centrale, qui doit donc être partagée entre ceux-ci. Ce partage engendre deux grands problèmes à résoudre :

 tout d’abord, il faut définir un espace d’adressage séparé pour chaque processus, allouer de la place en mémoire centrale pour le code et les données de ce processus et protéger cet espace d’adressage vis-à-vis des accès des autres processus.

 Par ailleurs, le nombre de processus nécessaires à une occupation optimale du processeur va très vite rendre insuffisante la quantité de mémoire physique disponible sur la machine. Une gestion de la mémoire visant à ne charger que les parties utiles à un instant donné de chaque processus est donc mise en place pour palier ce problème : c’est le concept de mémoire virtuelle.

L’ensemble des adresses du programme exécutable, générées par le processeur au moment de l’exécution des instructions, est appelé espace d’adresses logiques ou virtuelles.
L’ensemble des adresses physiques réellement occupées par le programme exécutable suite au chargement en mémoire centrale est appelé espace d’adresses physiques.
Pour que le processeur puisse accéder à la mémoire centrale, il est nécessaire de convertir les adresses logiques générées par le processeur en adresses physiques, placées sur le bus et présentées au dispositif de sélection de la mémoire physique. Cette conversion est réalisée par un dispositif matériel la MMU (Memory Management Unit).

Dans le mécanisme de pagination, l’espace d’adressage du programme est découpé en morceaux linéaires de même taille appelés pages. L’espace de la mémoire physique est lui-même découpé en morceaux linéaires de même taille appelés case ou cadre de page. La taille d’une case est égale à la taille d’une page.
Dans ce contexte, charger un programme en mémoire centrale consiste à placer les pages dans n’importe quelle case disponible.
L’espace d’adressage du processus étant découpé en pages, les adresses générées dans cet espace d’adressage sont des adresses paginées, c’est-à-dire qu’un octet est repéré par son emplacement relativement au début de la page à laquelle il appartient. L’adresse d’un octet est donc formée par le couple < numéro de page p à laquelle appartient l’octet, déplacement d relativement au début de la page p >.

Pour toute page, il faut donc connaître dans quelle case de la mémoire centrale celle-ci a été placée. Cette correspondance s’effectue grâce à une structure particulière appelée la table de pages.

Le principe de la mémoire virtuelle consiste à ne charger à un instant donné en mémoire centrale que la partie couramment utile de l’espace d’adressage des processus.
Puisque les pages d’un espace d’adressage de processus ne sont pas toutes chargées en mémoire centrale, il faut que le processeur puisse détecter leur éventuelle absence au moment où s’effectue la conversion de l’adresse logique vers l’adresse physique. Chaque entrée de la table des pages comporte alors un champ supplémentaire, le bit validation V, qui est à 1 si la page est effectivement présente en mémoire centrale, 0 sinon.

Lorsqu’un processus tente d’accéder à une page de son espace d’adressage qui n’est pas en mémoire centrale, la MMU accède à la table des pages pour effectuer la conversion de l’adresse logique vers l’adresse physique et teste la valeur du bit de validation. Si la valeur du bit V est à 0, cela signifie que la page n’est pas chargée dans une case et donc la conversion ne peut pas être réalisée. Une trappe appelée défaut de page est levée qui suspend l’exécution du processus puis initialise une opération d’entrées-sorties afin de charger la page manquante en mémoire centrale dans une case libre. Les pages constituant l’espace d’adressage du processus sont stockées dans une zone particulière du disque communément appelée zone de swap.

Séances 7 et 8 : Allocation mémoire et mémoire virtuelle

Cours

ED



Documents joints:
info document
(PDF - 58.9 kio)
info document
(PDF - 2 Mio)