Gestion de la mémoire

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

La gestion de la mémoire est une activité effectuée dans le noyau du système d’exploitation. Le noyau lui-même est la partie centrale d’un système d’exploitation, il gère les opérations de l’ordinateur et de son matériel, mais il est surtout connu pour gérer la mémoire et le temps CPU.

L’une des fonctions clés du système de gestion de mémoire dans un ordinateur est l’affectation de mémoire à un certain nombre de programmes en cours d’exécution différents pour maintenir les performances du système stables.

La mémoire dans le système est allouée dynamiquement en fonction des besoins, et elle est libérée lorsque le processus n’a plus besoin de mémoire, attribuant ainsi cet emplacement de mémoire à un autre processus si nécessaire.

En fin de compte, la gestion de la mémoire dépendra de l’efficacité de la configuration dans le matériel, le système d’exploitation et les programmes ou applications.

Matériel: Au niveau matériel, la gestion de la mémoire implique des périphériques physiques qui stockent les données. Un exemple de ceci serait la mémoire RAM (Random Access Memory), en outre, cela inclut également les caches de mémoire et les SSD basés sur flash (Solid State Drives).

Système d’exploitation: au niveau du système d’exploitation, la gestion de la mémoire implique l’allocation de blocs de mémoire spécifiques à des programmes individuels à mesure que la demande des utilisateurs change.

Par exemple, si l’utilisateur passe d’un document Word à Internet.

Applications: Au niveau de l’application, la gestion de la mémoire s’assurera que chaque objet d’application et chaque structure de données obtiennent la portion de mémoire requise au rythme requis.

Les systèmes informatiques modernes gèrent la mémoire à deux niveaux: niveau application et niveau système.

(Le niveau d’application est catégorisé comme étant une gestion de la mémoire automatique ou manuelle)

Avec un espace d’adressage, la gestion de la mémoire est soit catégorisée comme étant la gestion automatique de la mémoire, c’est-à-dire (qui implique le garbage collection) ou la gestion manuelle de la mémoire.

Garbage collection: le collecteur tente de récupérer «garbage», ce qui signifie récupérer la mémoire qui n’est plus occupée par les objets qui ne sont plus utilisés par le programme.

Gestion automatique de la mémoire:

La gestion automatique de la mémoire est un mécanisme dans lequel un système d’exploitation ou une application gère automatiquement l’allocation et la désallocation de la mémoire.

Par conséquent, contrairement à la gestion manuelle de la mémoire, le programmeur n’a pas à écrire de code pour gérer les tâches associées à la gestion de la mémoire lors du développement d’une application.

La gestion automatique de la mémoire élimine les problèmes tels que l’oubli de libérer la mémoire allouée à un objet, ce qui peut provoquer des fuites de mémoire.

Gestion manuelle de la mémoire:

La gestion manuelle de la mémoire implique l’utilisation d’instructions manuelles définies par le programmeur, ces instructions identifieront et désalloueront les objets utilisés, ou les déchets de la mémoire.

L’un des principaux problèmes associés à la gestion de la mémoire est: Fuites de mémoire.

Les fuites de mémoire sont un échec du programme pour libérer de la mémoire supprimée, ce qui entraînera une diminution des performances et finalement un échec.

Techniques d’allocation de gestion de la mémoire

(Définitions utiles)

Fragmentation externe:

La fragmentation externe se produit lorsqu’il y a une quantité suffisante de zone dans la mémoire pour satisfaire la demande de mémoire d’une méthode, bien que la demande de mémoire du processus ne puisse pas être satisfaite car la mémoire offerte est de manière non contiguë.

Fragmentation interne:

La fragmentation interne se produit lorsque la mémoire est divisée en blocs de taille montés.

Les blocs dimensionnés montés sont attribués à la méthode chaque fois qu’une méthode demande de la mémoire.

Allocation de mémoire contiguë:

L’allocation de mémoire contiguë est un modèle d’allocation qui attribue à un processus des blocs de mémoire consécutifs (blocs de mémoire ayant des adresses consécutives)

