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.

Entrées associées :