Introduction
La mémoire a toujours été une ressource indispensable d'un système. Elle
est partagée entre tous les processus. La mémoire est une suite non-non
structurée d'octets, le système d'exploitation ne connait donc pas la
structure des informations en mémoire (qui dépendspendent de chaque
processus).
Importance de la mémoire
Les instructions d'un programme peuvent contenir des adresses mémoires
en argumentargument, il est doncainsi nécessaire qu'un processus se trouve
entièrement en mémoire pour pouvoir s'exécuter. Une gestion efficace de
cette mémoire est doncalors primordiale.
Types de mémoires
Registres
Les registres sont des zones mémoires attachées au processus, leur
taille est généralement très réduite (de l'ordre de quelques Ko) mais
sont extrènementextrêmement rapide,rapides, pouvant généralement être accédé en un seul
cycle d'horloge du processeur.
Mémoire vive (RAM)
La mémoire vive est la mémoire princiapleprincipale du système. Elle est la
ressource importante à gérer et est souvent présente en quantité (entre
2deux et 64Go)64 Go). Elle est standardisée aux normes DDR3 et DDR4. Elle est
plus lente par rapport au CPU (il faut parfois plusieurs cycles
d'horloge pour récupérer une information), le CPU doit donc attendre ou
mettre la donnée en cache. CependantCependant, cette ressource reste beaucoup
plus rapide qu'un disque (SSD ou HDD).
Mémoire cache
La mémoire cache a pour but d'améliorer les performances générales du
système en plancantplanquant en mémoire plus rapide les données souventfréquemment
demandées.
Il existe 3trois niveaux de mémoire cache, le premier niveau sert à
stocker tempoerairementtemporairement des instructions et données. Les 2deux autres
niveaux sont présents entre la mémoire RAM et la mémoire cache de
premier niveau.
Mémoire virtuelle
La mémoire virtuelle est une mémoire simulée par le système. Elle
utilise le disque dur comme ramRAM additionelle.additionnelle. Elle est seulement
limitée par la taille du disque durdur, mais elle est très lente.
Isolation de la mémoire
Il est essentiel que chaque processus aieait une zone mémoire réservée pour
éviter des problèmes de sécurité et d'intégrité des données.
Un processus ne peut donc pas écrire dans l'espace mémoire d'un autre.
Si S'il essayeessaye, on aura une "Segmentation Fault". La mémoire n'est doncde ce
fait pas partagéese entre les processus sauf lorsque cela est
explicitement demandé. (Voir Mémoire
partagée pour plus
d'informations).
Translation d'adresse
Lorsqu'un programme est chargé, il est placé entièrement en mémoire à une adresse de départ. Son espace d'adressage est défini et les instructions du programme font référence à l'adresse 0.
La translation peut être effectuée à 3 moments :
AÀ la compilation (inexistant aujourd'hui), on met lesaddressesadresses physiques dans le programme compilé ;
– Au chargement (l'addresseadresse de départ est choisie lors du chargement
du processus par le système d'exploitation) ;
- A l'exécution, lors de l'exécution des
intstructions,instructions, cela demande un hardware précis et est utilisé par la segmentation.
Types d'adresses
On parle d'adresse logique pour parler de l'addresseadresse présente dans
les programmes (qui se réfèrent à l'adresse 0).
On parle en revanche d'adresse physique pour parler d'une case mémoire adressable de la mémoire RAM.
La conversion entre l'adresse logique et l'adresse physique est faite par le Memory Management Unit (MMU) qui est un composant matériel spécialisé dans l'opération de translation.