Architecture des systèmes : La mémoire

La mémoire physique est découpée en pages de taille fixe.
Les processus sont eux aussi découpés en pages.
Les pages du processus sont chargées dans des pages libres de la mémoire.
Inutile d’avoir une zone contiguë de mémoire pour charger tout le processus.



On connaît l’emplacement des pages grâce à une table de correspondance.



Adresse des pages :



Inconvénient majeur : la taille d’un processus est limité à la taille de la mémoire physique.

La mémoire virtuelle

On découpe (on «pagine») les processus ainsi que la mémoire réelle en pages de quelques Ko (1, 2 ou 4 Ko généralement).

L’encombrement total du processus constitue l’espace d’adressage ou la mémoire virtuelle.
Cette mémoire virtuelle réside sur le disque.
A la différence de la pagination on ne charge qu’un sous ensemble de pages en mémoire.
Ce sous ensemble est appelé l’espace physique.
Ceci permet d’exécuter des programmes qui ne tiennent pas entièrement en mémoire centrale.



Lorsque la mémoire virtuelle est utilisée, les adresses virtuelles sont envoyées au MMU (Memory Management Unit) qui traduit les @ virtuelles en @ physiques.
L’@virtuelle comporte 2 champs : 1 champ N° de page virtuelle et 1 champ offset
L’@physique comporte 2 champs : 1 champ N° de page physique et 1 champ offset

Pour plus de détails sur les @ et les offset, je vous renvois à l’Annexe1

Les pages sont les petites unités de l’espace d’adressage virtuel.
Les cases sont les petites unités correspondantes de la mémoire physique.
Les pages et les cases sont de même taille.
Les transferts se font par pages entières.

La segmentation

Le programme est divisé en segments par le compilateur.
Un segment est un espace d’adressage linéaire formé d’adresses contiguës.
Un segment correspond à une partie logique du programme : segment de code, segment de données, segment de pile.

Adresses des segments :