Guide complet sur la gestion de la mémoire informatique
Classé dans Informatique
Écrit le en
français avec une taille de 10,46 KB
Exigences de gestion de la mémoire
a) Relocalisation : pouvoir mettre en place un processus dans un domaine différent de la mémoire une fois qu'il a été rechargé à l'exécution.
b) La protection : le système doit être en mesure d'éviter les interférences (accidentelles ou intentionnelles) des signaux entre les processus, de sorte qu'un processus ne puisse pas se référer à des emplacements de mémoire occupés par un autre.
c) Le partage (comportement) : lorsque plusieurs processus ont besoin d'accéder à la même mémoire, la gestion de la mémoire doit être en mesure de permettre cet accès sans compromettre la protection mentionnée au paragraphe b).
d) L'organisation logique : ce point sera discuté tout au long de cette question. Au fil du temps, il y a eu de nombreuses techniques pour instaurer cette organisation, comme la segmentation qui sera discutée plus tard.
e) L'organisation physique : celle-ci sera étudiée en lien avec la hiérarchie de la mémoire.
Hiérarchie de la mémoire
On connaît sous le nom de pyramide de hiérarchie de la mémoire l'organisation des niveaux de mémoire des ordinateurs. Son but est d'obtenir une vitesse d'exécution élevée au coût d'une mémoire moins rapide, en se fondant sur le principe de localité de référence.
Les points de base liés à la mémoire peuvent être résumés comme suit :
- Quantité
- Vitesse
- Coût
La question de la quantité est simple : plus il y a de mémoire disponible, plus on peut en utiliser. La vitesse optimale de la mémoire est celle à laquelle le processeur peut fonctionner, évitant ainsi les temps d'attente entre les calculs pour récupérer des opérandes ou stocker des résultats. Enfin, le coût de la mémoire ne doit pas être excessif pour permettre la construction d'appareils abordables.
Comme on pouvait s'y attendre, ces trois facteurs sont concurrents ; il faut donc trouver un équilibre. Les affirmations suivantes sont valables :
- Plus le coût est élevé, plus le temps d'accès est court.
- Un coût plus élevé permet une plus grande capacité.
- Une plus grande capacité implique souvent une vitesse inférieure.
On cherche alors à obtenir une capacité mémoire suffisante avec une vitesse répondant à la demande de performance, sans que le coût soit excessif. Grâce au principe de proximité de référence, il est possible d'utiliser un mélange de différents types de mémoire pour atteindre une performance proche de celle de la mémoire la plus rapide.
Les niveaux de la hiérarchie mémoire
- Niveau 0 : Registres
- Niveau 1 : Mémoire cache
- Niveau 2 : Mémoire vive (RAM)
- Niveau 3 : Disque dur (avec mécanisme de mémoire virtuelle)
- Niveau 4 : Réseaux (actuellement considérés comme un niveau supérieur de la hiérarchie)
Partitions à limites de taille fixe
Dans ce cas, lorsqu'un processus doit être chargé en mémoire :
- Si sa taille est égale ou inférieure à une partition définie (par exemple 8 Mo dans un schéma), il est placé dans une partition libre. Si toutes les partitions sont occupées, le système d'exploitation (OS) sortira un processus d'une partition pour charger un autre processus prêt à être exécuté.
- S'il est plus grand que la partition (plus de 8 Mo dans l'exemple), seule une partie du processus sera chargée (les programmeurs conçoivent alors les programmes pour n'en charger qu'une partie) et, chaque fois qu'une autre partie est requise, le système d'exploitation se charge de son chargement.
Partitions de tailles fixes différentes
Dans ce cas, il y a deux façons d'attribuer un processus à une partition :
- Chargement dans la plus petite partition adaptée : Il existe une file d'attente pour chaque taille de partition. Problème : certaines files peuvent être pleines alors que d'autres sont vides faute de processus de taille correspondante.
- Chargement optimisé : Les processus sont organisés en une seule file d'attente. Lorsqu'une partition se libère, on recherche dans la file le plus grand processus capable d'y entrer. Problème : certains processus peuvent attendre longtemps car d'autres répondent mieux aux critères de taille.
Partitions dynamiques
Afin de surmonter les difficultés du partitionnement statique, la solution des partitions dynamiques a été développée. Avec ce système, les partitions sont variables en nombre et en longueur. Lorsqu'un processus est chargé, on lui alloue exactement la quantité de mémoire nécessaire.
Cette méthode est efficace au début, mais mène à terme à une fragmentation de la mémoire (petits trous inutilisables). Pour résoudre cela, plusieurs solutions existent :
- Algorithmes de localisation : pour choisir le meilleur emplacement pour un processus en attente.
- Algorithmes de remplacement : pour choisir quel processus retirer de la mémoire pour en localiser un nouveau.
- Compactage : déplacement des processus pour les rendre contigus et libérer de plus grands blocs de mémoire.
Mémoire réelle et mémoire virtuelle
Concept de la mémoire réelle ou primaire : C'est là que les programmes et processus sont exécutés. C'est l'espace réel existant pour les processus en cours. Bien que plus coûteuse que la mémoire secondaire, son accès est beaucoup plus rapide. Seule la mémoire cache est plus rapide que la mémoire principale.
Concept de la mémoire virtuelle : Ce terme est associé à deux concepts :
- L'utilisation du stockage secondaire pour offrir l'illusion d'avoir plus de RAM que la réalité physique du système.
- Offrir aux applications l'illusion qu'elles sont seules dans le système, leur permettant d'utiliser l'espace d'adressage complet.
Gestion de l'espace d'adressage
- Adresse physique : position réelle dans la mémoire principale.
- Adresse logique : référence à un emplacement mémoire indépendante de l'affectation actuelle des données. Elle subit des transformations par le processeur (via la MMU) avant de devenir une adresse physique.
- Adresse relative : type d'adresse logique où la position est exprimée par rapport à un point connu.
NOTE : Les programmes utilisateur manipulent toujours des adresses virtuelles et ne voient jamais les adresses physiques réelles.
L'Unité de Gestion de Mémoire (MMU)
La MMU fait partie du processeur. Ses fonctions sont :
- Convertir les adresses logiques émises par les processus en adresses physiques.
- Vérifier que la conversion est possible.
- Vérifier que le processus a la permission d'accéder à l'adresse demandée.
Fragmentation de la mémoire
La fragmentation est la mémoire gaspillée par les méthodes de gestion. On en distingue deux types :
- Fragmentation externe : il existe assez d'espace total pour satisfaire une exigence, mais les blocs ne sont pas contigus.
- Fragmentation interne : la mémoire allouée est légèrement plus grande que nécessaire ; cet espace inutilisé reste interne à la partition.
La pagination
C'est une technique où l'espace mémoire physique est divisé en sections de taille égale appelées cadres de page (frames). Les programmes sont divisés en unités logiques appelées pages, de même taille que les cadres. On peut ainsi charger une page dans n'importe quel cadre disponible.
Chaque processus possède une table de pages (PMT - Page Map Table) pour contrôler les pages en mémoire. Lorsqu'une adresse virtuelle est utilisée, elle passe par la MMU avant d'atteindre le bus mémoire.
Caractéristiques de la pagination :
- L'espace d'adressage logique peut être non contigu.
- La mémoire physique est divisée en cadres (frames) et la mémoire logique en pages.
- Le système maintient les informations sur les cadres libres.
- Pour lancer un programme de n pages, il faut trouver n cadres libres.
- Elle produit de la fragmentation interne.
Avantages et inconvénients de la pagination
Avantages :
- Exécution partielle d'un programme (chargement à la demande).
- Les pages n'ont pas besoin d'être contiguës.
- Contrôle facilité par la taille fixe des pages.
- Transparence totale pour l'utilisateur.
- Libère les développeurs des contraintes de taille physique.
- Élimine la fragmentation externe.
Inconvénients :
- Augmentation du coût matériel et logiciel pour la translation d'adresses.
- Consommation de ressources (mémoire pour les tables PMT, temps CPU).
- Apparition de la fragmentation interne (ex: un programme de 5 Ko dans des pages de 4 Ko occupera 2 pages, soit 8 Ko, laissant 3 Ko inutilisés).
Segmentation et segmentation paginée
Segmentation : La mémoire est divisée en blocs de longueur variable appelés segments. L'adresse virtuelle se compose d'un numéro de segment et d'un déplacement. Si un segment référencé n'est pas en mémoire, une erreur de segmentation se produit. Elle facilite la protection mais peut mener à la fragmentation externe.
Segmentation paginée
Il s'agit d'une combinaison des deux méthodes pour cumuler leurs avantages. Au lieu de traiter un segment comme une unité contiguë, il est divisé en pages. Chaque segment possède sa propre table de pages. Les segments sont généralement des multiples de la taille des pages. Cela permet de ne pas avoir toutes les pages d'un segment en mémoire réelle en même temps, même si elles sont contiguës en mémoire virtuelle.