Guide complet de la gestion de la mémoire virtuelle
Classé dans Informatique
Écrit le en
avec une taille de 5,18 KB
Structures de matériel et de contrôle
- Toutes les références à la mémoire dans un processus sont des adresses logiques devant être traduites en adresses physiques lors de l'exécution.
- Un processus peut être divisé en plusieurs parties (pages ou segments) qui n'ont pas besoin d'être contiguës au cours de la mise en œuvre.
- Cela est possible par la combinaison de la traduction dynamique d'adresses et l'utilisation de tables de pages ou de segments.
Exécution d'un programme
- Le système d'exploitation charge dans la mémoire principale seulement quelques fragments du programme, y compris celui contenant le point d'entrée.
- L'ensemble résident du processus est la partie du processus réellement présente dans la mémoire principale.
- Si le processeur trouve une adresse absente de la mémoire principale, il génère une interruption.
- Le système d'exploitation place alors le processus dans l'état verrouillé.
- Le fragment manquant est chargé en mémoire principale :
- Émission d'une requête de lecture E/S sur le disque.
- Exécution d'un autre processus pendant l'opération E/S.
- Une fois l'opération terminée, une interruption est émise et le système d'exploitation fait passer le processus à l'état Prêt.
Avantages de l'approche
- Optimisation de la mémoire : Plus de processus peuvent être conservés en mémoire principale car seuls quelques fragments sont chargés.
- Efficacité du processeur : Au moins un processus parmi ceux en mémoire sera prêt à fonctionner.
- Mémoire virtuelle : Le programmeur n'a plus à se soucier de la taille totale de son programme par rapport à la mémoire physique.
Types de mémoire
- Mémoire réelle : Mémoire vive (RAM).
- Mémoire virtuelle : Permet une multiprogrammation efficace et supprime les contraintes de taille de la mémoire principale.
Le phénomène de « Thrashing » (écrasement)
- Si un fragment est éjecté juste avant son utilisation, il doit être ramené immédiatement.
- Trop d'échanges conduisent au thrashing.
- Le processeur consomme alors plus de temps à échanger des fragments qu'à exécuter des instructions.
Principe de localité
- Les références aux données et au code tendent à se regrouper.
- Pour de courtes périodes, seuls quelques fragments sont nécessaires.
- Permet des prédictions intelligentes sur les besoins futurs du processus.
Support de la mémoire virtuelle
- Matériel : Support de la pagination et de la segmentation.
- Logiciel : Gestion du mouvement des pages/segments entre mémoire principale et secondaire.
Gestion des pages
- Chaque processus possède sa propre table des pages.
- Chaque entrée contient le numéro de cadre et des bits d'état (présence, modification).
- Les tables de pages sont stockées en mémoire virtuelle et une partie doit être en mémoire principale lors de l'exécution.
Buffer de traduction (TLB)
- Le TLB (Translation Lookaside Buffer) est un cache spécial pour les entrées de la table des pages.
- Il accélère la traduction d'adresses en évitant des accès mémoire supplémentaires.
- En cas d'absence dans le TLB, le processeur consulte la table des pages.
Taille de la page
- Une grande page augmente la fragmentation interne.
- Une petite page augmente la taille des tables de pages.
- Le choix de la taille influence le taux de défauts de page et l'efficacité du TLB.
Segmentation
- Permet de considérer la mémoire comme plusieurs espaces d'adressage logiques.
- Simplifie la gestion des structures de données, le partage et la protection.
Combinaison pagination et segmentation
- Chaque segment est divisé en pages de taille fixe.
- Utilise une table de segments et plusieurs tables de pages par processus.
Protection et partage
- Utilisation d'un système d'anneaux de protection (privilèges).
Algorithmes de gestion de la mémoire
- Politique de lecture : Pagination à la demande ou anticipation (pré-chargement).
- Politiques de remplacement :
- Optimale : Remplace la page qui ne sera pas utilisée avant le plus longtemps.
- LRU (Least Recently Used) : Remplace la page la moins récemment utilisée.
- FIFO (First-In, First-Out) : Remplace la page la plus ancienne.
- Horloge (Clock) : Utilise un bit d'utilisation pour simuler le LRU.
- Gestion de l'ensemble résident : Allocation fixe ou variable selon les besoins du processus.
- Contrôle de charge : Détermine le nombre de processus en mémoire pour éviter le thrashing.