Maison  >  Article  >  Opération et maintenance  >  Qu’est-ce que Linux utilise pour implémenter la mémoire virtuelle ?

Qu’est-ce que Linux utilise pour implémenter la mémoire virtuelle ?

青灯夜游
青灯夜游original
2022-11-10 19:34:012479parcourir

La mise en œuvre de la mémoire virtuelle doit être basée sur la méthode de gestion de la mémoire allouée discrètement. Il existe trois méthodes de mise en œuvre : 1. Méthode de gestion du stockage par pagination ; 2. Méthode de gestion du stockage par segmentation des demandes ; Quelle que soit la méthode utilisée, une certaine prise en charge matérielle est requise : 1. Une certaine capacité de mémoire et de mémoire externe ; 2. Un mécanisme de table de pages (ou un mécanisme de table de segments) comme structure de données principale ; 3. Un mécanisme d'interruption, lorsque le programme utilisateur ; besoins Si la partie accédée n'a pas encore été transférée dans la mémoire, une interruption se produira; 4. Mécanisme de conversion d'adresse, conversion d'adresse logique en adresse physique.

Qu’est-ce que Linux utilise pour implémenter la mémoire virtuelle ?

L'environnement d'exploitation de ce tutoriel : système linux7.3, ordinateur Dell G3.

1. Présentation de la mémoire virtuelle

La gestion traditionnelle du stockage enregistre plusieurs processus en mémoire en même temps pour permettre la multi-programmation. Ils ont tous en commun les deux caractéristiques suivantes :

  • Unique : Le travail doit être chargé en mémoire en une seule fois avant de pouvoir commencer à s'exécuter. Cela conduira à deux situations : 1) Lorsque le travail est volumineux et ne peut pas être chargé dans la mémoire, le travail ne pourra pas s'exécuter
    2) Lorsqu'un grand nombre de travaux doivent être exécutés, car la mémoire n'est pas disponible ; suffisant pour accueillir tous les travaux, seulement cela peut provoquer l'exécution de quelques travaux en premier, ce qui entraîne une diminution de la multiprogrammation.
  • Résidence : Une fois le travail chargé dans la mémoire, il sera toujours résident dans la mémoire, et aucune partie ne sera échangée, jusqu'à ce que le travail soit terminé. Un processus en cours d'exécution sera bloqué en attente d'E/S et peut être dans un état d'attente à long terme.
Par conséquent, de nombreux programmes (données) qui ne sont pas utilisés pendant le fonctionnement du programme ou qui ne sont pas utilisés temporairement occupent une grande quantité d'espace mémoire, et certains travaux qui doivent être exécutés ne peuvent pas être chargés et exécutés, ce qui gaspille évidemment de précieuses ressources mémoire. .

1.1 La définition et les caractéristiques de la mémoire virtuelle

Basé sur le principe de

localité, lorsque le programme est chargé, vous pouvez charger une partie du programme dans la mémoire et laisser le reste en externe mémoire. Démarrer l’exécution du programme. Lors de l'exécution du programme, lorsque les informations consultées ne sont pas dans la mémoire, le système d'exploitation transfère la partie requise dans la mémoire , puis continue d'exécuter le programme. D'autre part, le système d'exploitation échange le contenu temporairement inutilisé de la mémoire vers la mémoire externe, libérant ainsi de l'espace pour stocker les informations qui seront transférées dans la mémoire. De cette façon, puisque le système fournit des

fonctions de chargement partiel, de chargement de demande et de remplacement

