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

⚡ Résumé intelligent

La gestion de la mémoire est le processus du système d'exploitation qui contrôle et coordonne la mémoire de l'ordinateur, en attribuant des blocs aux programmes en cours d'exécution afin d'optimiser les performances. tracks gère chaque emplacement mémoire, déplace les processus entre la mémoire principale et le disque, et protège les processus les uns des autres.

  • 🧠 Définition: La gestion de la mémoire alloue et tracBlocs de mémoire ks pour l'exécution des programmes afin d'optimiser les performances.
  • 🇧🇷 Techniques: L'allocation de mémoire contiguë, partitionnée, paginée et segmentée gère la mémoire différemment.
  • (I.e. Échangerping: Les processus se déplacent temporairement entre la mémoire principale et une mémoire de stockage secondaire afin d'améliorer la multiprogrammation.
  • 📑 Pagination vs Segmentation : La pagination utilise des cadres de taille fixe ; la segmentation utilise des segments de longueur variable.
  • 🧩 Fragmentation: La fragmentation interne et externe gaspille de la mémoire en petits blocs inutilisables.
  • 🔗 Chargement et liaison : Le chargement et la liaison dynamiques permettent d'économiser de la mémoire en ne chargeant les routines que lorsque cela est nécessaire.

Gestion de la mémoire dans le système d'exploitation

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.

Il s'agit de la fonction la plus importante d'un système d'exploitation qui gère la mémoire principale. Elle permet aux processus de se déplacer entre la mémoire principale et le disque d'exécution. Elle permet au système d'exploitation de maintenir track 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.
  • Tracks se déclenche chaque fois que de l'inventaire est libéré ou désalloué, et met à jour le statut en conséquence.
  • Il alloue de l'espace aux routines d'application.
  • Il garantit également que ces applications n'interfèrent pas entre elles.
  • Contribue à protéger les 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-unes des techniques de gestion de la mémoire les plus importantes :

Allocation unique contiguë

Il s'agit de la technique de gestion de la mémoire la plus simple. Avec cette méthode, toute la mémoire de l'ordinateur, à l'exception d'une petite portion réservée au système d'exploitation, est disponible pour une seule application. Par exemple, le système d'exploitation MS-DOS alloue la mémoire de cette manière. Un système embarqué fonctionne également avec une seule application.

Allocation partitionnée

Elle divise la mémoire principale en plusieurs partitions, généralement des zones contiguës. Chaque partition stocke les informations nécessaires à une tâche spécifique. Cette méthode consiste à allouer une partition à une tâche au démarrage et à la libérer à la fin de celle-ci.

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 qu'un swap ?ping?

Échangerping Il s'agit d'une méthode consistant à transférer temporairement un processus de la mémoire principale vers la mémoire tampon. Il sera ensuite remis en mémoire pour poursuivre son exécution.

Le support de stockage est un disque dur ou un autre périphérique de stockage secondaire suffisamment spacieux pour contenir des copies de toutes les images mémoire de tous les utilisateurs. Il permet également un accès direct à ces images mémoire.

Échangerping

Avantages du swapping

Voici les principaux avantages de l'échangeping:

  • Il offre un degré supérieur de multiprogrammation.
  • Permet la relocalisation dynamique. Par exemple, si la liaison d'adresses à l'exécution est utilisée, les processus peuvent être déplacés vers différents emplacements. En revanche, en cas de liaisons à la compilation et au chargement, les processus doivent être déplacés vers le même emplacement.
  • Cela aide à obtenir une meilleure utilisation de la mémoire.
  • Le gaspillage de temps CPU à l'achèvement est minimal, ce qui permet de l'appliquer facilement à une méthode d'ordonnancement basée sur les priorités afin d'en améliorer les 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 - Les Système exploitation réside dans ce type de mémoire.
  2. Mémoire élevée – Les processus utilisateur sont stockés en mémoire haute.

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 partitions :

  • Premier essayage : Dans ce type d'allocation, la partition allouée correspond au premier bloc suffisant à partir du début de la mémoire principale.
  • Meilleur ajustement : Il attribue le processus à la partition qui est la plus petite partition suffisante parmi les partitions libres.
  • Pire ajustement : Il alloue le processus à la partition qui est la plus grande partition libre disponible dans la mémoire principale.
  • Ajustement suivant : Il est globalement similaire à First 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 des processus depuis le stockage secondaire vers la mémoire principale sous forme de pages. Dans ce mécanisme, la mémoire principale est divisée en petits blocs de mémoire physique de taille fixe, appelés cadres. La taille d'un cadre doit être identique à celle d'une page afin d'optimiser l'utilisation de la mémoire principale et d'é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 en mémoire puis supprimés, ce qui crée des espaces mémoire libres trop petits pour être utilisés par d'autres processus.

Au bout d'un certain temps, ces processus ne peuvent plus être alloués à des blocs de mémoire en raison de leur taille insuffisante, et ces blocs restent inutilisés. C'est ce qu'on appelle la fragmentation. Ce type de problème survient dans un système d'allocation dynamique de mémoire lorsque les blocs libres sont très petits et ne peuvent donc pas répondre aux demandes.

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 reste toutefois suffisante pour supporter l'ensemble du processus.

Qu'est-ce que la segmentation ?

La méthode de segmentation fonctionne de manière quasi identique à la pagination. La seule différence réside dans le fait que les segments ont une longueur variable, tandis que, dans la méthode de pagination, les pages ont toujours une 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 consiste à ne charger une routine d'un programme que lorsque celui-ci l'appelle. Toutes les routines doivent être stockées sur le disque dans un format de chargement relogeable. Le programme principal sera chargé en mémoire puis exécuté. Le chargement dynamique permet également une meilleure utilisation de l'espace mémoire.

Qu'est-ce que les liens dynamiques ?

L'édition de liens est une méthode permettant au système d'exploitation de rassembler et de fusionner différents modules de code et de données en un seul fichier exécutable. Ce fichier peut ensuite être chargé en mémoire et exécuté. Le système d'exploitation peut lier des bibliothèques système au sein d'un programme, combinant ainsi ces bibliothèques au moment du chargement. Dans le cas de la liaison dynamique, les bibliothèques sont liées lors de l'exécution, ce qui permet de réduire la taille du code du programme.

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. Ainsi, lors de la compilation, le programme entier sera lié et compilé sans nécessiter de module ou de programme externe. Dans un programme chargé dynamiquement, les références seront fournies et le chargement sera effectué 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 la liaison statique et la liaison dynamique :

Liaison statique Liaison dynamique
La liaison statique permet de combiner tous les modules nécessaires à un programme en un seul code exécutable. Cela permet au système d'exploitation d'éviter toute dépendance à l'exécution. Lorsqu'on utilise la liaison dynamique, il n'est pas nécessaire de lier le module ou la bibliothèque elle-même au programme. On utilise plutôt une référence au module dynamique fourni lors de la compilation et de l'édition des liens.

FAQ

La pagination divise la mémoire en blocs de taille fixe et est invisible pour le programmeur, tandis que la segmentation la divise en segments de longueur variable en fonction de la structure logique du programme. La pagination peut entraîner une fragmentation interne ; la segmentation peut entraîner une fragmentation externe.

La fragmentation interne correspond à l'espace gaspillé à l'intérieur d'un bloc alloué lorsqu'un processus utilise moins de mémoire que la taille du bloc. La fragmentation externe correspond à la mémoire libre divisée en petits blocs dispersés qui, ensemble, sont suffisamment grands, mais ne peuvent satisfaire une requête.

Lors de l'exécution d'un programme, le processeur génère une adresse logique (ou virtuelle). L'adresse physique correspond à l'emplacement réel en mémoire vive. L'unité de gestion de la mémoire (MMU) traduit les adresses logiques en adresses physiques à l'exécution.

L'IA peut prédire les pages dont un programme aura besoin et les précharger, optimisant ainsi la gestion du cache et le remplacement des pages. Elle contribue également à détecter les fuites de mémoire et à ajuster dynamiquement les politiques d'allocation, réduisant ainsi le recours à l'échange de mémoire.ping et améliorer les performances globales du système.

Oui. L'IA peut apprendre les schémas d'allocation et choisir des tailles de blocs ou un calendrier de compactage qui minimisent la fragmentation. En prédisant la durée de vie des allocations, elle regroupe les objets similaires, réduisant ainsi l'espace libre dispersé et le besoin de compactage mémoire coûteux.

Résumez cet article avec :