Gestion de la mémoire dans le système d'exploitation : contiguë, échange, fragmentation

Qu'est-ce que la gestion de la mémoire?

Gestion de la mémoire est le processus de contrôle et de coordination de la mémoire de l'ordinateur, attribuant des parties appelées blocs à divers programmes en cours d'exécution pour optimiser les performances globales du système.

C'est la fonction la plus importante d'un système d'exploitation qui gère la mémoire primaire. Il aide les processus à effectuer des allers-retours entre la mémoire principale et le disque d'exécution. Il aide le système d'exploitation à garder une trace de chaque emplacement mémoire, qu'il soit alloué à un processus ou qu'il reste libre.

Pourquoi utiliser la gestion de la mémoire ?

Voici les raisons d’utiliser la gestion de la mémoire :

  • Il vous permet de vérifier la quantité de mémoire qui doit être allouée aux processus qui décident quel processeur doit obtenir de la mémoire à quel moment.
  • Suit chaque fois que l’inventaire est libéré ou non alloué. Selon cela, le statut sera mis à jour.
  • Il alloue de l'espace aux routines d'application.
  • Il faut également s'assurer que ces applications n'interfèrent pas les unes avec les autres.
  • Aide à protéger différents processus les uns des autres
  • Il place les programmes en mémoire afin que la mémoire soit utilisée au maximum.

Techniques de gestion de la mémoire

Voici quelques techniques de gestion de la mémoire les plus cruciales :

Allocation unique contiguë

C'est la technique de gestion de mémoire la plus simple. Dans cette méthode, tous les types de mémoire de l'ordinateur, à l'exception d'une petite partie réservée au système d'exploitation, sont disponibles pour une application. Par exemple, le système d'exploitation MS-DOS alloue la mémoire de cette manière. Un système embarqué fonctionne également sur une seule application.

Allocation partitionnée

Il divise la mémoire principale en plusieurs partitions de mémoire, qui sont pour la plupart des zones de mémoire contiguës. Chaque partition stocke toutes les informations relatives à une tâche ou un travail spécifique. Cette méthode consiste à attribuer une partition à un travail lors de son démarrage et à la non-allouer à sa fin.

Gestion de la mémoire paginée

Cette méthode divise la mémoire principale de l'ordinateur en unités de taille fixe appelées cadres de page. Cette unité matérielle de gestion de mémoire mappe les pages en trames qui doivent être allouées sur une base de page.

Gestion de la mémoire segmentée

La mémoire segmentée est la seule méthode de gestion de la mémoire qui ne fournit pas au programme de l'utilisateur un espace d'adressage linéaire et contigu.

Les segments nécessitent un support matériel sous la forme d'une table de segments. Il contient l'adresse physique de la section en mémoire, la taille et d'autres données telles que les bits de protection d'accès et l'état.

Qu'est-ce que l'échange ?

L'échange est une méthode dans laquelle le processus doit être temporairement transféré de la mémoire principale vers le magasin de sauvegarde. Ce sera later ramené en mémoire pour poursuivre l'exécution.

Le magasin de sauvegarde est un disque dur ou un autre périphérique de stockage secondaire qui doit être suffisamment grand pour accueillir des copies de toutes les images mémoire pour tous les utilisateurs. Il est également capable d'offrir un accès direct à ces images mémoire.

Swapping

Avantages de l'échange

Voici les principaux avantages/avantages de l'échange :

  • Il offre un degré supérieur de multiprogrammation.
  • Permet la relocalisation dynamique. Par exemple, si la liaison d'adresse au moment de l'exécution est utilisée, les processus peuvent être permutés à différents emplacements. Sinon, en cas de liaisons de temps de compilation et de chargement, les processus doivent être déplacés vers le même emplacement.
  • Cela aide à obtenir une meilleure utilisation de la mémoire.
  • Perte minimale de temps CPU à la fin afin qu'elle puisse facilement être appliquée à une méthode de planification basée sur les priorités pour améliorer ses performances.

Qu’est-ce que l’allocation de mémoire ?

L'allocation de mémoire est un processus par lequel les programmes informatiques se voient attribuer de la mémoire ou de l'espace.

Ici, la mémoire principale est divisée en deux types de partitions

  1. Peu de mémoire - Système d'exploitation réside dans ce type de mémoire.
  2. Mémoire élevée– Les processus utilisateur sont conservés dans une mémoire élevée.

Allocation de partition

La mémoire est divisée en différents blocs ou partitions. Chaque processus est attribué en fonction des besoins. L'allocation de partition est une méthode idéale pour éviter la fragmentation interne.

Vous trouverez ci-dessous les différents schémas d'allocation de partition :

  • Premier ajustement: Dans ce type d'ajustement, la partition est allouée, qui est le premier bloc suffisant depuis le début de la mémoire principale.
  • Meilleur ajustement: Il alloue le processus à la partition qui est la première plus petite partition parmi les partitions libres.
  • Pire ajustement : Il attribue le processus au partition, qui est la plus grande partition suffisamment disponible gratuitement dans la mémoire principale.
  • Ajustement suivant : Il est essentiellement similaire au premier Fit, mais ce Fit recherche la première partition suffisante à partir du dernier point d'allocation.

Qu’est-ce que la pagination ?

La pagination est un mécanisme de stockage qui permet au système d'exploitation de récupérer les processus du stockage secondaire vers la mémoire principale sous forme de pages. Dans la méthode Paging, la mémoire principale est divisée en petits blocs de mémoire physique de taille fixe, appelés trames. La taille d'un cadre doit rester la même que celle d'une page pour avoir une utilisation maximale de la mémoire principale et éviter la fragmentation externe. Pagination est utilisé pour un accès plus rapide aux données, et c’est un concept logique.