(complètement transparentes pour l'utilisateur), l'utilisateur a l'impression qu'il existe une mémoire beaucoup plus grande que la mémoire physique réelle, appelée Mémoire virtuelle. La taille de la mémoire virtuelle est déterminée par la structure d'adresse de l'ordinateur

et n'est pas une simple somme de mémoire et de mémoire externe.

La mémoire virtuelle présente les trois caractéristiques principales suivantes :

Plusieurs fois
     : Il n'est pas nécessaire de charger la mémoire en une seule fois lorsque le travail est en cours d'exécution, mais elle peut être divisée en plusieurs fois et chargée dans la mémoire pour fonctionner.
  • Swapability
  •  : Il n'est pas nécessaire de conserver la mémoire résidente pendant l'exécution du travail, mais permet d'effectuer des échanges entrants et sortants pendant le processus d'exécution du travail.
  • Virtualité
  •  : augmentez logiquement la capacité de mémoire afin que la capacité de mémoire vue par l'utilisateur soit beaucoup plus grande que la capacité de mémoire réelle.
1.2 Implémentation de la technologie de mémoire virtuelle

La mémoire virtuelle permet à un travail d'être transféré plusieurs fois dans la mémoire

.

Lors de l'utilisation de la méthode d'allocation continue, une partie considérable de l'espace mémoire sera dans un état d'inactivité temporaire ou "permanent", provoquant un grave gaspillage de ressources mémoire, et il ne sera logiquement pas possible d'étendre la capacité mémoire.

Par conséquent, la mise en œuvre de la mémoire virtuelle doit être basée sur la

allocation discrète

méthode de gestion de la mémoire. Il existe trois façons d'implémenter la mémoire virtuelle :

Pagination des requêtes
    Gestion du stockage
  • Segmentation des requêtes
  • Gestion du stockage
  • Pagination des segments
  • Gestion du stockage
  • Quelle que soit la méthode, certaines exigences sont requises
  • Support matériel
. Le support généralement requis comprend les aspects suivants :

Une certaine quantité de mémoire et de stockage externe.

    Mécanisme de table de pages (ou mécanisme de table de segments), comme structure de données principale.
  • Mécanisme d'interruption, lorsque la partie à laquelle accéder par le programme utilisateur n'a pas été transférée dans la mémoire, une interruption est générée.
  • Mécanisme de conversion d'adresse, conversion d'adresse logique en adresse physique.
Méthode d'allocation continue

 : fait référence à l'allocation d'un espace mémoire continu pour un programme utilisateur.

  • Allocation de partition fixe : Divisez l'espace mémoire en plusieurs zones de taille fixe. Un seul travail est chargé dans chaque partition et plusieurs travaux peuvent être exécutés simultanément. Le manque de flexibilité produira beaucoup de fragments internes et l'utilisation de la mémoire est très faible.
  • Allocation dynamique de partition : Allouez dynamiquement de l'espace mémoire au processus en fonction de ses besoins réels. Lorsqu'une tâche est chargée en mémoire, la mémoire disponible est divisée en une zone continue pour la tâche et la taille de la partition est exactement adaptée à la taille de la tâche. Il y aura beaucoup de débris extérieurs.

Méthode d'allocation discrète : Charger un processus de manière dispersée dans de nombreuses partitions non adjacentes, afin que la mémoire puisse être pleinement utilisée.

Le concept de stockage de pagination :

  • Page, cadre de page et bloc. Le bloc dans process est appelé page ou page (Page), avec le numéro de page ; le bloc dans memory est appelé Page Frame (Page Frame, page frame = bloc mémoire = bloc physique = physique Page ), avec numéro de cadre de page. Le stockage externe est également divisé dans la même unité, directement appelée Block. Lorsqu'un processus est exécuté, il doit demander de l'espace mémoire principale, ce qui signifie que chaque page doit se voir attribuer un cadre de page disponible dans la mémoire principale, ce qui crée une correspondance biunivoque entre les pages et les cadres de page. Chaque page n'a pas besoin d'être stockée consécutivement et peut être placée dans des cadres de page non adjacents.
  • Structure de l'adresse : la première partie est le numéro de page P et la dernière partie est le décalage en page W. La longueur de l'adresse est de 32 bits, dont les bits 0 à 11 sont l'adresse intra-page, c'est-à-dire que la taille de chaque page est de 4 Ko ; les bits 12 à 31 sont le numéro de page et l'espace d'adressage permet jusqu'à 2 ^ 20. pages.
  • Tableau des pages. Afin de faciliter la recherche du bloc physique correspondant à chaque page du processus dans la mémoire, le système établit une table de pages pour chaque processus pour enregistrer le numéro de bloc physique correspondant à la page dans la mémoire. La table des pages est généralement stockée dans la mémoire. mémoire. . Une fois la table des pages configurée, lorsque le processus est exécuté, le numéro de bloc physique de chaque page dans la mémoire peut être trouvé en consultant la table. On peut voir que le rôle de la table des pages est d'implémenter le mappage d'adresses des numéros de page aux numéros de blocs physiques.
2. Gestion de la pagination des demandes pour implémenter la mémoire virtuelle

La pagination des demandes

est actuellement la méthode la plus couramment utilisée pour implémenter la mémoire virtuelle. Le système de pagination de demande est construit sur le

système de pagination de base

Afin de prendre en charge la fonction de mémoire virtuelle, la fonction requête de pagination et la fonction

remplacement de page

sont ajoutées. Dans le système de pagination des requêtes, seule une partie des pages actuellement requises doit être chargée dans la mémoire avant que le travail puisse être démarré. Pendant l'exécution du travail, lorsque la page à accéder n'est pas dans la mémoire, elle peut être importée via la fonction de pagination. En même temps, les pages temporairement inutilisées peuvent être transférées vers un stockage externe via la fonction de remplacement. pour libérer de l'espace mémoire. Afin de mettre en œuvre la pagination des demandes, le système doit fournir une certaine prise en charge matérielle. En plus d'un système informatique qui nécessite

une certaine quantité de mémoire et de stockage externe


, il a également besoin d'un

mécanisme de table de pages, d'un mécanisme d'interruption de faute de page et d'un mécanisme de conversion d'adresse. 2.1 Mécanisme de table de pages

Le mécanisme de table de pages du système de pagination de requêtes est différent du système de pagination de base le système de pagination de requêtes ne nécessite pas que toutes les données soient chargées dans la mémoire en même temps avant une tâche. est exécuté. Par conséquent, pendant le processus d'exécution du travail, il y aura inévitablement une situation où la page à laquelle accéder n'est pas dans la mémoire. Comment détecter et gérer cette situation sont deux problèmes fondamentaux que le système de pagination des requêtes doit résoudre. À cette fin, quatre champs sont ajoutés à l'entrée du tableau de la page de demande, à savoir :

Entrée du tableau des pages dans le système de pagination des demandes

Numéro de pageNuméro de bloc physiqueBit d'état P Champ d'accès AModifier le bit MAdresse de stockage externe
  • Bit d'état P : Utilisé pour indiquer si la page a été transférée en mémoire pour référence lorsque le programme y accède.
  • Champ d'accès A : utilisé pour enregistrer le nombre de fois que cette page a été consultée au cours d'une période donnée, ou la durée pendant laquelle cette page n'a pas été consultée récemment, pour référence lorsque l'algorithme de remplacement remplace la page.
  • Bit de modification M : Indique si la page a été modifiée après avoir été chargée en mémoire.
  • Adresse mémoire externe : Utilisé pour indiquer l'adresse de la page sur la mémoire externe, généralement le numéro de bloc physique, pour référence lors du chargement de la page.

2.2 Mécanisme d'interruption de page manquante

Dans le système de pagination de requête, chaque fois que la page à accéder n'est pas dans la mémoire, une Interruption de page manquante est générée, demandant au système d'exploitation d'ajuster le page manquante en mémoire.

À ce stade, le processus de défaut de page doit être bloqué (réveillez-vous une fois la pagination terminée). S'il y a un bloc libre dans la mémoire, allouez un bloc, chargez la page à charger dans le bloc et modifiez le entrée correspondante de la table des pages dans la table des pages ; s'il n'y a pas de bloc libre dans la mémoire à ce moment, une certaine page doit être éliminée (si la page éliminée a été modifiée pendant la période de mémoire, elle doit être réécrite dans la mémoire externe) .

Les interruptions de défaut de page doivent également être vécues comme des interruptions, telles que la protection de l'environnement du processeur, l'analyse de la cause de l'interruption, le transfert vers le gestionnaire d'interruption de défaut de page et la restauration de l'environnement du processeur. Mais par rapport aux interruptions générales, elle présente les deux différences évidentes suivantes :

  • Les signaux d'interruption sont générés et traités pendant l'exécution des instructions, plutôt qu'après l'exécution d'une instruction, qui est une interruption interne.
  • Pendant l'exécution d'une instruction, plusieurs interruptions de défaut de page peuvent survenir.

2.3 Mécanisme de transformation d'adresse

Le mécanisme de transformation d'adresse dans le système de pagination de requêtes est basé sur le mécanisme de transformation d'adresse du système de pagination et ajoute certaines fonctions pour réaliser une mémoire virtuelle.

Qu’est-ce que Linux utilise pour implémenter la mémoire virtuelle ?
Processus de transformation d'adresse en pagination de demande

Lors de la conversion d'adresse, recherchez d'abord dans la table rapide :

  • Si la page à accéder est trouvée, le bit d'accès dans l'entrée de la table des pages est modifié (le bit de modification doit être réinitialisé lors de l'écriture des instructions), puis l'entrée de la table des pages est utilisée. Le numéro de bloc physique et l'adresse de la page sont indiqués sous forme d'adresse physique.
  • Si l'entrée de la table des pages de la page n'est pas trouvée, vous devez rechercher la table des pages dans la mémoire, puis comparer le bit d'état P dans l'entrée de la table des pages pour voir si la page a été transférée dans la mémoire. Sinon. , une interruption de défaut de page se produira. Demander que la page soit transférée du stockage externe vers la mémoire.

Tableau des pages souligne la correspondance entre le numéro de page dans l'adresse logique et le numéro de bloc physique de la mémoire principale occupée. La gestion du stockage des pages utilise des tables de pages pour effectuer la traduction d'adresses lors des opérations de chargement à l'aide de la relocalisation dynamique.


Table rapide (TLB, Translation Lookaside Buffer) est une table de pages partielle stockée dans la mémoire cache. En tant que cache de la table des pages du processus actuel, sa fonction est similaire à la table des pages, mais elle accélère le mappage des adresses et améliore le taux d'accès. En raison de l'utilisation de tables de pages pour la traduction d'adresses, le processeur doit accéder à la mémoire principale deux fois (interroger la table de pages et accéder à l'adresse de destination) lors de la lecture et de l'écriture des données de la mémoire.

Avec la table rapide, il suffit parfois d'accéder à la mémoire cache et à la mémoire principale une seule fois, ce qui peut accélérer la recherche et augmenter la vitesse d'exécution des instructions.

3. Algorithme de remplacement de page

Lorsqu'un processus est en cours d'exécution, si la page à laquelle il accède n'est pas dans la mémoire et doit être importée, mais

il n'y a pas d'espace libre dans la mémoire

, une page de le programme doit être appelé de la mémoire ou les données sont envoyées à la zone d'échange du disque.
L'algorithme de sélection de la page à appeler est appelé algorithme de remplacement de page
. Un bon algorithme de remplacement de page doit avoir une faible fréquence de remplacement de page, c'est-à-dire que les pages qui ne seront plus consultées à l'avenir ou qui ne seront pas consultées pendant une longue période dans le futur doivent être appelées en premier.

3.1 Algorithme de remplacement optimal (OPT)

Meilleur algorithme de remplacement (Optimal, OPT)

La page éliminée sélectionnée ne sera plus jamais utilisée à l'avenir, ou ne sera plus utilisée dans la période la plus longue visitée Pages, afin d'assurer le taux de défauts de page le plus bas. Mais parce que les gens actuellement

ne peuvent pas prédire

laquelle des milliers de pages dans la mémoire du processus ne sera plus consultée dans le futur le plus longtemps, donc cet algorithme ne peut pas être implémenté, mais le meilleur algorithme de remplacement peut être utilisé pour évaluer d'autres algorithmes . Supposons que le système alloue trois blocs physiques à un processus et considérons la chaîne de référence de numéro de page suivante :

7, 0, 1, 2, 0, 3, 0, 4, 2, 3, 0, 3, 2, 1, 2, 0, 1, 7, 0, 1


Lorsque le processus est en cours d'exécution, les trois pages 7, 0 et 1 sont d'abord chargées dans la mémoire en séquence. Lorsque le processus souhaite accéder à la page 2, une interruption de défaut de page se produit. Selon l'algorithme de remplacement optimal, la page 7, qui ne doit être transférée qu'après le 18ème accès, est sélectionnée et éliminée. Ensuite, lors de l'accès à la page 0, il n'est pas nécessaire de générer une interruption de défaut de page car elle est déjà en mémoire. Lors de l'accès à la page 3, la page 1 sera éliminée en fonction de l'algorithme de remplacement optimal... et ainsi de suite. À partir de la figure, nous pouvons voir la situation lors de l'utilisation de l'algorithme de remplacement optimal.

Carte de déplacement lors de l'utilisation de l'algorithme de déplacement optimalVisitez la pageBlocage physique 1 Bloc Physique 2Physique Bloc 3Page manquante No

On peut voir que le nombre d'interruptions de faute de page est de 9 et le nombre de remplacements de pages est de 6.

3.2 L'algorithme de remplacement de page premier entré, premier sorti (FIFO)

donne la priorité à l'élimination de la page qui entre en mémoire le plus tôt, c'est-à-dire la page qui a résidé le plus longtemps dans la mémoire.

Cet algorithme est simple à mettre en œuvre. Il vous suffit de lier les pages transférées en mémoire dans une file d'attente selon l'ordre, et de définir un pointeur pour qu'il pointe toujours vers la première page. Cependant, cet algorithme n'est pas adapté aux règles de fonctionnement réelles du processus, car certaines pages sont fréquemment consultées au cours du processus.

7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
7 7 7 2
2

2


2


2



7



0
0 0
0

4


0


0



0




1
1
3

3


3


1



1














Graphique de déplacement lors de l'utilisation de l'algorithme de remplacement FIFO
Visitez la page 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
Blocs physiques 1 7 7 7 2
2 2 4 4 4 0

0 0

7 7 7
Blocage physique 2
0 0 0
3 3 3 2 2 2

1 1

1 0 0
Blocage physique 3

1 1
1 0 0 0 3 3

3 2

2 2 1
Page manquanteNon




Lors de l'utilisation de l'algorithme FIFO, 12 remplacements de pages sont effectués, soit exactement deux fois plus que l'algorithme de remplacement optimal.

L'algorithme FIFO produira également un phénomène anormal où lorsque le nombre de blocs physiques alloués augmente, le nombre de défauts de page augmente au lieu de diminuer. Cela a été découvert par Belady en 1969, c'est pourquoi on l'appelle Anomalie Belady, comme. indiqué dans le tableau ci-dessous.

Bloc physique 3 Page manquanteNoBloc physique 1* Bloc Physique 2*Physique Bloc 3*Blocs physiques 4*
Visitez la page 1 2 3 4 1 2 5 1 2 3 4 5
Blocs physiques 1 1 1 1 4 4 4 5

5 5
Bloc Physique 2
2 2 2 1 1 1

3
3


3
3 3 2 2

2
4




Comparaison après augmentation du nombre de blocages physiques
1 1 1 1

5
5 5 5 4 4

2
2 2

2
1 1 1 1 5


3
3

3
3 2 2 2 2



4

4 4 4 3 3 3
Page manquante no

Seul l'algorithme FIFO peut rencontrer des anomalies Belady, tandis que les algorithmes LRU et OPT ne connaîtront jamais d'anomalies Belady.

3.3 Algorithme de remplacement les moins récemment utilisés (LRU)

Les moins récemment utilisées (LRU, Les moins récemment utilisées)Sélection de l'algorithme de remplacementLes pages qui n'ont pas été visitées depuis le plus longtemps seront éliminées, Il est supposé que les pages qui n'ont pas été visitées au cours de la période écoulée pourraient ne pas l'être dans un avenir proche.

Cet algorithme définit un champ de visite pour chaque page afin d'enregistrer le temps écoulé depuis le dernier accès à la page Lors de l'élimination des pages, sélectionnez celle avec la plus grande valeur parmi les pages existantes à éliminer.

Graphique de déplacement lors de l'utilisation de l'algorithme de remplacement de page LRU
Visiter la page 7 0 1 2 0 3 0 4 2 3 0 3 2 1 2 0 1 7 0 1
Phy Blocs sical 1 7 7 7 2
2
4 4 4 0

1
1
1

Blocage physique 2
0 0 0
0
0 0 3 3

3
0
0

Blocage physique 3

1 1
3
3 2 2 2

2
2
7

Page manquante no







LRU a de meilleures performances, mais nécessite une prise en charge matérielle pour les registres et les piles, et est plus cher.

LRU est un algorithme de stack class. Théoriquement, il peut être prouvé que l’exception Belady est impossible à produire dans les algorithmes de pile. L'algorithme FIFO est implémenté sur la base d'une file d'attente et non d'un algorithme de pile.

3.4 Algorithme de remplacement d'horloge (CLOCK)

Les performances de l'algorithme LRU sont proches de l'OPT, mais il est difficile à mettre en œuvre et coûteux ; l'algorithme FIFO est simple à mettre en œuvre, mais a des performances médiocres. Par conséquent, les concepteurs de systèmes d'exploitation ont essayé de nombreux algorithmes, essayant d'approcher les performances de LRU avec une surcharge relativement faible. Ces algorithmes sont tous des variantes de l'algorithme CLOCK.

L'algorithme simple CLOCK associe un bit supplémentaire à chaque trame, appelé bit d'utilisation. Lorsqu'une page est chargée pour la première fois dans la mémoire principale puis consultée, le bit d'utilisation est défini sur 1.

Pour l'algorithme de remplacement de page, l'ensemble de cadres candidats au remplacement est considéré comme un tampon circulaire et est associé à un pointeur. Lorsqu'une page est remplacée, le pointeur est défini pour pointer vers l'image suivante dans le tampon.

Lorsqu'une page doit être remplacée, le système d'exploitation analyse le tampon pour trouver la première image avec un bit d'utilisation de 0. Chaque fois qu'une trame avec un bit d'utilisation de 1 est rencontrée, le système d'exploitation réinitialise le bit à 0 ; si toutes les trames ont un bit d'utilisation de 1, le pointeur termine un cycle dans le tampon, effaçant tous les bits d'utilisation mis à 0 et reste. à la position d'origine, en remplaçant la page dans le cadre. Étant donné que cet algorithme vérifie cycliquement l'état de chaque page, il est appelé algorithme CLOCK, également connu sous le nom d'algorithme Non récemment utilisé (NRU).

Les performances de l'algorithme CLOCK sont relativement proches de celles de LRU, et en augmentant le nombre de bits utilisés, l'algorithme CLOCK peut être rendu plus efficace. En ajoutant un bit modifié modifié au bit utilisé, nous obtenons un algorithme de remplacement CLOCK amélioré.

Chaque image se trouve dans l'une des quatre situations suivantes :

  • n'a pas été consultée récemment et n'a pas été modifiée (u=0, m=0).

  • a été récemment consulté mais n'a pas été modifié (u=1, m=0).

  • n'a pas été visité récemment, mais a été modifié (u=0, m=1).

  • a été récemment consulté et modifié (u=1, m=1).

L'algorithme effectue les étapes suivantes :

  • À partir de la position actuelle du pointeur, scannez le frame buffer. Lors de cette scrutation, aucune modification n'est apportée aux bits d'utilisation. La première trame rencontrée (u=0, m=0) est sélectionnée pour être remplacée.

  • Si l'étape 1 échoue, analysez à nouveau et trouvez le cadre de (u=0, m=1). La première trame de ce type rencontrée est sélectionnée pour être remplacée. Lors de cette scrutation, pour chaque trame sautée, son bit d'utilisation est mis à 0.

  • Si l'étape 2 échoue, le pointeur reviendra à sa position d'origine et les bits utilisés de toutes les images de l'ensemble seront 0. Répétez l'étape 1 et, si nécessaire, l'étape 2. Cela trouvera des cadres à remplacer.

L'algorithme CLOCK amélioré est meilleur que le simple algorithme CLOCK dans la mesure où

les pages qui n'ont pas changé sont préférées lors de leur remplacement. Cela fait gagner du temps puisque les pages modifiées doivent être réécrites avant d'être remplacées.

4. Stratégie d'allocation de pages

4.1 Taille de l'ensemble résident

Pour la mémoire virtuelle paginée, lors de la préparation à l'exécution, il n'est pas nécessaire ni impossible de lire toutes les pages d'un processus dans la mémoire principale. , par conséquent, le système d'exploitation doit décider du nombre de pages à lire. Autrement dit,

combien d'espace mémoire principale allouer à un processus spécifique, cela doit prendre en compte les points suivants :

  • Plus la quantité de stockage allouée à un processus est petite, plus le nombre de processus résidant dans la mémoire principale est petit. à tout moment Plus l'utilisation du temps du processeur peut être efficace.

  • Si un processus a trop peu de

    pages en mémoire principale, malgré le principe de localité, le taux de défauts de page sera quand même relativement élevé.

  • Si

    le nombre de pages est trop important, en raison du principe de localité, allouer plus d'espace mémoire principale à un processus spécifique n'aura pas d'impact évident sur le taux d'erreur du processus.

Sur la base de ces facteurs, les systèmes d'exploitation modernes adoptent généralement trois stratégies :

  • Remplacement local à allocation fixe : il alloue un certain nombre de blocs physiques à chaque processus, ne change pas pendant toute l'exécution . Si un défaut de page se produit pendant l'exécution du processus, vous ne pouvez sélectionner qu'une seule page parmi les pages de la mémoire du processus et l'échanger, puis charger la page requise. Il est difficile de déterminer le nombre de blocs physiques qui doivent être alloués à chaque processus lors de la mise en œuvre de cette stratégie : un nombre trop faible entraînera des erreurs de page fréquentes, et un nombre trop important réduira l'utilisation du processeur et d'autres ressources.

  • Remplacement global d'allocation variable
  •  : Il s'agit de la stratégie d'allocation et de remplacement de blocs physiques la plus simple à mettre en œuvre. Chaque processus du système se voit attribuer un certain nombre de blocs physiques, et le système d'exploitation lui-même maintient également une file d'attente de blocs physiques gratuits. blocs. Lorsqu'un défaut de page se produit dans un processus, le système retire un bloc physique de la file d'attente de blocs physiques libre, l'affecte au processus, puis charge la page à y charger.

  • Remplacement local d'allocation variable : il alloue un certain nombre de blocs physiques à chaque processus. Lorsqu'une erreur de page se produit dans un processus, une seule page des pages mémoire du processus peut être échangée, de sorte que. Cela n’affectera pas le fonctionnement des autres processus. Si le processus manque fréquemment des pages pendant l'exécution du processus, le système attribuera un certain nombre de blocs physiques au processus jusqu'à ce que le taux de pages manquées du processus tende vers un niveau approprié, à l'inverse, si le processus la page ; le taux d'échec est particulièrement faible pendant que le processus est en cours d'exécution. Vous pouvez alors réduire de manière appropriée le nombre de blocs physiques alloués au processus.

4.2 Moment de chargement des pages Afin de déterminer le moment où le système charge les pages manquantes lorsque le processus est en cours d'exécution, les deux stratégies de pagination suivantes peuvent être adoptées :

  • Stratégie de pré-pagination : selon le principe de localité, charger plusieurs pages adjacentes à la fois peut être plus efficace que charger une page à la fois. Mais si la plupart des pages chargées n’ont pas été consultées, cela est inefficace. Par conséquent, il est nécessaire d’utiliser une stratégie de pré-pagination basée sur la prédiction pour précharger en mémoire les pages qui devraient être consultées dans un avenir proche. Cependant, le taux de réussite actuel des pages pré-ajustées n'est que d'environ 50 %. Par conséquent, cette stratégie est principalement utilisée lorsque le processus est chargé pour la première fois et que le programmeur indique quelles pages doivent être chargées en premier.

    Stratégie de pagination de demande
  •  : La

    page à laquelle le processus doit accéder pendant le fonctionnement n'est pas dans la mémoire et une demande est effectuée, et le système transférera la page requise dans la mémoire. Les pages transférées par cette stratégie seront certainement accessibles, et cette stratégie est relativement facile à mettre en œuvre, cette stratégie est donc principalement utilisée dans les mémoires virtuelles actuelles. Son inconvénient est qu'il ne charge qu'une page à la fois. Lorsque de nombreuses pages sont chargées et extraites, cela consomme trop de surcharge d'E/S. 4.3 D'où charger la page

Le stockage externe dans le système de pagination des requêtes est divisé en deux parties : la zone de fichiers

pour le stockage des fichiers et la page d'échange. zone d'échange. La zone d'échange utilise généralement la méthode d'allocation continue, tandis que la zone de fichiers utilise la méthode d'allocation discrète, de sorte que la vitesse d'E/S disque de la zone d'échange est plus rapide que celle de la zone de fichiers. Il existe trois situations dans lesquelles les pages peuvent être transférées : Le système dispose de suffisamment d'espace dans la zone d'échange : Vous pouvez transférer toutes les pages requises depuis la zone d'échange pour augmenter la vitesse de transfert des pages. Pour cette raison, avant l'exécution du processus, les fichiers liés au processus doivent être copiés de la zone de fichiers

vers la zone d'échange.
  • Le système manque de suffisamment d'espace dans la zone d'échange : Tous les fichiers qui ne seront pas modifiés sont directement transférés depuis la zone de fichiers

    (pas besoin de réécrire lors de l'échange). Mais pour les pièces qui peuvent être modifiées, elles doivent être transférées vers la zone d'échange lors de leur échange, puis retransférées depuis la zone d'échange lorsque cela est nécessaire ultérieurement.
  • Méthode UNIX : Les fichiers liés au processus sont placés dans la zone des fichiers, donc les pages qui n'ont pas été exécutées doivent être chargées depuis la zone des fichiers. Les pages qui ont déjà été exécutées mais qui ont été échangées sont placées dans la zone d'échange, elles doivent donc être chargées depuis la zone d'échange la prochaine fois. Si la page partagée demandée par le processus est transférée en mémoire par d'autres processus, il n'est pas nécessaire de la transférer depuis la zone d'échange.

  • 5. Gigue de page (bosse) et ensemble de travail (ensemble résident) 5.1 Gigue de page (saut)

L'une des pires situations lors du processus de remplacement de page est que la page vient d'être affichée. qui a été échangée sera immédiatement transférée dans la mémoire principale, et la page qui vient d'être remplacée sera immédiatement supprimée de la mémoire principale. Ce

comportement de planification de page fréquent est appelé gigue, ou turbulence. Si un processus passe plus de temps à paginer qu'il n'en faut à s'exécuter, alors le processus est en difficulté.

Les interruptions de faute de page (gigue) se produisent fréquemment. La raison principale est que

le nombre de pages fréquemment consultées par un processus est supérieur au nombre de cadres de page physiques disponibles. La technologie de mémoire virtuelle peut conserver davantage de processus en mémoire pour améliorer l'efficacité du système. En régime permanent, la quasi-totalité de la mémoire principale est occupée par des blocs de processus, et le processeur et le système d'exploitation ont un accès direct à autant de processus que possible. Mais s'il n'est pas géré correctement, la majeure partie du temps du processeur sera consacrée à échanger des blocs, c'est-à-dire à demander l'opération de chargement de pages, plutôt qu'à exécuter les instructions du processus, ce qui réduira considérablement l'efficacité du système.

5.2 Ensemble de travail (ensemble résident)

L'ensemble de travail (ou ensemble résident) fait référence à l'ensemble de pages auxquelles un processus doit accéder dans un certain intervalle. Les pages fréquemment utilisées doivent figurer dans l'ensemble de travail, tandis que les pages qui n'ont pas été utilisées depuis longtemps sont supprimées de l'ensemble de travail. Afin d'éviter les perturbations du système, vous devez choisir une taille d'ensemble de travail appropriée.

Le principe du modèle d'ensemble de travail est de permettre au système d'exploitation de suivre l'ensemble de travail de chaque processus et d'attribuer au processus des blocs physiques plus grands que son ensemble de travail. S'il existe des blocs physiques libres, vous pouvez transférer un autre processus vers la mémoire pour augmenter le nombre de multi-programmes. Si la somme de tous les ensembles de travail augmente pour dépasser le nombre total de blocs physiques disponibles, le système d'exploitation met un processus en pause, le page et alloue ses blocs physiques à d'autres processus pour éviter toute interruption.

Choisir correctement la taille de l'ensemble de travail aura un impact important sur l'utilisation de la mémoire et l'amélioration du débit du système .

6. Résumé La méthode de gestion de

pagination et la méthode de gestion de segmentation sont similaires à de nombreux endroits, comme la mémoire est discontinue, et il existe des mécanismes de traduction d'adresses pour le mappage d'adresses, etc. Cependant, il existe de nombreuses différences entre les deux. Le Tableau 3-20 répertorie la comparaison entre la gestion de pagination et la gestion de segmentation sous divers aspects.

La taille de la page est fixe et déterminée par le système"Partage" et "Lien dynamique"Pas facile à mettre en œuvreFacile à mettre en œuvre

Paging Segmentation
Objectif La page est l'unité physique d'information, la pagination est un moyen d'obtenir une allocation discrète pour réduire la fraction externe de la mémoire et fournir Utilisation élevée de la mémoire. En d’autres termes, la pagination est uniquement due aux besoins de la gestion du système et non aux besoins des utilisateurs. Il s’agit d’une unité logique d’information, qui contient un ensemble d’informations dont la signification est relativement complète. Le but de la segmentation est de mieux répondre aux besoins des utilisateurs longueur
Le système divise l'adresse logique en deux parties : le numéro de page et l'intra. -adresse de page. Elle est implémentée par le matériel de la machine, il ne peut donc y avoir qu'une seule taille de page dans le système. La longueur du segment n'est pas fixe et dépend du programme écrit par l'utilisateur. Habituellement, le compilateur compile le programme de flux. selon les informations. Pour diviser espace d'adressage L'espace d'adressage du travail est unidimensionnel, c'est-à-dire un seul espace d'adressage linéaire. Le programmeur n'a besoin que d'un symbole de mémoire pour représenter une adresseLe travail. L'espace d'adressage est bidimensionnel. Lors de l'identification d'une adresse, le programmeur doit donner à la fois le nom du segment et l'adresse dans le segment. fragments, pas de fragments internes
Recommandations associées : "Tutoriel vidéo Linux"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn