Introduction
La mémoire centrale, appelée mémoire RAM dans le monde des PCs et core memory dans le monde Unix, fait partie des ressources indispensables à l'exécution des programmes.
Sa gestion consiste à l'attribuer au(x) processus actif(s).
C'est dans la mémoire centrale que sont stockés les éléments du processus, soit de façon permanente (différents indicateurs, pointeurs), soit parfois de façon temporaire (code, données).
De nombreuses méthodes permettent d'allouer la mémoire, en fonction de critères variés.
Elles ont toutes pour objectif de rendre le système le plus performant et le plus efficace.
Dans la plupart des ordinateurs actuels, une mémoire d'accès beaucoup plus rapide (appelée mémoire cache), plus chère et de taille plus réduite, est ajoutée à la mémoire centrale.
Elle contient en général une partie du code du programme en cours d'exécution.
On trouve maintenant aussi des ordinateurs possédant de la mémoire cache destinée aux données.
Il est aussi possible que le programme (code et/ou données) oscille entre la mémoire principale et la mémoire secondaire (disque) d'accès beaucoup plus lent mais de beaucoup plus grande capacité.
Plusieurs notions interviennent dans ce chapitre :
-
mémoire réelle et mémoire virtuelle : la mémoire réelle est celle qui correspond à la mémoire physiquement installée, les adresses étant des adresses physiques.
Au contraire, la mémoire virtuelle est l'espace des adresses accessibles théoriquement par un processeur.
Elle ne dépend que de la dimension des registres et des bus d'adresses.
Actuellement, sur la plupart des ordinateurs, la mémoire virtuelle peut atteindre plusieurs giga-octets.
-
allocation statique ou dynamique : lorsque l'allocation mémoire est statique, un espace mémoire définitif est attribué au processus pour tout le temps de son exécution, que celle-ci se déroule en une seule phase ou par étapes successives.
A la limite, l'espace mémoire peut même être attribué une fois pour toutes au programme (voir plus loin, adressage absolu).
-
mémorisation contiguë ou dispersée : un programme peut être stocké dans un espace contigu de mémoire ou au contraire fragmenté en plusieurs morceaux dispersés dans la mémoire principale.
-
adressage relatif : si une instruction utilise ce type d'adressage, cela signifie que la partie de l'adresse de l'instruction représente un déplacement (c'est-à-dire un nombre d'octets) par rapport à un point de repère (par exemple le début du programme ou d'un segment de code).
Dans ce cas, une information complémentaire est nécessaire au moment de l'exécution du programme : l'adresse absolue de ce point de repère.
Pour cela, on utilise généralement un registre de base qui contient cette valeur.
Au moment du calcul de l'adresse effective par le processeur, la valeur du registre de base est ajoutée à celle du déplacement.
Dernière mise à jour : 07/07/2001