Qu’est-ce que la fragmentation ?

Les processus sont stockés et supprimés de la mémoire, ce qui crée de l'espace mémoire libre, trop petit pour être utilisé par d'autres processus.

Parfois, les processus incapables d'allouer des blocs de mémoire en raison de leur petite taille et des blocs de mémoire qui restent toujours inutilisés sont appelés fragmentation. Ce type de problème se produit lors d'un système d'allocation dynamique de mémoire lorsque les blocs libres sont assez petits, de sorte qu'il n'est en mesure de répondre à aucune demande.

Il existe deux types de méthodes de fragmentation :

  1. Fragmentation externe
  2. Fragmentation interne
  • La fragmentation externe peut être réduite en réorganisant le contenu de la mémoire pour regrouper toute la mémoire libre dans un seul bloc.
  • La fragmentation interne peut être réduite en attribuant la plus petite partition, qui est encore suffisamment bonne pour prendre en charge l'ensemble du processus.

Qu'est-ce que la segmentation ?

La méthode de segmentation fonctionne presque de la même manière que la pagination. La seule différence entre les deux est que les segments sont de longueur variable, alors que, dans la méthode de pagination, les pages sont toujours de taille fixe.

Un segment de programme comprend la fonction principale du programme, les structures de données, les fonctions utilitaires, etc. Le système d'exploitation gère une table de mappage de segments pour tous les processus. Il comprend également une liste de blocs de mémoire libres ainsi que leur taille, leurs numéros de segment et leurs emplacements mémoire dans la mémoire principale ou la mémoire virtuelle.

Qu’est-ce que le chargement dynamique ?

Le chargement dynamique est une routine d'un programme qui n'est chargée que lorsque le programme l'appelle. Toutes les routines doivent être contenues sur le disque dans un format de chargement déplaçable. Le programme principal sera chargé en mémoire et sera exécuté. Le chargement dynamique permet également une meilleure utilisation de l'espace mémoire.

Qu'est-ce que les liens dynamiques ?

La liaison est une méthode qui aide le système d'exploitation à collecter et à fusionner divers modules de code et de données en un seul fichier exécutable. Le fichier peut être chargé en mémoire et exécuté. Le système d'exploitation peut lier les bibliothèques au niveau du système dans un programme qui combine les bibliothèques au moment du chargement. Dans la méthode de liaison dynamique, les bibliothèques sont liées au moment de l'exécution, la taille du code du programme peut donc rester petite.

Différence entre le chargement statique et dynamique

Chargement statique Chargement dynamique
Le chargement statique est utilisé lorsque vous souhaitez charger votre programme de manière statique. Ensuite, au moment de la compilation, l'ensemble du programme sera lié et compilé sans avoir besoin d'un module externe ou d'une dépendance de programme. Dans un programme chargé dynamiquement, les références seront fournies et le chargement se fera au moment de l'exécution.
Au moment du chargement, l'ensemble du programme est chargé en mémoire et démarre son exécution. Les routines de la bibliothèque sont chargées en mémoire uniquement lorsqu'elles sont requises dans le programme.

Différence entre les liaisons statiques et dynamiques

Voici les principales différences entre les liens statiques et dynamiques :

Liaison statique Liaison dynamique
La liaison statique est utilisée pour combiner tous les autres modules requis par un programme en un seul code exécutable. Cela aide le système d'exploitation à éviter toute dépendance à l'exécution. Lorsque la liaison dynamique est utilisée, il n’est pas nécessaire de lier le module ou la bibliothèque réelle au programme. Au lieu de cela, utilisez une référence au module dynamique fourni au moment de la compilation et de la liaison.

Résumé

  • La gestion de la mémoire est le processus de contrôle et de coordination de la mémoire de l'ordinateur, en attribuant des parties appelées blocs à divers programmes en cours d'exécution afin d'optimiser les performances globales du système.
  • Il vous permet de vérifier la quantité de mémoire qui doit être allouée aux processus qui décident quel processeur doit obtenir de la mémoire à quel moment.
  • Dans l'allocation contiguë unique, tous les types de mémoire de l'ordinateur, à l'exception d'une petite partie réservée au système d'exploitation, sont disponibles pour une application.
  • La méthode d'allocation partitionnée divise la mémoire principale en plusieurs partitions de mémoire, qui sont principalement des zones de mémoire contiguës.
  • La méthode de gestion de la mémoire paginée divise la mémoire principale de l'ordinateur en unités de taille fixe appelées cadres de page.
  • La mémoire segmentée est la seule méthode de gestion de la mémoire qui ne fournit pas au programme de l'utilisateur un espace d'adressage linéaire et contigu.
  • L'échange est une méthode dans laquelle le processus doit être temporairement transféré de la mémoire principale vers le magasin de sauvegarde. Ce sera later ramené en mémoire pour poursuivre l'exécution.
  • L'allocation de mémoire est un processus par lequel les programmes informatiques se voient attribuer de la mémoire ou de l'espace.
  • La pagination est un mécanisme de stockage qui permet au système d'exploitation de récupérer les processus du stockage secondaire vers la mémoire principale sous forme de pages.
  • La fragmentation fait référence à l'état d'un disque dans lequel les fichiers sont divisés en morceaux dispersés sur le disque.
  • La méthode de segmentation fonctionne presque de la même manière que la pagination. La seule différence entre les deux est que les segments sont de longueur variable, alors que, dans la méthode de pagination, les pages sont toujours de taille fixe.
  • Le chargement dynamique est une routine d'un programme qui n'est chargée que lorsque le programme l'appelle.
  • La liaison est une méthode qui aide le système d'exploitation à collecter et à fusionner divers modules de code et de données en un seul fichier exécutable.