La mémoire principale est une ressource matérielle, qui a des adresses physiques. Ces adresses sont utilisées pour localiser les zones dans lesquelles des données et des instructions peuvent être stockées.

Lorsqu’un programme est exécuté, une série d’adresses logiques est produite. La somme de ces adresses logiques constituera l’espace d’adressage logique de ce processus.

Échange:

L’un des aspects clés de la gestion de la mémoire est l’échange. C’est lorsqu’un processus est transféré temporairement de la mémoire principale vers le stockage secondaire (comme un disque), rendant ainsi cette mémoire disponible pour d’autres processus. Ensuite, à un moment ultérieur, le système inversera le processus du stockage secondaire vers la mémoire principale. Cela aide à la performance de plusieurs gros processus en parallèle.

Adresse logique:

Une adresse logique est une adresse qui est générée par la CPU lorsque le programme concerné est en cours d’exécution. Les adresses logiques sont également appelées «adresses virtuelles», car elles n’existent pas physiquement.

Ces adresses sont utilisées comme référence pour accéder à l’emplacement de mémoire physique par la CPU.

L’unité de gestion de mémoire, qui est le périphérique matériel, est utilisée pour mapper les adresses logiques à son adresse physique correspondante.

En outre, le système d’exploitation doit mapper l’espace d’adressage logique à l’espace d’adressage physique et gérer l’utilisation de la mémoire entre les processus de manière appropriée, par exemple via la segmentation, la pagination ou l’utilisation de la mémoire virtuelle.

Pagination

Lorsqu’une adresse logique est divisée, elle est divisée en unités de mémoire appelées pages.De plus, lorsque cette page est chargée dans la mémoire principale, elle est stockée dans un cadre de page, qui est un bloc d’adresses séquentielles de même taille (ce qui signifie qu’ils ont le même nombre d’adresses) que la page.

La fonctionnalité de pagination permet d’allouer de la mémoire de manière non contiguë, ce qui signifie que les pages du même processus n’ont pas besoin d’être stockées ensemble, bien qu’elle puisse être allouée partout où il y a de l’espace libre dans la mémoire principale.

Table de pages: une table de pages est la structure de données utilisée par un système de mémoire virtuelle dans un système d’exploitation informatique pour stocker le mappage entre l’adresse visuelle et les adresses physiques.

Techniques de remplacement de page

Demande de pagination:

La pagination à la demande est un type d’échange effectué dans les systèmes de mémoire virtuelle. La pagination de la demande comme il est indiqué dans le titre, ne copie les données du disque vers la RAM que si les données sont requises par un programme, ce qui signifie que les données ne seront pas lorsque les données sont déjà disponibles sur la mémoire. Cela peut être appelé «évaluation paresseuse», car seules les pages de mémoire demandées sont permutées du stockage secondaire (espace disque) vers la mémoire principale.

Recherche anticipée:

Également appelée «swap prefetch», c’est lorsque le système d’exploitation tente d’anticiper les données qui seront nécessaires ensuite et les copie dans la RAM avant qu’elles ne soient réellement nécessaires, cette technique réduit les risques de futures erreurs de page.

Erreur de page: il s’agit d’un type d’exception qui est déclenché par le matériel informatique lorsqu’un programme en cours d’exécution accède à une page de mémoire qui n’est pas actuellement mappée par l’unité de gestion de mémoire.

File d’attente, vol et récupération de pages gratuites:

Il s’agit d’une liste de cadres de page disponibles pour l’affectation, cette technique empêche la file d’attente d’être vide, ce qui minimise donc le calcul nécessaire pour traiter une erreur de page.

Le vol de page fait référence aux systèmes d’exploitation qui recherchent en permanence des pages qui n’ont pas été récemment référencées, ils libèrent le cadre de page, puis l’ajoutent à la file d’attente des pages libres.

De plus, certains systèmes d’exploitation prennent également en charge la récupération de page, c’est-à-dire lorsqu’un programme commet une erreur de page en faisant référence à une page qui a été «volée», le système d’exploitation le détecte alors et récupère le cadre de page. Cela se fait sans avoir à lire le contenu dans la RAM.

Pré-nettoyage:

Le pré-nettoyage est lorsqu’un système d’exploitation pré-nettoie en permanence les pages «sales».

Page sale: Une page sale dans un système d’exploitation se réfère à des pages en mémoire (cache de page) qui ont été rationalisées et qui ont donc changé pour ce qui est actuellement stocké sur le disque. Les pages sales se produisent généralement lorsqu’un fichier existant sur le disque est ajouté ou modifié.

Le pré-nettoyage consiste à réécrire les pages modifiées sur le disque, malgré leur modification ultérieure. Cette technique minimisera la quantité de nettoyage nécessaire pour obtenir un nouveau cadre de page, qui est nécessaire au moment où un nouveau programme démarre ou un nouveau fichier de données est ouvert. Le pré-nettoyage améliore également la réactivité.

Les avantages de la pagination comprennent:

  • La pagination réduit la fragmentation externe.
  • Simple à mettre en œuvre.
  • L’échange devient facile à mettre en œuvre car les pages et les cadres sont de la même taille.

Les inconvénients de la pagination comprennent:

  • Souffre de fragmentation interne
  • Les tables de pages nécessitent un espace mémoire supplémentaire, donc si un système a une petite mémoire RAM, il ne fonctionnera pas aussi efficacement.

Segmentation:

Pour s’adapter aux différentes exigences de mémoire de chaque processus, des blocs de mémoire, qui sont alloués aux processus qui sont divisés en segments de tailles différentes. Les segments peuvent être déplacés dans et hors de la mémoire selon les besoins, ce qui signifie qu’ils ne doivent pas être stockés en continu dans un espace d’adressage fixe.

Afin que le système d’exploitation du système puisse suivre l’allocation de mémoire pour chaque processus, il utilise une table de segments, qui enregistre l’emplacement physique de chaque segment unique requis pour un processus spécifique.

La segmentation fonctionne de manière très similaire à la pagination, bien qu’avec la segmentation, les segments soient de longueur variable comme dans la pagination, ils sont de taille fixe.

Segmentation sans pagination:

Cela nécessite que les segments entiers soient échangés entre la mémoire principale et le stockage secondaire. Par conséquent, lorsqu’un segment est permuté, le système d’exploitation allouera suffisamment de mémoire libre contiguë pour contenir le segment entier.

Segmentation avec pagination:

Cela implique des pages individuelles qui vont et viennent entre la mémoire principale et le stockage secondaire. Les pages peuvent être allouées n’importe où dans la mémoire principale et ne sont donc pas contiguës.

Les avantages de la segmentation comprennent:

  • Pas de fragmentation interne.
  • La table de segments consomme moins d’espace par rapport à une table de pages.

Les inconvénients de la segmentation comprennent:

  • Lorsque les processus sont chargés et supprimés de la mémoire, l’espace libre qu’ils occupaient est divisé en petits morceaux, ce qui entraîne une fragmentation externe.

Mémoire virtuelle

Outre le stockage système, la mémoire vive (RAM), le système d’exploitation peut étendre l’espace physique limité de la mémoire en utilisant un autre stockage de l’ordinateur, tel que l’utilisation du disque dur, puis, le cas échéant à nouveau, permuter le processus. de nouveau dans la mémoire principale lorsque cela est nécessaire, bien que l’accès à un support de stockage secondaire tel que le disque dur soit considérablement plus lent.

La mémoire virtuelle est un périphérique dans le système d’exploitation, qui permet à un ordinateur d’être en mesure de compenser les pénuries de mémoire physique (RAM) en transférant des pages de données de la mémoire vive (RAM) vers le stockage sur disque pour empêcher la surcharge, de plus la mémoire virtuelle est conçue pour travailler temporairement en combinaison avec la RAM.

Par conséquent, lorsque la RAM est proche de sa pleine capacité, la mémoire virtuelle peut déplacer des données de la RAM vers un espace appelé «fichier d’échange». Cela permet à la RAM du système de libérer de l’espace afin que l’ordinateur puisse continuer avec l’exécution / la tâche principale.

La mémoire virtuelle, également considérée comme une mémoire logique, est une technique de gestion de la mémoire effectuée par le système d’exploitation. La principale utilisation de la mémoire virtuelle est qu’elle permet aux utilisateurs d’utiliser plus de mémoire pour les applications / programmes / tâches que la mémoire physique disponible (RAM) sur le système.

L’un des principaux avantages de la mémoire virtuelle est qu’elle assure la protection de la mémoire en convertissant l’adresse mémoire en adresse physique correspondante. Il le fait en étendant l’utilisation de la mémoire physique en utilisant le disque dur, bien qu’il empêche d’accéder directement à la mémoire principale.

Avantages de la mémoire virtuelle

  • Permet à plus d’un programme d’être exécuté en même temps.
  • La mémoire virtuelle augmente la mémoire globale sur un système sans ajouter de RAM, ce qui est avantageux car la mémoire virtuelle est moins chère.
  • Élimine la fragmentation externe.
  • Moins d’entrées / sorties sont nécessaires, ce qui permet un échange plus rapide et facile des processus.

Inconvénients de la mémoire virtuelle

  • Si le système dépend beaucoup de la mémoire virtuelle, cela peut entraîner une diminution des performances.
  • Plus il y a de mémoire virtuelle utilisée, moins un utilisateur dispose d’espace disque pour le stockage.
  • Le temps nécessaire pour lire à partir d’un disque magnétique est plus long que le temps d’accès à la RAM, par conséquent, le remplacement doit être évité partout où les performances sont importantes. Cela signifie finalement qu’il faudrait plus de temps pour basculer entre les applications.

Politiques de remplacement de page

Liste liée: en informatique, une liste liée fait référence à une structure de données linéaire où chaque élément est un objet distinct, bien que les éléments d’une liste liée ne soient pas stockés à un emplacement contigu, ces éléments sont alignés à l’aide de pointeurs.)

Lorsqu’une nouvelle page doit être mise en mémoire pour le processus / applications / tâche spécifique, il sera souvent nécessaire d’en supprimer une qui s’y trouve déjà. Certains des algorithmes qui en tiennent compte sont énumérés ci-dessous.

Algorithme le moins récemment utilisé (LRU):

L’algorithme LRU remplace la page qui n’a pas été référencée le plus longtemps.

Le remplacement de page le moins récemment utilisé est un algorithme qui fonctionne sur la théorie selon laquelle les pages, qui avaient été le plus largement utilisées dans les dernières instructions, sont également très probablement utilisées dans les prochaines instructions. Alors que LRU pourrait potentiellement fournir des performances presque optimales, ils sont coûteux à mettre en œuvre dans la pratique, de plus, il existe peu de méthodes de mise en œuvre pour cet algorithme qui tentent de réduire le coût tout en ayant les mêmes performances.

Pas récemment utilisé (NRU):

Cet algorithme fonctionne comme LRU, bien qu’il n’ait pas autant de frais généraux. Chaque cadre de page a un bit de référence de page qui lui est corrélé, et cette référence est définie sur 1 uniquement si la page est référencée (car le fonctionnement réinitialisera toutes les pages à 0 (périodiquement)), donc tout bit de référence de page de 0 sera éligible au remplacement.

En résumé, cet algorithme aime conserver les pages qui n’ont été utilisées que récemment.

Premier entré, premier sorti (FIFO):

FIFO remplace la page, qui est en mémoire depuis le plus longtemps, bien qu’il soit basé sur le fait que la page est peu susceptible d’être utilisée.

Une liste chaînée de pages, classée par ordre chronologique, est utilisée pour décider quelle page a été en mémoire le plus longtemps et est peu susceptible d’être utilisée.

La page en haut de la liste est supprimée et la nouvelle page est ajoutée à l’arrière de la liste.

La FIFO peut entraîner une efficacité médiocre, mais comme certaines des pages qui ont été supprimées peuvent être utilisées fréquemment, leur suppression de la mémoire entraînera la génération de défauts de page supplémentaires.

L’horloge:

L’algorithme d’horloge peut être reconnu comme une variante de l’algorithme FIFO, bien que la différence soit qu’une liste chaînée «circulaire» est utilisée et que chaque entrée de la liste a un bit de référence de page, qui est initialement mis à 0, et il est défini sur 1 à chaque fois que la page sera référencée. Le pointeur de la liste liée se déplace dans la liste jusqu’à ce qu’un cadre de page avec un bit de référence de page de 0 soit trouvé (si toutes les références de page sont 1, le pointeur retournera à son point de départ).

Résumé et faits

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

La gestion de la mémoire est une activité effectuée dans le noyau du système d’exploitation.

La gestion de la mémoire peut être définie comme étant 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.

Le système d’exploitation, les programmes, les applications et le matériel ont tous des systèmes de gestion de la mémoire.

Techniques d’allocation de gestion de la mémoire:

La mémoire principale est une ressource matérielle, qui a des adresses physiques. Ces adresses sont utilisées pour localiser les zones dans lesquelles des données et des instructions peuvent être stockées.

Lorsqu’un programme est exécuté, une série d’adresses logiques est produite. La somme de ces adresses logiques constituera l’espace d’adressage logique de ce processus.

En outre, le système d’exploitation doit mapper l’espace d’adressage logique à l’espace d’adressage physique et gérer l’utilisation de la mémoire entre les processus de manière appropriée, par exemple via la segmentation, la pagination ou l’utilisation de la mémoire virtuelle.

Pagination:

Lorsqu’une adresse logique est divisée, elle est divisée en unités de mémoire appelées pages.De plus, lorsque cette page est chargée dans la mémoire principale, elle est stockée dans un cadre de page, qui est un bloc d’adresses séquentielles de même taille (ce qui signifie qu’ils ont le même nombre d’adresses) que la page.

Techniques de remplacement de page:

  • Demande de pagination
  • Recherche anticipée
  • File d’attente, vol et récupération de pages gratuites
  • Pré-nettoyage

Segmentation:

Pour s’adapter aux différentes exigences de mémoire de chaque processus, des blocs de mémoire, qui sont alloués aux processus qui sont divisés en segments de tailles différentes. Les segments peuvent être déplacés dans et hors de la mémoire selon les besoins, ce qui signifie qu’ils ne doivent pas être stockés en continu dans un espace d’adressage fixe.

Mémoire virtuelle:

Outre le stockage système, la mémoire vive (RAM), le système d’exploitation peut étendre l’espace physique limité de la mémoire en utilisant un autre stockage de l’ordinateur, tel que l’utilisation du disque dur, puis, le cas échéant à nouveau, permuter le processus. de nouveau dans la mémoire principale lorsque cela est nécessaire, bien que l’accès à un support de stockage secondaire tel que le disque dur soit considérablement plus lent.

Différences clés entre la pagination et la segmentation:

Caractéristique Pagination Segmentation
Taille mémoire Lors de la pagination, une adresse de processus est divisée en blocs de taille fixe appelés pages Dans la segmentation, une adresse est l’espace est divisé en blocs de taille variable appelés sections
Responsabilité Le système d’exploitation divise la mémoire en pages Le compilateur est chargé de calculer la taille du segment, l’adresse virtuelle et l’adresse réelle
Taille La taille de la page est finalement déterminée par la mémoire disponible La taille de la section est déterminée par l’utilisateur
La vitesse La pagination est plus rapide en termes d’accès à la mémoire La segmentation dans son ensemble est plus lente que la pagination
Fragmentation Peut provoquer une fragmentation interne car certaines pages peuvent être sous-utilisées Peut provoquer une fragmentation externe car une partie du bloc de mémoire peut ne pas être utilisée du tout
Adresse logique L’adresse logique est divisée en numéro de page et décalage de page L’adresse logique est divisée en numéro de section et décalage de section
Stockage de données La table de page stocke les données de page La table de segmentation stocke les données segmentées

Politiques de remplacement de page:

  • Algorithme le moins récemment utilisé (LRU)
  • Pas récemment utilisé (NRU)
  • Premier entré, premier sorti (FIFO)
  • L’horloge