Pagination et mémoire virtuelle

Apprends comment un système d’exploitation divise la mémoire en pages et utilise des tables des pages pour traduire chaque adresse utilisée par un programme. Suis les traductions dans le TLB, le petit cache matériel qui les accélère, et dans les tables des pages multiniveau qui limitent leur taille même pour les espaces d’adressage de 64 bits. Découvre ensuite comment l’échange permet aux programmes d’utiliser plus de mémoire que la machine n’en possède : traite les défauts de page, compare les politiques de remplacement des pages comme FIFO, LRU et l’algorithme de l’horloge sur des chaînes de références détaillées, et reconnais l’écroulement ainsi que ses remèdes.

IntermédiaireUnité 4 sur 9 de la formation Formation : Systèmes d’exploitation : processus, mémoire et fichiers

Ce que tu vas apprendre

  1. Divise la mémoire en pages et en cadres de page de taille fixe, et utilise une table des pages propre à chaque processus pour convertir chaque adresse virtuelle en adresse physique.
    • Découpe l’espace d’adressage virtuel en pages et la mémoire physique en cadres de page
      Explique pourquoi la pagination remplace les segments de taille variable et découpe une adresse virtuelle en numéro de page et déplacement.
    • Traduis une adresse avec une table des pages linéaire
      Lis les entrées de table des pages, suis les étapes de traduction d’une adresse virtuelle en adresse physique et calcule la mémoire occupée par une table des pages.
  2. Explique comment un tampon de traduction met en cache les traductions récentes, prédis la fréquence de ses succès à partir des accès d’un programme et assure la validité de ses traductions lors des échecs et des commutations de contexte.
    • Suis le déroulement d’une recherche réussie et d’un échec de recherche dans le TLB
      Suis les étapes effectuées par le matériel avec un tampon de traduction et utilise la localité pour prédire la fréquence des recherches réussies.
    • Gère les échecs de recherche dans le TLB et les commutations de contexte
      Compare les TLB gérés par le matériel et par logiciel, assure la validité des traductions lors des commutations de contexte et calcule la couverture du TLB.
  3. Calcule pourquoi les tables des pages linéaires gaspillent de la mémoire, compare les structures qui réduisent leur taille et traduis des adresses à l’aide de tables des pages multiniveau, en mettant en balance la mémoire économisée et le ralentissement en cas d’échec de recherche dans le TLB.
    • Compare les méthodes de réduction de la taille d’une table des pages
      Évalue les pages plus grandes, la segmentation paginée et les tables des pages inversées au regard du coût en mémoire d’une table linéaire.
    • Traduis les adresses avec une table des pages à deux niveaux
      Découpe une adresse virtuelle en indice de répertoire, indice de table et déplacement, puis parcours le répertoire de pages et la table des pages jusqu’à obtenir une adresse physique.
    • Adapte les tables des pages aux adresses de 64 bits
      Détermine le nombre de niveaux nécessaires à une table des pages et explique le fonctionnement pratique des tables x86-64 à quatre et cinq niveaux et des pages de grande taille.
  4. Conserve sur un disque ou un SSD les pages qui ne tiennent pas en mémoire, suis un défaut de page étape par étape, estime son coût et utilise volontairement les défauts de page pour l’allocation différée et la copie sur écriture.
    • Échange des pages avec le stockage et traite un défaut de page
      Explique l’espace d’échange et le bit de présence, puis suis le travail du matériel et du système d’exploitation lors d’un défaut de page.
    • Estime le coût des défauts de page et maintiens des cadres de page libres
      Calcule le temps d’accès effectif en présence de défauts de page et explique comment le système d’exploitation libère des cadres à l’avance et réécrit les pages modifiées.
    • Utilise les défauts de page pour l’allocation différée, la copie sur écriture et le partage
      Explique comment les systèmes d’exploitation utilisent les bits de validité, de présence et de protection pour différer du travail et partager la mémoire en toute sécurité.
  5. Simule et compare des politiques de remplacement sur des chaînes de références, explique comment les systèmes existants approchent LRU, puis reconnais l’écroulement et remédies-y.
    • Évalue les politiques de remplacement par rapport à la politique optimale
      Compte les succès et les défauts sur une chaîne de références, classe les défauts et utilise la politique optimale comme référence.
    • Compare les remplacements FIFO, aléatoire et LRU
      Simule les politiques classiques sur une même chaîne de références, explique l’anomalie de Belady et choisis une politique adaptée à un profil d’accès donné.
    • Approche LRU avec les bits de référence et l’algorithme de l’horloge
      Exécute l’algorithme de l’horloge avec les bits de référence et de modification, et explique pourquoi les systèmes existants approchent LRU au lieu de l’implémenter exactement.
    • Reconnais l’écroulement et alloue les cadres de page
      Explique l’écroulement à l’aide du modèle de l’ensemble de travail et choisis des remèdes comme le contrôle d’admission, le contrôle de la fréquence des défauts de page et le tueur de processus en cas de manque de mémoire.

Pagination et mémoire virtuelle : cours

5 chapitres

1

Traduis les adresses virtuelles par pagination

Chaque lecture d’instruction, chargement et stockage commence par une adresse dans l’espace virtuel d’un processus. La pagination permet au système d’exploitation de placer son contenu dans des cadres physiques distincts tout en conservant, pour le programme, une vue d’adresses consécutives. Tu découperas des adresses, suivras une recherche dans une table des pages linéaire et distingueras l’adresse d’une entrée de correspondance de celle des données demandées. Les mêmes calculs révèlent aussi le coût en espace de la pagination.

1.1 Pages, cadres et champs d’adresse

Un programme utilise des adresses virtuelles. La mémoire physique contient les octets dans des cadres. La pagination divise l’espace d’adressage virtuel en pages de taille égale et la mémoire physique en cadres de même taille. Le système d’exploitation peut placer n’importe quelle page dans n’importe quel cadre libre. La page 0 peut occuper le cadre 12 et la page 1 le cadre 3 ; le programme voit toujours des adresses virtuelles consécutives.

Cela supprime la fragmentation externe pour les allocations de pages individuelles. Avec des segments de taille variable, une demande peut échouer parce que l’espace libre est divisé en trous trop petits. Avec la pagination, un cadre libre peut toujours contenir une page. Un espace d’adressage creux peut laisser un grand espace entre le tas et la pile sans réserver de cadres physiques pour cet espace.

Mesurer l’espace inutilisé dans les pages

La pagination présente néanmoins une fragmentation interne. Une zone doit occuper un nombre entier de pages, même lorsque sa dernière page est partiellement vide. Une zone de 9 000 octets nécessite trois pages de 4 KiB : deux pages contiennent 8 192 octets, laissant 808 octets pour la troisième. L’allocation occupe 12 288 octets, dont 3 288 sont inutilisés. KiB signifie 1 024 octets ; MiB signifie 1 048 576 octets. Certains ouvrages utilisent KB et MB pour ces quantités binaires.

Découper l’adresse en champs

Une adresse désigne à la fois une page et un octet à l’intérieur de celle-ci. Pour une taille de page de 2k octets, les k bits de poids faible constituent le déplacement. Les bits de poids fort restants constituent le numéro de page virtuelle, ou VPN. Une adresse de 32 bits avec des pages de 4 KiB comporte 12 bits de déplacement et 20 bits de VPN. Cet espace d’adressage compte 220 pages virtuelles possibles.

Pour 0x00403A7C, les trois derniers chiffres hexadécimaux donnent le déplacement 0xA7C, car chaque chiffre hexadécimal représente quatre bits. Les cinq premiers chiffres donnent le VPN 0x00403. Ce raccourci fonctionne ici parce que la frontière entre les champs tombe entre deux chiffres hexadécimaux. Pour une autre taille de page, compte les bits avant de découper la valeur hexadécimale écrite.

Le calcul décimal donne le même résultat :

VPN=⌊VA/P⌋,deˊplacement=VA mod P

Ici, P est la taille de page en octets. Avec des pages de 1 024 octets, l’adresse virtuelle 5 000 a pour VPN 4 et pour déplacement 904. Quatre pages complètes représentent 4 096 octets ; les 904 octets restants situent l’adresse dans la page 4. Les déplacements commencent à zéro : ceux de cette page vont donc de 0 à 1 023.

La traduction remplace le VPN par un numéro de cadre physique. Elle recopie le déplacement sans changement : l’octet 904 d’une page virtuelle est l’octet 904 de son cadre. Le numéro de page seul n’est pas une adresse d’octet. Multiplie un numéro de cadre par la taille de page pour trouver l’adresse de début du cadre, puis ajoute le déplacement.

Choisir une taille de page

Des pages plus grandes réduisent le nombre de correspondances et permettent à chaque traduction en cache de couvrir davantage d’octets. Elles gaspillent aussi plus d’espace dans les pages partiellement utilisées et déplacent davantage de données lors du chargement d’une page. Une taille de page de base courante est de 4 KiB ; d’autres systèmes utilisent 16 KiB ou 64 KiB. x86-64 prend aussi en charge des projections de grande taille, comme les pages de 2 MiB.

Points clés

  • Une page virtuelle et un cadre physique ont la même taille.
  • N’importe quel cadre libre peut contenir n’importe quelle page ; des pages virtuelles voisines n’ont pas besoin d’occuper des cadres voisins.
  • Les bits de poids faible de l’adresse donnent le déplacement, que la traduction conserve.
  • Arrondis les allocations à un nombre entier de pages supérieur lors du calcul de la fragmentation interne.
  • Des pages plus grandes réduisent le surcoût des correspondances, mais augmentent le gaspillage potentiel.

1.2 Lire une table des pages linéaire

Une table des pages répertorie les correspondances d’un processus. Dans une table des pages linéaire, le VPN indexe un tableau : l’entrée 4 décrit la page virtuelle 4. Chaque processus possède sa propre table : une même adresse virtuelle peut donc désigner des octets physiques différents selon le processus. Lors d’une commutation de contexte, le système d’exploitation sélectionne la table du nouveau processus au moyen d’un registre de base de table des pages.

Lire l’état et les permissions d’une entrée

Une entrée de table des pages, ou PTE, contient un numéro de cadre physique (PFN) et des informations de contrôle. Dans le modèle pédagogique, un bit de validité indique que la page appartient à l’espace d’adressage ; un bit de présence indique que son contenu se trouve en mémoire physique. Les bits de protection contrôlent les lectures, les écritures, l’exécution et les accès en mode utilisateur. Un bit de modification enregistre les écritures effectuées depuis sa dernière remise à zéro. Un bit d’accès enregistre les utilisations depuis sa dernière remise à zéro ; il est aussi appelé bit de référence ou d’utilisation.

Ce sont des rôles conceptuels, et non la garantie d’une organisation matérielle identique partout. Sur x86, une PTE ne possède pas de bit de validité distinct. Lorsque le bit de présence est à zéro, le système d’exploitation consulte ses propres informations pour distinguer une adresse inutilisée d’une page valide stockée ailleurs. Sur x86, le matériel positionne les bits d’accès et de modification ; le système d’exploitation les gère et les remet à zéro.

Localiser l’entrée et l’octet

Pour traduire une adresse avec une table linéaire :

  1. Découpe l’adresse virtuelle en VPN et déplacement.
  2. Localise son entrée à l’adresse table base+VPN×PTE size.
  3. Vérifie que la correspondance existe, que la page est présente et que l’accès est autorisé.
  4. Forme l’adresse physique avec PFN×page size+offset.
  5. Lis ou écris l’octet à cette adresse physique.

Avec des pages de 1 024 octets, l’adresse virtuelle 5 000 donne le VPN 4 et le déplacement 904. Supposons que la PTE 4 indique que la page est présente, autorise la lecture demandée et contienne le PFN 9. Le cadre 9 commence à 9 216 : l’adresse physique de l’octet est donc 10 120. L’adresse de la table elle-même relève d’un calcul distinct : si les entrées occupent 4 octets, la PTE 4 se trouve 16 octets après la base de la table.

Pour un exemple hexadécimal, des pages de 4 KiB découpent 0x00403A7C en VPN 0x403 et déplacement 0xA7C. Si la correspondance autorisée contient le PFN 0x1F2B5, l’adresse physique est 0x1F2B5A7C. La PTE se trouve à base + 0x403 × 4 = base + 0x100C. La concaténation du déplacement forme une adresse de données ; la multiplication du VPN par la taille d’une entrée localise la PTE. Ces deux adresses servent à des usages différents.

Une vérification qui échoue déclenche une exception. Le système d’exploitation peut charger une page valide absente de la mémoire, fournir une mémoire remplie de zéros ou corriger une autre correspondance légitime. Une adresse invalide ou un accès interdit provoque généralement une erreur de segmentation. Une page présente peut tout de même refuser une écriture si sa protection l’interdit.

Compter l’espace des tables et les lectures mémoire

Les tables linéaires sont coûteuses même pour les petits processus. Avec des adresses virtuelles de 32 bits et des pages de 4 KiB, chaque table nécessite 1 048 576 entrées. À raison de 4 octets chacune, cela représente 4 MiB par processus, y compris les entrées des pages virtuelles inutilisées. Cent processus ont besoin de 400 MiB rien que pour ces tables.

Elles ajoutent aussi une recherche à chaque référence mémoire. Dans un modèle simple sans cache de traduction, le processeur lit une PTE puis les données demandées : deux accès mémoire. Le partage reste possible : deux processus peuvent volontairement associer leurs pages virtuelles distinctes au même PFN, comme pour du code de programme en lecture seule.

Points clés

  • Une table linéaire est un tableau indexé par VPN.
  • Emplacement de la PTE = table base+VPN×entry size.
  • Adresse physique = PFN×page size+offset.
  • La présence et les permissions répondent à des questions différentes.
  • La taille de la table dépend de tout l’espace d’adressage virtuel, y compris les pages inutilisées.
  • Des tables de processus distinctes peuvent volontairement partager un cadre physique.
2

Accélère la traduction avec le TLB

Traduire chaque référence en accédant à la mémoire ajouterait une recherche avant chaque accès utile. Un TLB conserve les traductions récentes près du processeur. Son succès dépend de l’ordre des accès autant que de sa capacité, et son contenu doit rester correct lorsque les processus changent ou que les correspondances sont modifiées. Tu suivras les succès et les échecs de recherche, estimeras le temps d’accès moyen et relieras les traductions en cache au travail effectué par le système d’exploitation.

2.1 Succès et échecs de recherche dans le TLB et localité

Un tampon de traduction, ou TLB, est un petit cache matériel de traductions d’adresses situé dans l’unité de gestion mémoire (MMU). Il contient des correspondances récentes entre VPN et PFN ainsi que des informations d’accès. Il met en cache des traductions, tandis qu’un cache de données contient les octets du programme. Une recherche peut échouer dans un cache et réussir dans l’autre.

Suivre les succès et les échecs

Lors d’une recherche réussie dans le TLB, la MMU obtient le PFN de l’entrée en cache, vérifie les permissions d’accès et combine le PFN avec le déplacement inchangé. Elle n’a pas besoin de lire la table des pages. Un succès ne dispense jamais de faire respecter la protection. Le bit de validité du TLB indique qu’une entrée en cache est utilisable ; il n’indique pas si une page virtuelle appartient à l’espace d’adressage du processus.

En cas d’échec de recherche dans le TLB, le système doit rechercher la traduction dans la table des pages. Si la page est présente et que l’accès est autorisé, il installe la traduction et termine ou réessaie la référence. Aucune lecture sur le stockage n’est nécessaire. Si, au contraire, la table indique une correspondance absente ou un accès interdit, un défaut de page nécessite l’intervention du système d’exploitation. Un échec de recherche dans le TLB ne constitue pas à lui seul un défaut de page.

Prédire la réutilisation grâce à la localité

Les TLB peuvent contenir bien moins d’entrées qu’il n’existe de pages virtuelles, mais ils fonctionnent bien parce que les programmes présentent une localité. La localité spatiale signifie que des adresses voisines sont utilisées à des instants proches. Dès qu’une traduction est en cache, de nombreuses adresses de cette page peuvent l’utiliser. La localité temporelle signifie que les adresses utilisées récemment seront probablement réutilisées, comme pour les instructions d’une boucle.

Considère 16 384 entiers de quatre octets stockés consécutivement dans un tableau aligné sur une frontière de page. Avec des pages de 4 KiB, chaque page contient 1 024 entiers : le tableau occupe donc 16 pages. En partant d’un TLB vide et sans autres traductions qui interfèrent, le premier entier de chaque page provoque un échec. Les 1 023 suivants sur cette page donnent des succès. Il y a en tout 16 échecs et 16 368 succès, soit un taux de succès d’environ 99,9 %.

L’ordre des accès modifie ce résultat. En C, int a[1024][1024] stocke les lignes consécutivement. Supposons des entiers de quatre octets, un alignement sur une frontière de page, des pages de 4 KiB et un TLB LRU de 64 entrées. Chaque ligne occupe une page. Un parcours ligne par ligne produit un échec par ligne, soit 1 024 échecs. Un parcours colonne par colonne visite 1 024 pages différentes avant de revenir à la première. Sa traduction a déjà été évacuée : les 1 048 576 références au tableau donnent donc toutes lieu à un échec. La taille du tableau n’a pas changé ; c’est la distance entre deux utilisations qui change.

Calculer le coût moyen des succès et des échecs

Le modèle de durée doit préciser le coût d’un succès et celui d’un échec. Supposons qu’un accès mémoire prenne 100 ns, que la recherche dans le TLB n’ajoute aucun temps et qu’un échec avec une table linéaire ajoute une lecture mémoire. Un succès coûte 100 ns et un échec dont la traduction est trouvée coûte 200 ns. Avec un taux de succès de 98 % :

EAT=0,98(100)+0,02(200)=102 ns

Cette moyenne comprend l’accès final aux données dans les deux cas. Ne compter que la lecture supplémentaire de la PTE comme coût total de l’échec sous-estimerait ce coût. Avec des tables multiniveau, un échec peut nécessiter plusieurs lectures de tables : la localité compte donc encore davantage.

Points clés

  • Le TLB stocke des traductions et des permissions, pas des données de programme.
  • Un succès impose toujours de vérifier les permissions d’accès.
  • Un échec de recherche dans le TLB peut être résolu sans défaut de page.
  • Des accès voisins partagent une traduction ; des accès répétés la réutilisent.
  • L’ordre des accès peut modifier considérablement le taux d’échec de recherche dans le TLB.

2.2 Maintenir la validité des traductions en cache

Un échec de recherche dans le TLB nécessite une recherche de traduction, mais les architectures répartissent ce travail différemment. Avec un TLB géré par le matériel, comme sur x86 et ARM, la MMU parcourt la table des pages à partir de la racine sélectionnée. Le matériel définit le format qu’il peut parcourir. Si la correspondance est utilisable, il remplit le cache de traduction sans appeler de gestionnaire du système d’exploitation pour cet échec ordinaire.

Un TLB géré par logiciel, utilisé dans les architectures classiques MIPS et SPARC, déclenche une exception en cas d’échec. Un gestionnaire du système d’exploitation trouve la correspondance et l’insère à l’aide d’instructions privilégiées. Cela donne au système d’exploitation davantage de liberté quant à la structure de sa table. Le retour de cette exception relance l’instruction dont la recherche a échoué ; le retour d’un appel système poursuit normalement après l’appel.

Garder le gestionnaire de remplissage accessible

Le gestionnaire d’échecs doit pouvoir accéder de manière fiable à ses propres instructions et données. Si le traitement d’un échec déclenche immédiatement, dans le gestionnaire, le même type d’échec non résolu, le système peut ne plus progresser. Les architectures évitent cela grâce à une mémoire non traduite ou à des traductions permanentes pour le code et les données indispensables du gestionnaire.

Sélectionner le bon espace d’adressage

Les commutations de contexte introduisent un autre problème. Le processus A peut associer le VPN 7 au cadre 20, tandis que le processus B associe le VPN 7 au cadre 90. Conserver l’entrée de A sans identifiant après le passage à B enverrait B vers le mauvais cadre. Charger la racine de la table des pages de B ne suffit pas à rendre sûre une correspondance en cache dépourvue d’identifiant.

Une solution consiste à invalider les entrées concernées du TLB lors d’une commutation. Leurs bits de validité sont remis à zéro, ce qui oblige le nouveau processus à les remplir de nouveau. Une autre solution associe aux entrées un identifiant d’espace d’adressage (ASID). La recherche vérifie alors à la fois la page virtuelle et son identifiant d’espace d’adressage. x86 appelle son identifiant un identifiant de contexte de processus, ou PCID. Les entrées de plusieurs espaces d’adressage peuvent rester en cache tandis que le matériel ne sélectionne que celles qui appartiennent au contexte courant. La réutilisation des identifiants doit néanmoins être gérée afin qu’une ancienne entrée ne soit pas prise pour celle d’un nouvel espace d’adressage.

Invalider les correspondances modifiées

La modification d’une PTE rend aussi périmée une traduction en cache. Supposons que le système d’exploitation retire la permission d’écriture en mémoire mais laisse une entrée du TLB autorisant l’écriture. Le processeur pourrait continuer à autoriser les écritures par cette ancienne entrée. Le système d’exploitation doit invalider les traductions concernées. Sur une machine à plusieurs cœurs, chaque cœur susceptible de conserver la correspondance en cache doit participer. Cette coordination s’appelle une invalidation interprocesseur du TLB.

Calculer la couverture des traductions

La capacité compte autant que la validité. La couverture du TLB est la quantité de mémoire représentée par les traductions en cache :

reach=entries×page size

Un TLB de 64 entrées couvre 256 KiB avec des pages de 4 KiB et 128 MiB avec des pages de 2 MiB. La couverture décrit l’étendue des correspondances, et non la capacité de la mémoire physique. Les processeurs existants peuvent avoir des capacités de TLB distinctes selon la taille des pages : ce calcul compare donc un nombre fixe d’entrées.

Lorsqu’un TLB est plein, il remplace une traduction. LRU favorise les entrées récemment utilisées ; le remplacement aléatoire choisit sans suivre la date de dernière utilisation. Parcourir en boucle une page de plus que le TLB ne peut en contenir met LRU en échec, car chaque traduction est évacuée juste avant d’être nécessaire à nouveau.

Points clés

  • Le matériel ou un gestionnaire du système d’exploitation peut remplir un TLB.
  • Les ASID distinguent des VPN identiques appartenant à des espaces d’adressage différents.
  • Modifier une PTE nécessite d’invalider les traductions périmées en cache.
  • Une invalidation interprocesseur du TLB coordonne l’invalidation entre les cœurs.
  • La couverture est égale au nombre d’entrées multiplié par la taille de page.
3

Réduis la taille des tables des pages

Les grands espaces d’adressage virtuels rendent impraticable un tableau complet de correspondances de pages. Les structures de tables des pages économisent de l’espace en organisant ou en omettant les correspondances de différentes façons. Tu compareras ces choix, suivras un parcours à deux niveaux et appliqueras le même raisonnement sur les champs de bits à x86-64. Chaque structure met en balance la mémoire utilisée pour les correspondances et le travail nécessaire lorsque le TLB ne contient pas une traduction ; les pages de grande taille modifient les deux côtés de ce compromis.

3.1 Solutions de remplacement d’une table linéaire complète

Une table des pages linéaire réserve une entrée pour chaque page virtuelle possible. La plupart des processus n’utilisent qu’une petite partie de leur espace d’adressage : le code et le tas se trouvent près d’une extrémité, la pile près de l’autre, et un grand espace les sépare. Une table comportant des millions d’entrées invalides consomme tout de même de la mémoire. Réduire ce coût implique de modifier la taille des pages, l’organisation de la table ou les deux.

Réduire le nombre de pages

Des pages plus grandes réduisent le nombre de VPN. Avec un espace d’adressage de 32 bits et des pages de 16 KiB, 14 bits forment le déplacement et 18 bits forment le VPN. Une table linéaire nécessite alors 262 144 entrées. À raison de 4 octets chacune, elle occupe 1 MiB, contre 4 MiB pour des pages de 4 KiB. Cela économise de l’espace pour la table, même si le processus peut toujours adresser 4 GiB d’octets virtuels.

Le coût se déplace ailleurs. Une petite allocation peut gaspiller davantage de sa dernière page, et le chargement d’une page en mémoire transfère davantage d’octets. Augmenter la taille des pages ne distingue pas une partie de l’espace d’adressage très utilisée d’un espace inutilisé ; cela réduit simplement le nombre d’entrées pour les deux.

Omettre les espaces vides avec des tables de segments distinctes

La segmentation paginée donne au code, au tas et à la pile leurs propres tables des pages. Chaque segment possède une base de table et une borne pour ses numéros de page. L’espace entre les segments ne nécessite aucune entrée. La traduction sélectionne d’abord le segment, vérifie sa borne, puis recherche la page dans ce segment.

Cette approche dépend d’un découpage pertinent en segments. Ses tables peuvent avoir des longueurs différentes et nécessiter de l’espace physique contigu, ce qui réintroduit la fragmentation externe pour les tables elles-mêmes. Les pages de données du processus restent de taille fixe ; les objets fragmentés sont désormais les tables des pages de taille variable.

Indexer les cadres physiques

Une table des pages inversée change ce que décrit une entrée. Elle comporte une entrée par cadre physique pour toute la machine, indiquant le processus et le VPN qui l’occupent. Avec 16 GiB de mémoire physique et des cadres de 4 KiB, elle nécessite 4 194 304 entrées, quel que soit le nombre de processus possédant de grands espaces d’adressage virtuels. Il faut encore connaître la taille d’une entrée pour convertir ce nombre en un total d’octets.

Une table ordinaire utilise le VPN comme indice direct dans un tableau. Une table inversée recherche à la place la paire constituée de l’identité de l’espace d’adressage et du VPN. Une structure de hachage peut rendre cette recherche efficace, mais les collisions peuvent nécessiter des recherches supplémentaires. Les cadres partagés nécessitent aussi un traitement supplémentaire, car un cadre peut avoir plusieurs noms virtuels. Les tables des pages hachées, comme celles utilisées dans les systèmes PowerPC, reposent sur des principes de recherche apparentés ; une table hachée n’est pas nécessairement une table inversée comportant strictement une entrée par cadre.

Allouer les tables par zone utilisée

Les tables des pages multiniveau conservent la recherche indexée tout en n’allouant des pages de table de niveau inférieur que là où des correspondances sont nécessaires. Une entrée de niveau supérieur peut marquer toute une plage inutilisée sans allouer sa table de niveau inférieur. C’est la solution courante sur les systèmes modernes. L’économie est maximale pour les espaces d’adressage creux, tandis qu’un échec de recherche dans le TLB nécessite davantage d’étapes de recherche.

Pour comparer les solutions, demande-toi ce qui détermine leur taille. Une table linéaire grandit avec le nombre de pages virtuelles par processus. Une table inversée grandit avec le nombre de cadres physiques du système. Une hiérarchie grandit avec les branches de tables nécessaires aux correspondances. Aucun de ces nombres n’est le nombre d’octets de données du programme actuellement présents en mémoire.

Points clés

  • Des pages plus grandes réduisent le nombre de PTE, mais peuvent augmenter la fragmentation interne.
  • Des tables de segments distinctes omettent les espaces vides, mais peuvent nécessiter l’allocation de tables de taille variable.
  • Une table inversée comporte une entrée par cadre physique du système.
  • Une recherche dans une table inversée nécessite l’identité d’un espace d’adressage et un VPN.
  • Une hiérarchie omet les tables de niveau inférieur pour les plages d’adresses inutilisées.

3.2 Parcourir une table des pages à deux niveaux

Une table des pages à deux niveaux divise une grande table linéaire en morceaux de la taille d’une page. Un répertoire de pages pointe vers ces morceaux. Le répertoire est alloué, mais une page de table des pages de niveau inférieur ne l’est que lorsque sa zone nécessite des correspondances. Une entrée de répertoire absente peut représenter toute une plage inutilisée.

Déduire le découpage 10/10/12

Prends une adresse virtuelle de 32 bits, des pages de 4 KiB et des entrées de 4 octets. Chaque page de table des pages contient 1 024 entrées : un indice de 10 bits sélectionne donc une entrée. L’adresse se découpe en 10 bits de répertoire, 10 bits de table et 12 bits de déplacement. Chaque table de niveau inférieur associe 1 024 pages à des cadres, couvrant 4 MiB d’adresses virtuelles. Le répertoire comporte lui aussi 1 024 entrées et occupe une page de 4 KiB.

Suivre les entrées de répertoire et de table

Le parcours suit des pointeurs physiques :

  1. Ajoute directory index×4 à la base physique du répertoire. Lis cette entrée de répertoire de pages (PDE).
  2. Si elle pointe vers une page de table, multiplie son PFN par 4 096 pour obtenir la base physique de cette table.
  3. Ajoute table index×4 et lis la PTE.
  4. Vérifie la correspondance de dernier niveau et combine son PFN avec le déplacement.

La PDE pointe vers une table, tandis que la PTE pointe vers la page de données demandée. Confondre ces rôles dirige une référence vers la mémoire des tables des pages au lieu des données du programme.

Pour l’adresse virtuelle 0x00803ABC, l’indice de répertoire est 2, l’indice de table est 3 et le déplacement est 0xABC. Supposons que l’entrée de répertoire 2 pointe vers le cadre 0xA1. Sa table commence à 0xA1000. L’entrée 3 se trouve à 12 octets du début de cette table, à l’adresse 0xA100C. Si la PTE indique que la page est présente, autorise l’accès et contient le PFN 0x2F3C4, l’adresse des données est 0x2F3C4ABC.

Remarque les deux multiplicateurs différents. Un indice de table compte des entrées : multiplie-le donc par la taille d’une entrée. Un PFN compte des cadres : multiplie-le donc par la taille de page. Le déplacement compte des octets dans la page finale et ne nécessite aucun de ces multiplicateurs. La base du répertoire et les pointeurs utilisés pendant le parcours sont des adresses physiques ; utiliser des pointeurs virtuels nécessiterait une autre traduction pour effectuer cette traduction.

Compter les tables et les lectures de recherche

L’espace dépend de la répartition des correspondances. Supposons qu’un processus utilise les 8 MiB du bas de son espace de 4 GiB et les 4 MiB du haut, les deux zones étant alignées sur des frontières de répertoire. La zone basse nécessite deux pages de table et la zone haute une. Avec le répertoire, cela donne quatre pages, soit 16 KiB, au lieu d’une table linéaire de 4 MiB. Répartir le même nombre de pages de données de façon éparse dans de nombreuses zones de répertoire pourrait nécessiter davantage de pages de table.

Dans le schéma pédagogique de base, une PDE invalide signifie qu’aucune des pages de sa zone de 4 MiB n’appartient à l’espace d’adressage. Le parcours s’arrête sans lire de PTE. Les systèmes d’exploitation complets peuvent aussi utiliser des entrées absentes pour l’allocation différée : leurs informations logicielles déterminent donc la signification d’une entrée que le matériel considère comme absente.

La hiérarchie économise de l’espace en ajoutant du travail lors d’un échec de recherche dans le TLB. Un parcours à deux niveaux sans cache lit une PDE et une PTE avant d’accéder aux données : trois lectures mémoire au total, contre deux pour une table linéaire. Une recherche réussie dans le TLB évite ces lectures de tables. Un taux de succès élevé devient donc particulièrement précieux à mesure que la hiérarchie s’approfondit.

Points clés

  • Le découpage 10/10/12 découle de pages de 4 KiB et d’entrées de 4 octets.
  • Une PDE localise une page de table ; une PTE localise un cadre de données.
  • Multiplie les indices par la taille d’une entrée et les PFN par la taille de page.
  • Compte le répertoire ainsi que les pages de tables de niveau inférieur allouées.
  • Un échec de recherche dans le TLB coûte des lectures de tables supplémentaires ; un succès évite le parcours.
  • Les correspondances éparses économisent le plus d’espace lorsqu’elles partagent un petit nombre de pages de table.

3.3 Tables à plusieurs niveaux et pages de grande taille sur x86-64

Le nombre de niveaux de tables découle de trois valeurs : le nombre de bits d’adresse virtuelle effectivement pris en charge, la taille de page et la taille d’une entrée. Calcule d’abord le nombre de bits du déplacement. Calcule ensuite combien d’entrées tiennent dans une page de table et combien de bits sélectionnent une entrée. Enfin, divise les bits restants du VPN en champs d’indice, en arrondissant si nécessaire le nombre de niveaux à l’entier supérieur.

Déduire les quatre niveaux

Pour la pagination x86-64 à quatre niveaux, le nombre de bits d’adresse virtuelle pris en charge est de 48. Une page de 4 KiB fournit 12 bits de déplacement. Une entrée de 8 octets donne 512 entrées par page de table, sélectionnées par 9 bits. Le VPN comporte 36 bits : quatre indices de 9 bits sont donc nécessaires. Un parcours réussi sans cache suit quatre entrées puis accède aux données.

Les niveaux sont la PML4, la table des pointeurs de répertoires de pages, le répertoire de pages et la table des pages. Leurs indices occupent les bits 47 à 39, 38 à 30, 29 à 21 et 20 à 12. CR3 indique la racine physique. Linux nomme les niveaux correspondants PGD, PUD, PMD et PTE ; sa hiérarchie générique comprend un niveau P4D, qui est fusionné lorsque l’architecture n’utilise que quatre niveaux.

Distinguer le nombre de bits d’adresse de la mémoire vive

Un espace d’adressage prenant en charge 48 bits contient 256 TiB d’octets adressables. Les adresses sont néanmoins conservées dans des valeurs de 64 bits : dans la forme canonique ordinaire, les bits au-dessus du bit 47 répètent ce bit. Les plages basse et haute valides sont séparées par un espace non canonique. Parler d’un espace d’adressage de 48 bits ne signifie pas que toutes les configurations de 64 bits sont utilisables ni qu’un processus reçoit 256 TiB de mémoire vive.

Une table linéaire serait énorme. Il existe 236 pages virtuelles ; en multipliant par des entrées de 8 octets, on obtient 239 octets, soit 512 GiB par processus. Une hiérarchie représente les plages inutilisées par des branches absentes au lieu de réserver toutes ces entrées.

Les processeurs prenant en charge la pagination à cinq niveaux peuvent utiliser 57 bits d’adresse virtuelle lorsque ce mode est activé. Un indice supplémentaire de 9 bits est ajouté au-dessus de la PML4, ce qui donne 128 PiB d’octets adressables et une lecture de table possible supplémentaire. Les bits supérieurs d’une adresse canonique répètent alors le bit 56. Les fonctions prises en charge par le processeur et le mode de pagination activé déterminent le nombre de bits applicable.

Arrêter le parcours à une page de grande taille

Les pages de grande taille arrêtent le parcours plus tôt. Sur x86-64, une entrée au niveau du répertoire de pages peut associer directement une page de 2 MiB à un cadre, en laissant 21 bits de déplacement. Une entrée de la table des pointeurs de répertoires de pages peut associer une page de 1 GiB à un cadre, en laissant 30 bits de déplacement. Les bits de poids plus faible qui sélectionnent autrement des entrées de niveau inférieur sélectionnent alors des octets dans cette page de grande taille.

Cela réduit à la fois la longueur du parcours et le nombre de traductions nécessaires pour une zone donnée. La couverture du TLB augmente, ce qui peut aider les bases de données et d’autres charges de travail importantes. La correspondance physique nécessite une zone contiguë de cadres correctement alignée, et une page de grande taille partiellement utilisée peut gaspiller beaucoup plus de mémoire. Linux prend en charge l’allocation explicite de pages géantes et les pages géantes transparentes ; les tailles prises en charge dépendent de l’architecture.

Le décompte simple des coûts suppose qu’aucune entrée de table n’est en cache. Les processeurs existants mettent en cache les structures de pagination et les lectures de tables peuvent réussir dans les caches ordinaires. Quatre niveaux ne signifient donc pas nécessairement quatre attentes dues à la mémoire principale à chaque échec de recherche dans le TLB. Ils décrivent la chaîne de dépendances et son coût sans cache.

Points clés

  • Calcule le nombre de bits d’indice à partir du nombre d’entrées par page de table.
  • La pagination x86-64 à quatre niveaux divise les 36 bits du VPN en quatre indices de 9 bits.
  • Le nombre de bits d’adresse virtuelle pris en charge est inférieur aux 64 bits qui contiennent l’adresse.
  • Une entrée de page de grande taille arrête le parcours plus tôt et donne davantage de bits au déplacement.
  • Les caches de parcours réduisent le coût habituel sans modifier la hiérarchie.
4

Dépasse la capacité de la mémoire physique grâce à l’échange

Un processus peut posséder plus de pages virtuelles qu’il n’en conserve en mémoire physique à un instant donné. Le système d’exploitation fournit le contenu d’une page lorsqu’un accès le nécessite, parfois depuis l’espace d’échange et parfois sans aucune lecture sur le stockage. Tu suivras l’instruction ayant provoqué un défaut dans le gestionnaire, puis jusqu’à sa reprise, tu estimeras le coût des défauts majeurs et tu verras pourquoi les défauts permettent aussi de mettre en œuvre des fonctions utiles comme la mémoire remplie de zéros et la copie sur écriture.

4.1 Suivre le retour d’une page de l’espace d’échange en mémoire

Les espaces d’adressage virtuels peuvent ensemble dépasser la mémoire physique, car toutes les pages n’ont pas besoin d’y rester présentes. L’espace d’échange stocke le contenu des pages déplacées sur un disque ou un SSD. Linux peut utiliser une partition ou un fichier d’échange ; Windows utilise un fichier d’échange. La mémoire physique contient le sous-ensemble des pages actuellement présentes.

La pagination déplace des pages individuelles. Une sortie vers le stockage de sauvegarde y écrit une page avant la réutilisation de son cadre ; une entrée la relit. Historiquement, l’échange désignait aussi le déplacement d’un processus entier. Dans les discussions actuelles, le terme désigne souvent le déplacement de pages : identifie donc l’objet déplacé.

Interpréter la correspondance manquante

Le bit de présence d’une PTE indique au matériel si une correspondance vers une page présente en mémoire est disponible. Si une page valide a été transférée dans l’espace d’échange, le système d’exploitation enregistre l’emplacement de son contenu, soit dans des bits de l’entrée définis par le logiciel, soit dans des métadonnées distinctes. Un bit de présence à zéro ne désigne pas à lui seul l’espace d’échange : il peut aussi correspondre à une mémoire non allouée ou dont l’allocation est différée.

Un défaut de page est une exception provoquée par un accès qui ne peut pas aboutir avec la correspondance actuelle. Il peut indiquer une absence ou une violation de protection. Le gestionnaire décide si l’accès est légitime et comment le traiter. Un traitement réussi peut charger des octets stockés, fournir une mémoire remplie de zéros, associer la page à un cadre déjà présent en mémoire ou créer une copie privée. Un accès réellement invalide entraîne généralement une erreur de segmentation.

Restaurer une page sauvegardée

Suis la lecture d’une page présente dans l’espace d’échange avec des pages de 1 024 octets :

  1. L’adresse virtuelle 5 000 donne le VPN 4 et le déplacement 904.
  2. Le TLB ne possède aucune traduction utilisable. Le parcours de la table des pages trouve la page valide mais absente ; les informations logicielles indiquent le bloc 37 de l’espace d’échange.
  3. Le gestionnaire obtient le cadre 9. Si aucun cadre n’est libre, la récupération de mémoire doit d’abord faire de la place.
  4. Le système d’exploitation lit le bloc 37 dans le cadre 9. Le processus ayant provoqué le défaut attend ; un autre processus prêt peut utiliser le processeur.
  5. À la fin de la lecture, le système d’exploitation inscrit le PFN 9, indique que la page est présente et remet le processus à l’état prêt.
  6. L’instruction est relancée. La traduction atteint maintenant l’adresse physique 10 120.

L’instruction reprend l’opération prévue une fois les octets disponibles. Passer à l’instruction suivante après l’échec ferait perdre un chargement ou un stockage. Le processus peut subir une attente, mais son adresse virtuelle n’a pas changé.

Classer le défaut et prévoir la demande

Un défaut majeur nécessite une lecture sur le stockage. Un défaut mineur est résolu sans cette entrée-sortie, par exemple en fournissant un cadre rempli de zéros ou en associant la page à un cadre déjà présent en mémoire. Un grand nombre de défauts mineurs n’implique donc pas le même trafic sur le périphérique qu’un nombre égal de défauts majeurs. Sous Linux, /usr/bin/time -v indique les deux nombres pour une commande.

La pagination à la demande attend le premier accès à une page avant de la fournir. Un programme peut ainsi commencer sans charger tout son contenu. Le préchargement charge les pages dont on prévoit qu’elles seront bientôt nécessaires. De bonnes prévisions évitent des attentes ultérieures ; de mauvaises prévisions consomment de la bande passante et de la mémoire pour des pages jamais utilisées.

Distingue les événements. Un échec de recherche dans le TLB nécessite une recherche de traduction. Un défaut de page demande au système d’exploitation de traiter un problème de correspondance. Une erreur de segmentation est une issue habituelle pour un accès interdit. Une page présente et accessible peut provoquer un échec de recherche dans le TLB sans provoquer aucun des deux autres événements.

Points clés

  • Une page absente de la mémoire n’est pas automatiquement stockée dans l’espace d’échange.
  • Un défaut majeur nécessite une lecture sur le stockage ; un défaut mineur n’en nécessite pas.
  • Un défaut concernant une page dans l’espace d’échange bloque le processus pendant la lecture.
  • Le gestionnaire répare la correspondance et relance l’instruction ayant provoqué le défaut.
  • La pagination à la demande attend l’utilisation ; le préchargement prévoit une utilisation future.
  • Un échec de recherche dans le TLB, un défaut de page et une erreur de segmentation sont des événements différents.

4.2 Coût des défauts, pages modifiées et cadres libres

Une lecture rare sur le stockage peut dominer le temps d’accès moyen à la mémoire. Soit p la probabilité qu’une référence provoque un défaut majeur, M le temps d’accès ordinaire et F le temps total de traitement d’une référence qui provoque un défaut. Un modèle simple à deux cas donne :

EAT=(1−p)M+pF

Ici, F comprend la lecture sur le stockage, le travail du système d’exploitation et toute réécriture nécessaire d’une page victime modifiée. C’est le temps total en cas de défaut, et non simplement un petit surcoût de recherche d’une PTE.

Calculer l’effet de défauts rares

Supposons qu’un accès ordinaire prenne 100 ns et qu’un défaut majeur prenne 8 ms au total. Convertis 8 ms en 8 000 000 ns avant de calculer la moyenne. Avec un défaut pour 1 000 références :

EAT=0,999(100)+0,001(8000000)=8099,9 ns

Cela représente environ 81 fois le temps d’accès ordinaire. Un taux de défauts de 0,1 % paraît faible, mais un défaut coûte autant que plusieurs milliers de références mémoire.

Pour un ralentissement inférieur à 10 %, la moyenne doit être inférieure à 110 ns. En réorganisant l’expression, on obtient :

p<110−1008000000−100≈1,25×10−6

Cela représente moins d’un défaut majeur pour environ 800 000 références. La probabilité admissible dépend du temps de traitement supposé. Pour un temps de traitement de 0,1 ms sur un SSD, donné à titre d’exemple, l’attente est plus courte, mais elle est encore de 100 000 ns : mille accès de 100 ns.

Garder des cadres disponibles

Le système d’exploitation essaie de préparer des cadres avant qu’un défaut n’en nécessite un. Un démon de pagination en arrière-plan, comme kswapd sous Linux, récupère de la mémoire lorsque le nombre de cadres libres passe sous un seuil bas. Dans le modèle élémentaire à seuils, il poursuit son travail jusqu’à un seuil haut. Cela évite d’attendre la sélection et la préparation d’une victime à chaque défaut.

Préserver les modifications avant la réutilisation

Une page modifiée contient des changements effectués depuis la dernière remise à zéro de l’état de modification. Avant la réutilisation de son cadre, ces changements doivent être préservés si la page fait toujours partie de la mémoire d’un processus. Sa réécriture peut avoir lieu en arrière-plan. Après une réécriture réussie, la page présente en mémoire peut être marquée comme non modifiée ; une écriture ultérieure la rend à nouveau modifiée.

Une page non modifiée ne peut être écartée sans nouvelle écriture que si son contenu peut être récupéré ou recréé. Le code de programme non modifié peut être relu depuis l’exécutable. Une page dont une copie à jour existe dans l’espace d’échange peut être relue depuis cet espace. Une page anonyme non modifiée sans copie récupérable ne peut pas simplement être oubliée. Le bit de modification ne prouve pas à lui seul qu’une copie existe sur un stockage de sauvegarde.

Si un défaut doit évacuer une page modifiée de façon synchrone, il peut nécessiter l’écriture de la victime suivie de la lecture demandée. Préférer une victime non modifiée et récupérable évite cette écriture pendant le traitement bloquant du défaut. Le regroupement des transferts combine plusieurs écritures en transferts plus importants, ce qui est particulièrement utile sur les disques.

Points clés

  • Convertis toutes les durées dans une même unité avant de calculer leur moyenne.
  • Une faible probabilité de défaut majeur peut dominer le temps d’accès effectif.
  • Un démon de pagination en arrière-plan maintient une réserve de cadres libres.
  • L’état de modification enregistre les écritures depuis sa dernière remise à zéro, et non simplement depuis le chargement.
  • Pour écarter une page non modifiée en toute sécurité, son contenu doit pouvoir être récupéré ou recréé.
  • Une réécriture en arrière-plan peut éviter l’écriture d’une victime pendant le traitement du défaut.

4.3 Mise à zéro à la demande, code partagé et copie sur écriture

Les défauts de page sont des points de contrôle utiles pour différer du travail. Une correspondance peut appartenir à un processus avant que le système d’exploitation ne lui attribue un cadre privé. Avec la mise à zéro à la demande, le premier accès obtient une mémoire remplie de zéros. Cela évite d’allouer et de mettre à zéro toutes les pages réservées dès le départ. La mise à zéro empêche aussi un processus de voir les données laissées par un autre.

Le défaut ne nécessite aucune lecture sur disque, car le contenu requis est constitué de zéros et non d’octets sauvegardés. C’est un défaut mineur. Un système peut optimiser l’implémentation, mais le résultat visible reste une mémoire nouvellement fournie contenant les zéros requis.

Partager du code en lecture seule

Des tables des pages distinctes n’imposent pas de copies distinctes de chaque page. Deux PTE peuvent contenir le même PFN, même à des adresses virtuelles différentes. Les processus exécutant le même programme peuvent partager du code en lecture seule. Cinquante processus utilisant un éditeur peuvent faire référence à une seule copie présente en mémoire de chaque page de code partagée. La protection en lecture seule empêche un processus de modifier ces instructions pour tous les autres.

Créer un contenu privé lors d’une écriture

La copie sur écriture (COW) permet le partage initial de pages qui pourront ensuite nécessiter un contenu privé. Après fork(), le processus père et le processus fils ont des espaces d’adressage distincts, mais peuvent partager leurs cadres de données privées ordinaires. Le système d’exploitation marque leurs correspondances privées accessibles en écriture comme étant en lecture seule et enregistre qu’il s’agit de correspondances à copie sur écriture. Les lectures réussissent sans copie.

Lorsque l’un des deux processus écrit pour la première fois dans une page partagée à copie sur écriture, l’écriture enfreint sa protection actuelle et provoque un défaut de page. Le gestionnaire reconnaît ce cas légitime, alloue un cadre privé, copie la page, installe une correspondance accessible en écriture pour le processus qui a écrit et relance l’instruction. L’autre processus conserve le contenu d’origine. Le système d’exploitation doit aussi mettre les traductions en cache en accord avec les correspondances modifiées.

Pour un processus ayant 400 MiB de données privées présentes en mémoire, supposons que son processus fils écrive dans trois pages distinctes de 4 KiB avant d’appeler exec(). Les données copiées à cause de ces écritures représentent au total 12 288 octets. Des écritures répétées dans une page déjà privée ne provoquent pas à chaque fois une nouvelle copie de toute la page. La création des tables des pages et les autres tâches de gestion du processus ont toujours un coût ; la copie sur écriture évite de copier immédiatement les 400 MiB de données.

C’est particulièrement utile lorsque fork() est rapidement suivi de exec(), qui remplace l’espace d’adressage du processus fils. Copier immédiatement toutes les anciennes données effectuerait un travail que le processus fils pourrait ne jamais utiliser. Les correspondances volontairement partagées et accessibles en écriture ont une sémantique différente : la copie sur écriture concerne les correspondances privées qui doivent diverger lors d’une écriture.

Une PTE en lecture seule ne suffit pas à établir qu’il s’agit d’une copie sur écriture. Une écriture dans du code de programme réellement en lecture seule est une erreur ; une écriture dans une page de données protégée pour la copie sur écriture peut être prise en charge. Les informations logicielles distinguent ces cas : la même exception matérielle de protection peut donc aboutir à une nouvelle tentative réussie ou à une erreur de segmentation.

Protéger les projections du noyau

Les projections mémoire du noyau utilisent aussi la protection. Une conception traditionnelle projette la mémoire du noyau dans l’espace d’adressage de chaque processus avec un accès réservé au superviseur, ce qui permet d’entrer dans le noyau sans sélectionner une correspondance entièrement différente. Le code en mode utilisateur ne peut pas accéder à ces pages simplement parce qu’elles ont des adresses. L’isolation des tables de pages du noyau, introduite sur les systèmes concernés après la révélation de Meltdown en 2018, supprime la plupart des projections du noyau pendant l’exécution du code utilisateur et change les correspondances à l’entrée dans le noyau.

Points clés

  • La mémoire mise à zéro à la demande ne nécessite aucune lecture sur le stockage et ne doit pas exposer d’anciennes données.
  • Des tables des pages différentes peuvent associer leurs pages au même cadre de code en lecture seule.
  • La copie sur écriture partage les données privées jusqu’à ce qu’une écriture nécessite une copie privée.
  • Le gestionnaire utilise les informations logicielles pour distinguer la copie sur écriture d’une écriture interdite.
  • La copie sur écriture évite de copier des données qu’un processus fils abandonne peu après avec exec.
5

Choisis des politiques de remplacement des pages et préviens l’écroulement

Lorsqu’aucun cadre n’est libre pour une page nécessaire, le système d’exploitation doit choisir ce qu’il retire. Ce choix modifie les taux de défauts futurs, mais même une bonne politique ne peut pas conserver toutes les pages actives en mémoire lorsque la demande est trop forte. Tu compareras des politiques sur des chaînes de références, utiliseras des bits matériels pour approcher la date de dernière utilisation et relieras l’ensemble de travail d’un processus à l’allocation des cadres. La dernière étape consiste à reconnaître quand une pagination répétée empêche toute progression utile.

5.1 Compter les défauts et trouver la victime optimale

Une politique de remplacement choisit une page présente en mémoire à évacuer lorsqu’aucun cadre n’est libre pour une page nécessaire. La mémoire physique sert de cache pour le contenu des pages. La politique tente de conserver les pages dont l’utilisation future évitera des défauts coûteux. Un défaut dans le modèle de remplacement indique simplement que la page n’est pas présente ; la nécessité d’une entrée-sortie dépend de la provenance du contenu manquant.

Consigner les succès et les défauts

Compare les politiques avec la même chaîne de références, le même nombre de cadres et le même état initial. Une chaîne de références énumère les numéros de pages dans l’ordre des accès. Pour chaque référence, demande-toi d’abord si la page est présente en mémoire. Si oui, consigne un succès. Sinon, consigne un défaut, charge la page et n’évacue une victime que si la mémoire est déjà pleine.

Les premières références provoquent des défauts même lorsqu’il reste des cadres libres. Ces défauts obligatoires ne peuvent pas être évités en choisissant une autre victime. Les défauts ultérieurs dus à une capacité insuffisante sont des défauts de capacité. Le remplacement des pages ne présente pas de conflit de placement : une page peut occuper n’importe quel cadre. Les défauts de conflit concernent les caches à placement restreint, et non ce modèle de cadres entièrement souple.

Choisir l’utilisation future la plus éloignée

La politique optimale, OPT ou MIN, choisit la page dont la prochaine utilisation est la plus éloignée dans le futur. Une page qui ne sera plus jamais utilisée est une victime idéale. Cette politique produit le plus petit nombre de défauts pour une chaîne de références connue, mais un système d’exploitation en cours d’exécution ne peut pas connaître des références futures quelconques. OPT sert de référence pour les politiques utilisables en pratique.

Utilise trois cadres initialement vides et la chaîne 1, 2, 3, 1, 4, 1, 5, 2, 1, 4, 3, 1. Les trois premières références remplissent la mémoire et provoquent des défauts. La référence suivante à 1 donne un succès. À la référence 5, la page 4 arrive : les pages 1, 2 et 3 présentes en mémoire seront de nouveau utilisées aux rangs 6, 8 et 11. Évacue 3, dont la prochaine utilisation est la plus éloignée.

Après le succès sur 1, la page 5 arrive au rang 7. Les pages 1, 2 et 4 présentes en mémoire seront de nouveau utilisées aux rangs 9, 8 et 10 ; OPT évacue donc 4. Les références suivantes à 2 et à 1 donnent des succès. La page 4 provoque un défaut au rang 10 ; 2 ou 5 peut être évacuée, car aucune des deux n’est réutilisée. La page 3 provoque ensuite un défaut et évacue une autre page qui ne sera plus utilisée. La dernière référence à 1 donne un succès.

Comparer les totaux et les charges de travail

La simulation compte 7 défauts et 5 succès. En comptant les 12 références, le taux de succès est de 5/12, soit environ 41,7 %. Il y a cinq pages distinctes, donc cinq défauts obligatoires. Si le taux indiqué exclut ces défauts, il devient 5/7, soit environ 71,4 %. Les deux taux peuvent décrire la même simulation : précise donc toujours le dénominateur.

Pour ne pas perdre le fil, distingue la référence courante de la suite des références futures. OPT compare la prochaine utilisation de chaque page présente en mémoire après le rang courant ; il ne choisit pas la page dont le numéro est le plus grand ou qui a été chargée en premier. Si deux pages ne sont plus jamais utilisées, l’un ou l’autre choix reste optimal.

Les charges de travail influent sur l’importance de la politique. Lorsque les références ont la même probabilité pour toutes les pages, les utilisations passées donnent peu d’indications. Avec de la localité, un petit ensemble de pages fréquemment utilisées reçoit de nombreuses références, et le conserver améliore le taux de succès. L’écart entre le nombre de défauts d’une politique utilisable en pratique et celui d’OPT mesure l’amélioration possible pour cette charge de travail.

Points clés

  • Compte les chargements initiaux comme des défauts, même avant toute évacuation.
  • OPT évacue la page présente en mémoire dont la prochaine utilisation est la plus éloignée.
  • OPT sert de référence parce qu’il nécessite de connaître les références futures.
  • Le remplacement des pages présente des défauts de capacité, mais pas de défauts de conflit de placement dans les cadres.
  • Précise si le dénominateur du taux de succès inclut les défauts obligatoires.

5.2 FIFO, LRU et effets de la charge de travail

FIFO évacue la page chargée en premier parmi celles actuellement présentes en mémoire. Une file suit l’ordre d’arrivée. Un succès ne déplace pas la page en fin de file. FIFO est donc facile à gérer, mais peut évacuer une page encore fréquemment utilisée simplement parce qu’elle est arrivée il y a longtemps.

Suivre la dernière utilisation plutôt que l’arrivée

LRU, qui remplace la page la moins récemment utilisée, suit l’utilisation la plus récente de chaque page présente en mémoire. En cas de succès, cette page devient la plus récemment utilisée ; en cas de défaut alors que la mémoire est pleine, la page dont la dernière utilisation est la plus ancienne est évacuée. Cette politique suit la localité temporelle : une utilisation récente prédit souvent une utilisation dans un futur proche. La date d’arrivée et celle de la dernière utilisation sont deux historiques différents.

Le remplacement aléatoire choisit au hasard une victime présente en mémoire sans suivre l’ordre des utilisations récentes. Son résultat varie d’une exécution à l’autre. Il peut éviter le comportement d’échec déterministe de LRU sur une charge de travail cyclique, mais peut tout de même faire de mauvais choix. LFU, qui remplace la page la moins fréquemment utilisée, suit des nombres d’utilisations plutôt que leur date. Sans vieillissement, il peut conserver une page très utilisée dans une phase antérieure du programme mais désormais inutilisée.

Simuler les politiques sur la même chaîne

Compare les politiques avec trois cadres vides sur 1, 2, 3, 1, 4, 1, 5, 2, 1, 4, 3, 1. Les pages 1, 2 et 3 remplissent d’abord la mémoire. Le succès sur 1 laisse l’ordre de FIFO inchangé : l’arrivée de 4 évacue donc 1. LRU considère au contraire que 1 est récente et évacue 2. La référence suivante à 1 provoque donc un défaut avec FIFO et un succès avec LRU.

Pour LRU, les défauts ultérieurs évacuent 3 pour la page 5, 4 pour la page 2, 5 pour la page 4 et 2 pour la page 3. Le total est de 8 défauts et 4 succès. FIFO produit 10 défauts et 2 succès. OPT produit 7 défauts sur la même chaîne. LRU fait ici mieux que FIFO, mais n’atteint pas l’optimum qui tient compte du futur.

Expliquer l’anomalie de Belady

Davantage de cadres n’améliorent pas toutes les politiques sur toutes les chaînes. L’anomalie de Belady est une augmentation du nombre de défauts lorsque FIFO reçoit plus de cadres. Pour 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5, FIFO produit 9 défauts avec trois cadres et 10 avec quatre. La capacité supplémentaire change les victimes choisies ensuite dans la file : les ensembles de pages présentes ne sont donc pas nécessairement inclus les uns dans les autres.

LRU et OPT sont des algorithmes à pile : lorsque les égalités sont traitées de façon cohérente, l’ensemble des pages présentes pour un nombre de cadres plus petit est inclus dans celui obtenu avec un nombre plus grand. Augmenter la capacité ne peut donc pas transformer un succès avec moins de mémoire en défaut avec plus de mémoire. Sur la chaîne de l’anomalie, LRU produit 10 défauts avec trois cadres et 8 avec quatre.

Reconnaître les charges de travail défavorables à LRU

Certaines charges de travail restent défavorables à LRU. Parcours trois fois en boucle les pages 1, 2, 3, 4 avec trois cadres. Chaque nouvelle page évacue celle qui sera nécessaire ensuite, ce qui produit 12 défauts. OPT en nécessite 6. Le remplacement aléatoire peut conserver des pages utiles d’un tour à l’autre et obtient ici de meilleurs résultats en moyenne. Un parcours unique peut de même évincer d’un cache LRU un ensemble utile de pages fréquemment utilisées.

Une comparaison de politiques doit préciser la charge de travail et le nombre de cadres. La localité rend le suivi des utilisations récentes utile dans de nombreux programmes, ce qui motive les approximations de LRU dans les systèmes existants. Une boucle périodique dépassant juste la capacité favorise un autre choix ; un avantage observé sur une courte simulation ne permet pas d’établir un classement universel.

Points clés

  • Avec FIFO, les succès ne changent pas l’ordre d’arrivée ; avec LRU, ils changent l’ordre des utilisations récentes.
  • LFU compte les utilisations, tandis que LRU enregistre la date de la dernière utilisation.
  • Le remplacement aléatoire varie d’une exécution à l’autre et peut tout de même choisir de mauvaises victimes.
  • FIFO peut présenter l’anomalie de Belady.
  • Avec LRU et OPT, les ensembles de pages présentes sont inclus les uns dans les autres lorsque la capacité augmente.
  • Une charge de travail cyclique dépassant juste la capacité peut mettre LRU en échec.

5.3 Approcher la date de dernière utilisation avec une aiguille d’horloge

LRU exact nécessite du travail à chaque référence mémoire. Avec des horodatages, chaque référence met à jour un horodatage et la sélection d’une victime recherche le plus ancien. Avec une liste ordonnée, la victime est disponible en fin de liste, mais chaque référence doit déplacer sa page en tête. Mettre à jour cette structure par logiciel à chaque chargement et stockage serait trop coûteux.

Lire le bit de référence

Le matériel fournit un indice moins coûteux : le bit de référence, aussi appelé bit d’accès ou d’utilisation. Le matériel le positionne lorsqu’une page est lue ou écrite. Le système d’exploitation le remet à zéro pour commencer une nouvelle période d’observation. Un bit positionné signifie qu’il y a eu au moins une utilisation depuis la dernière remise à zéro ; ce n’est pas un décompte de fréquence et il ne révèle pas l’ordre exact des dernières utilisations.

Rechercher une victime

L’algorithme de l’horloge place les cadres en cercle et maintient une aiguille pointant vers le prochain candidat. Lors d’un remplacement, il examine le bit de référence du candidat. Si le bit vaut 1, l’aiguille le remet à zéro et avance. Si le bit vaut 0, ce cadre est la victime. La nouvelle page entre avec son bit de référence positionné et l’aiguille avance au-delà. Un succès positionne le bit de la page référencée sans déplacer l’aiguille.

Supposons que le cercle contienne A avec un bit à 1, B avec un bit à 0 et C avec un bit à 1, et que l’aiguille pointe vers A. Un défaut sur D remet le bit de A à zéro et fait avancer l’aiguille vers B. Le bit de B vaut déjà 0 : D remplace donc B avec un bit à 1 et l’aiguille termine sur C. Si la référence suivante provoque un défaut sur E, l’aiguille remet le bit de C à zéro, puis trouve celui de A à 0 et remplace A. Si A avait été consultée entre ces défauts, son bit vaudrait 1 et elle recevrait une autre chance.

Si tous les bits valent 1 et qu’aucun nouvel accès n’intervient, un tour les remet tous à zéro. L’aiguille évacue alors sa page de départ lorsqu’elle y revient. Cette sélection particulière ressemble à la prochaine victime selon l’ordre d’arrivée de FIFO, mais l’horloge suit généralement l’historique des utilisations et la position de l’aiguille ; elle n’équivaut pas toujours à FIFO.

Une simulation complète de l’horloge nécessite une convention d’initialisation. Ici, les cadres vides sont remplis dans l’ordre avec un bit à 1 ; l’aiguille reste sur le cadre 0 jusqu’au premier remplacement. Les succès positionnent les bits. Chaque remplacement fait avancer l’aiguille. Selon cette convention, trois cadres sur 1, 2, 3, 1, 4, 1, 5, 2, 1, 4, 3, 1 produisent 10 défauts. Une courte chaîne peut masquer l’intérêt d’une approximation fondée sur les utilisations récentes ; l’horloge suit souvent bien la localité sur des exécutions plus longues.

Tenir compte du coût d’écriture et des variantes existantes

L’état de modification ajoute le coût de préservation d’une victime. Une préférence de l’algorithme de l’horloge amélioré classe les paires (référence, modification) dans l’ordre (0 ; 0), (0 ; 1), (1 ; 0), puis (1 ; 1). Cela favorise une page qui n’a pas été utilisée récemment et ne contient pas de modifications non sauvegardées. Les implémentations diffèrent dans leur manière de remettre les bits à zéro pendant le parcours et de planifier les écritures. Une réécriture en arrière-plan peut rendre une page candidate non modifiée avant que le remplacement n’en ait besoin.

Les systèmes existants utilisent des variantes plus élaborées. VAX/VMS plaçait les pages retirées dans des listes de pages non modifiées ou modifiées afin qu’un processus puisse en récupérer une avant la réutilisation de son cadre. Linux a utilisé des listes actives et inactives et propose un LRU multigénérationnel, qui regroupe les pages selon la date d’utilisation observée. Ces systèmes utilisent les informations du matériel pour guider les décisions du système d’exploitation ; le bit de référence matériel ne choisit pas lui-même une victime.

Points clés

  • Le suivi exact de LRU à chaque référence est coûteux.
  • Un bit de référence enregistre toute utilisation depuis sa remise à zéro, et non un nombre d’utilisations.
  • L’horloge remet un bit à 1 à zéro et avance ; elle évacue une page dont le bit vaut 0.
  • Les succès positionnent les bits de référence mais ne déplacent pas l’aiguille de l’horloge.
  • Les pages non modifiées et non référencées sont des victimes intéressantes pour l’algorithme de l’horloge amélioré.
  • Précise l’initialisation et le déplacement de l’aiguille lorsque tu simules l’horloge.

5.4 Ensembles de travail, allocation des cadres et écroulement

L’écroulement se produit lorsque les processus passent la majeure partie de leur temps à charger en mémoire des pages à la suite de défauts et à évacuer des pages qui seront bientôt nécessaires à nouveau. Le périphérique de stockage reste occupé tandis que le taux d’utilisation du processeur baisse, alors que les programmes ont encore du travail à effectuer. Une faible charge du processeur ne suffit pas à identifier un écroulement ; c’est l’association d’une pagination intense et d’une faible progression qui constitue l’indice.

La cause est une demande de mémoire supérieure au nombre de cadres disponibles. Un processus a besoin qu’un ensemble utile de pages soit présent en mémoire pour terminer sa phase courante. Si les ensembles actifs de plusieurs processus ne tiennent pas ensemble, leurs défauts déplacent sans cesse des pages utiles. Lancer encore davantage de processus peut aggraver cette pression, même si le processeur semble sous-utilisé.

Estimer la demande courante de pages

L’ensemble de travail, noté W(t,Δ), estime les besoins courants d’un processus. Dans le modèle à fenêtre de références, c’est l’ensemble des pages distinctes figurant dans les Δ dernières références se terminant à l’instant t. Compte chaque page une seule fois, même si elle apparaît plusieurs fois dans la fenêtre. La taille de l’ensemble de travail est un nombre de pages, et non un nombre de références.

Avec une fenêtre de 5 et la chaîne 1, 2, 1, 3, 2, 1, 4, 5, 4, 5, 4, 6, 5, 4, examine l’état après la référence 6. Les cinq dernières références sont 2, 1, 3, 2, 1, ce qui donne {1, 2, 3}, de taille 3. Après la référence 8, la fenêtre est 3, 2, 1, 4, 5, ce qui donne une taille de 5. Après la référence 11, elle est 4, 5, 4, 5, 4, ce qui donne une taille de 2. La demande atteint temporairement un maximum lorsque l’ancienne et la nouvelle phase se chevauchent.

Contrôler la demande active et l’allocation

Une fenêtre courte peut omettre des pages encore nécessaires ; une fenêtre trop longue peut inclure des pages d’une phase terminée. Le modèle de l’ensemble de travail de Peter Denning relie ces besoins changeants à l’allocation. Une politique fondée sur l’ensemble de travail n’exécute les processus que lorsque leurs ensembles de travail réunis tiennent en mémoire. Si ce n’est pas le cas, elle suspend un ou plusieurs processus et libère leurs cadres. C’est le contrôle d’admission.

Le contrôle de la fréquence des défauts de page (PFF) utilise les taux de défauts mesurés. Au-dessus d’un seuil supérieur, un processus a besoin de plus de cadres. En dessous d’un seuil inférieur, certains cadres peuvent être réattribués. Si un processus a besoin de cadres et qu’aucun n’est disponible, il peut être nécessaire de suspendre un processus. Deux seuils réduisent les ajustements continuels autour d’une seule limite.

Avec le remplacement global, un défaut peut évacuer une page d’un autre processus. Cela s’adapte avec souplesse aux changements de demande, mais permet à un processus d’augmenter les défauts d’un autre. Avec le remplacement local, les victimes proviennent uniquement des cadres alloués au processus ayant provoqué le défaut. Cela limite les interférences, mais ne peut pas aider un processus auquel trop peu de cadres ont été attribués sans modifier son allocation.

Choisir des remèdes à la pression sur la mémoire

Les remèdes utiles réduisent la demande ou augmentent la capacité : exécuter moins de programmes, ajouter de la mémoire physique ou améliorer la localité, par exemple en parcourant les tableaux dans leur ordre de stockage. Un espace d’échange plus rapide réduit le coût de chaque défaut majeur ; il ne permet pas à un ensemble actif trop grand de tenir en mémoire. Remplacer un disque par un SSD peut améliorer la progression sans supprimer la cause.

Sous une pression extrême, le tueur de processus en cas de manque de mémoire de Linux peut terminer un processus sélectionné lorsque la récupération et l’échange ne peuvent pas libérer assez de mémoire. La sélection utilise un score tenant compte de la mémoire et des ajustements liés à la politique, et ne se limite pas à identifier le plus gros processus. La mémoire devient récupérable lorsque le processus se termine et son travail est perdu. C’est une libération de ressources en dernier recours, distincte de la suspension d’un processus qui pourra reprendre plus tard.

Points clés

  • L’écroulement associe une pagination intense à peu de progression utile.
  • Un ensemble de travail compte les pages distinctes dans une fenêtre récente.
  • Le contrôle d’admission limite les processus actifs à ce que la mémoire peut prendre en charge.
  • Le contrôle de la fréquence des défauts de page ajuste l’allocation des cadres à l’aide de seuils supérieur et inférieur du taux de défauts.
  • Le remplacement global permet d’évacuer les pages d’autres processus ; le remplacement local isole la sélection des victimes.
  • Un espace d’échange plus rapide réduit l’attente, mais n’augmente pas la capacité en cadres.
  • La terminaison d’un processus pour manque de mémoire entraîne la perte de son travail ; une suspension peut le préserver.

Pagination et mémoire virtuelle : exemples

5 Leçons Interactives

1

Traduis une adresse virtuelle étape par étape

11 étapes
Découpe une adresse, localise sa PTE, vérifie la correspondance et calcule l’adresse physique finale de l’octet.
  1. 1
    IntroductionD’une adresse à un octet

    Une instruction de chargement désigne une adresse virtuelle d’octet. Les octets eux-mêmes se trouvent dans des cadres physiques, et la table des pages du processus courant relie les deux. Suis une adresse à travers son découpage, la recherche de l’entrée et l’accès final.

    Distingue deux questions : où se trouve l’entrée qui décrit cette page et où se trouve l’octet demandé par l’instruction ? Les deux sont des adresses, mais elles pointent vers des objets différents.

  2. 2
    ExplicationLes pages peuvent être déplacées sans changer les adresses du programme

    Une page est une partie de taille fixe de la mémoire virtuelle ; un cadre de page est une partie de même taille de la mémoire physique. La page 0 peut occuper le cadre 15 tandis que la page 1 occupe le cadre 2.

    Le programme voit toujours des adresses virtuelles consécutives sur ces pages. Tout cadre libre peut contenir n’importe quelle page : le système d’exploitation n’a donc pas besoin d’un seul grand trou physique pour tout un processus.

  3. 3
    ExempleSépare la page de son déplacement

    Utilise des pages de 2 KiB et l’adresse virtuelle 11 600. Chaque page contient 2 048 octets. Cinq pages complètes représentent 10 240 octets : cette adresse appartient donc au VPN 5.

    Les 1 360 octets restants donnent son déplacement. En binaire, les 11 bits de poids faible contiennent ce déplacement, car une page possède 211 emplacements d’octets. Les bits de poids fort identifient la page virtuelle.

  4. 4
    ExempleMesure l’espace inutilisé dans une allocation

    Une zone nécessite 10 700 octets et utilise des pages de 2 KiB. Cinq pages ne contiennent que 10 240 octets : il lui faut donc six pages. Leur capacité totale est de 12 288 octets.

    Soustrais la taille utile de la zone pour trouver 1 588 octets inutilisés dans l’allocation. C’est la fragmentation interne. Les cadres libres ailleurs ne font pas partie de ce gaspillage ; les octets inutilisés se trouvent dans une page allouée.

  5. 5
    DéfiEssaie un autre découpage d’adresse

    Avec des pages de 8 KiB, un processus fait référence à l’adresse virtuelle 25 100. Quels VPN et déplacement identifient cet octet ?

    ---reveal---

    Trois pages représentent 24 576 octets, ce qui laisse un déplacement de 524. Le VPN est 3 et le déplacement est 524. Le déplacement doit être inférieur à 8 192 ; cette borne aide à repérer une erreur de quotient ou de soustraction avant de traduire la page.

  6. 6
    ExplicationTrouve l’entrée avant les données

    Dans une table des pages linéaire, le VPN indexe un tableau propre au processus. Si sa base est l’adresse physique 20 000 et que les entrées occupent 8 octets, la PTE 5 commence à 20 040.

    Multiplier par la taille d’une entrée permet de localiser les informations de correspondance. Cela ne localise pas l’octet demandé par le programme. L’entrée doit fournir un numéro de cadre physique et autoriser l’opération demandée avant que le processeur puisse former l’adresse des données.

  7. 7
    Point cléVérifie l’état de la correspondance

    Une page peut appartenir à un processus tout en étant absente de la mémoire physique. Elle peut aussi être présente tout en interdisant une opération particulière. La présence et les permissions répondent à des questions différentes.

    Le modèle pédagogique attribue des rôles distincts à la validité, à la présence et à la protection. x86 ne fournit pas de bit de validité distinct ; lorsqu’une correspondance matérielle indique une page absente, les informations du système d’exploitation distinguent l’échange, l’allocation différée et une adresse inutilisée.

  8. 8
    ExempleTermine la traduction

    Reviens à l’adresse virtuelle 11 600 avec des pages de 2 KiB : VPN 5, déplacement 1 360. Supposons que la PTE 5 autorise la lecture, indique que la page est présente et désigne le cadre 14.

    Le cadre 14 commence à l’octet 28 672. Ajouter le déplacement inchangé donne l’adresse physique d’octet 30 032. La PTE située à 20 040 nous fournit ce résultat ; elle n’est pas elle-même l’adresse à laquelle le programme lit ses données.

  9. 9
    DéfiChoisis la bonne adresse finale

    Avec des pages de 1 KiB, l’adresse virtuelle 3 250 est associée au cadre 11 par une PTE indiquant que la page est présente et que l’accès est autorisé. Quelle adresse physique obtient-on ? Explique quelle partie reste inchangée.

    ---reveal---

    L’adresse a pour VPN 3 et pour déplacement 178. Le cadre 11 commence à 11 264 : le résultat est donc 11 442. Le déplacement reste égal à 178, car une page et son cadre ont les mêmes emplacements internes d’octets.

  10. 10
    DéfiRelie le découpage à la taille de la table

    Un système possède des adresses virtuelles de 24 bits, des pages de 4 KiB et des entrées de table linéaire de 8 octets. Quelle quantité de mémoire la table complète occupe-t-elle ?

    ---reveal---

    Le déplacement utilise 12 bits, ce qui laisse 12 bits pour le VPN et donne 4 096 entrées. En multipliant par huit, on obtient 32 768 octets, soit 32 KiB. La table contient toujours des entrées pour les pages inutilisées ; allouer peu de cadres de données ne réduit pas ce tableau linéaire complet.

  11. 11
    RécapitulatifInterprète les deux calculs d’adresse

    Utilise le VPN pour localiser une entrée de correspondance, vérifie son état et utilise son PFN pour localiser un cadre. Puis reporte le déplacement d’origine dans ce cadre.

    La taille d’une entrée détermine les déplacements dans la table ; la taille de page détermine les déplacements entre les cadres physiques. Garder ces unités visibles permet d’appliquer la même méthode aux adresses décimales, aux adresses hexadécimales et à différentes tailles de page.

2

Utilise le TLB en conservant des traductions correctes

12 étapes
Suis les succès, les échecs, la localité, les identifiants de contexte, l’invalidation et la couverture du TLB.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionPourquoi des traductions répétées peuvent être rapides
  2. 2
    ExplicationUn succès évite une recherche dans la table
  3. 3
    Point cléUn échec peut être résolu entièrement en mémoire
  4. 4
    ExempleCompte les échecs lors du parcours séquentiel d’un tableau
  5. 5
    ExempleCalcule une moyenne à partir des cas complets
  6. 6
    DéfiApplique la localité à un second passage
  7. 7
    ExplicationChoisis qui effectue le remplissage
  8. 8
    ExempleAssocie les traductions à un espace d’adressage
  9. 9
    LienUne modification de la table nécessite une invalidation du cache
  10. 10
    DéfiCalcule la couverture des traductions
  11. 11
    DéfiDistingue un problème de capacité d’un problème de validité
  12. 12
    RécapitulatifExamine à la fois les performances et la validité
3

Parcours des tables des pages réduites

14 étapes
Compare les organisations des tables, suis un exemple à deux niveaux et déduis des tables plus profondes et des correspondances pour les pages de grande taille.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionUtilise moins de mémoire pour les correspondances
  2. 2
    ExplicationDemande-toi ce que décrit une entrée
  3. 3
    LienCompare deux façons d’éviter le gaspillage
  4. 4
    DéfiVérifie le nombre d’entrées d’une table inversée
  5. 5
    ExplicationDivise le VPN en deux indices
  6. 6
    ExempleLis l’entrée du répertoire
  7. 7
    ExempleSuis le pointeur physique jusqu’au dernier niveau
  8. 8
    DéfiCompte les tables allouées pour des correspondances éparses
  9. 9
    ExplicationDéduis une hiérarchie plus profonde
  10. 10
    Point cléGarde à l’esprit le nombre de bits pris en charge
  11. 11
    ExempleUtilise une entrée de répertoire pour associer les données
  12. 12
    DéfiCalcule un autre nombre de niveaux
  13. 13
    DéfiÉvalue une proposition de page de grande taille
  14. 14
    RécapitulatifCompte séparément l’espace et le travail de recherche
4

Traite les défauts et reporte le travail inutile

14 étapes
Restaure une page depuis l’espace d’échange, estime son coût et applique la mise à zéro à la demande et la copie sur écriture.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionAttends le contenu, puis réessaie
  2. 2
    ExplicationInterprète une correspondance indiquant une page absente
  3. 3
    ExempleLocalise la page sauvegardée
  4. 4
    ExempleInstalle la correspondance et reprends l’exécution
  5. 5
    DéfiDistingue deux types de défauts
  6. 6
    ExempleConvertis le coût avant de calculer la moyenne
  7. 7
    ExplicationPrépare les victimes avant que les défauts n’en aient besoin
  8. 8
    Point cléVérifie si une page non modifiée est récupérable
  9. 9
    DéfiAjoute l’écriture de la victime au traitement bloquant
  10. 10
    ExplicationFournis des zéros uniquement au moment nécessaire
  11. 11
    ExplicationPartage les pages privées jusqu’à une écriture
  12. 12
    DéfiCompte les pages copiées, pas les instructions d’écriture
  13. 13
    DéfiDéduis la cause à partir du comportement du défaut
  14. 14
    RécapitulatifUtilise les défauts pour fournir le bon contenu
5

Compare les victimes et préviens l’écroulement

20 étapes
Suis les politiques, utilise l’aiguille de l’horloge, estime les ensembles de travail et choisis des remèdes à une pagination excessive.

Enregistre cette unité pour suivre chaque Leçon Interactive pas à pas.

  1. 1
    IntroductionGarde les pages utiles en mémoire
  2. 2
    ConseilFixe les conditions de la simulation
  3. 3
    ExempleChoisis une victime en tenant compte du futur
  4. 4
    ExempleTermine la simulation de référence
  5. 5
    DéfiTrouve la part inévitable
  6. 6
    ExplicationUtilise l’ordre d’arrivée pour FIFO
  7. 7
    ExempleUtilise le dernier accès pour LRU
  8. 8
    Point cléNe suppose pas qu’une utilisation récente prédit toujours une réutilisation
  9. 9
    DéfiInterprète un résultat avec un cadre supplémentaire
  10. 10
    ExplicationRemplace l’ordre exact par un indice d’utilisation
  11. 11
    ExemplePrends une décision avec l’horloge
  12. 12
    DéfiDonne une autre chance à une page récemment consultée
  13. 13
    LienTiens compte des victimes modifiées
  14. 14
    ExplicationReconnais une pression sur la mémoire qui bloque la progression
  15. 15
    ExempleCompte un ensemble de travail lors d’un changement de phase
  16. 16
    ExplicationAlloue selon la demande ou les symptômes des défauts
  17. 17
    DéfiDistingue l’isolation de la capacité
  18. 18
    LienChoisis un remède qui agit sur la cause
  19. 19
    DéfiRelie les ensembles de travail au remplacement
  20. 20
    RécapitulatifRelie les simulations au système en cours d’exécution

Pagination et mémoire virtuelle : QCM

50 Questions Pratiques en 5 séries

Série 1 : Exercices 1 : construis le modèle de pagination10 Questions Pratiques

Question 1 sur 10

Combien de bits de déplacement une page de 8 KiB nécessite-t-elle ?
  1. 10 bits
  2. 13 bits
  3. 12 bits
  4. 16 bits
Afficher la réponseMasquer la réponse
Réponse : B
Une page de 8 KiB contient 8 192 emplacements d’octets : ses déplacements vont donc de 0 à 8 191 et nécessitent 13 bits. Douze bits ne sélectionnent que 4 096 emplacements, ce qui suffit pour une page de 4 KiB. Le nombre de bits de l’adresse détermine les bits restants du VPN, et non le nombre de bits de déplacement pour cette taille de page.

Question 2 sur 10

Avec des pages de 2 048 octets, l’adresse virtuelle 7 300 possède une correspondance vers le cadre 6 indiquant que la page est présente et que l’accès est autorisé. Quelle adresse physique d’octet cet accès atteint-il ?
  1. 7 300
  2. 14 336
  3. 13 290
  4. 13 444
Afficher la réponseMasquer la réponse
Réponse : D
La page virtuelle est 3 et le déplacement est 1 156, puisque trois pages représentent 6 144 octets. Le cadre 6 commence à 12 288, ce qui donne l’adresse physique 13 444. Utiliser le numéro de page virtuelle d’origine laisserait l’adresse inchangée et ignorerait la correspondance avec le cadre 6.

Question 3 sur 10

Que faut-il encore vérifier lorsqu’une écriture trouve sa traduction dans le TLB ?
  1. Si les permissions en cache autorisent l’écriture
  2. Si la page possède un second cadre libre
  3. Si les données sont aussi stockées dans le TLB
  4. Si la table des pages possède un nouvel indice linéaire
Afficher la réponseMasquer la réponse
Réponse : A
Une entrée du TLB contient les permissions d’accès ainsi que le numéro de cadre : un succès doit donc toujours autoriser l’écriture demandée. Trouver une traduction ne donne pas un accès sans restriction. Le TLB contient des informations de correspondance ; les données du programme peuvent se trouver ailleurs dans la hiérarchie mémoire.

Question 4 sur 10

Un TLB de 128 entrées contient des traductions pour des pages de 4 KiB. Quelle est sa couverture ?
  1. 32 KiB
  2. 128 KiB
  3. 512 KiB
  4. 4 MiB
Afficher la réponseMasquer la réponse
Réponse : C
Chaque entrée couvre une page de 4 KiB : 128 entrées représentent donc 512 KiB de mémoire. Le seul nombre d’entrées n’est pas une capacité en octets. Une couverture de 4 MiB nécessiterait huit fois plus de couverture des traductions avec cette taille de page ; elle ne peut pas être déduite de la quantité de mémoire vive installée.

Question 5 sur 10

Un espace d’adressage virtuel complet de 30 bits utilise des pages de 4 KiB et des entrées de table linéaire de 8 octets. Quelle quantité de mémoire une table occupe-t-elle ?
  1. 256 KiB
  2. 1 MiB
  3. 8 MiB
  4. 2 MiB
Afficher la réponseMasquer la réponse
Réponse : D
Retirer les 12 bits de déplacement laisse 18 bits de VPN, soit 262 144 entrées. À huit octets par entrée, cela donne 2 097 152 octets, soit 2 MiB. Le résultat de 256 KiB compte les entrées comme si chacune occupait un octet ; le stockage de la table doit tenir compte de la taille réelle des entrées.

Question 6 sur 10

Un système à deux niveaux utilise des pages de 4 KiB et des entrées de 4 octets aux deux niveaux. Un processus associe des pages à des cadres dans exactement cinq zones de répertoire. Quelle quantité de mémoire contient son répertoire et ses tables de niveau inférieur ?
  1. 20 KiB
  2. 40 KiB
  3. 24 KiB
  4. 4 MiB
Afficher la réponseMasquer la réponse
Réponse : C
Chaque zone de répertoire occupée nécessite une table de niveau inférieur de 4 KiB, et le processus a aussi besoin de son répertoire de 4 KiB. Six pages de table totalisent 24 KiB. Ne compter que les cinq tables de niveau inférieur donne 20 KiB et omet la racine qui permet d’atteindre ces tables.

Question 7 sur 10

Une page valide reçoit un cadre rempli de zéros au premier accès, sans aucune lecture sur le stockage. Quel type de défaut de page s’est produit ?
  1. Un défaut de page mineur
  2. Un défaut de page majeur
  3. Une recherche réussie dans le TLB
  4. Une erreur de segmentation
Afficher la réponseMasquer la réponse
Réponse : A
Le système d’exploitation a corrigé la correspondance sans lire le contenu d’une page sur le stockage : c’est donc un défaut mineur. Un défaut majeur nécessite une lecture sur le stockage. Fournir une mémoire remplie de zéros est une résolution légitime d’un défaut de page ; l’exception ne signifie pas à elle seule que le processus a effectué un accès invalide.

Question 8 sur 10

Un accès ordinaire prend 80 ns ; le traitement total d’un défaut majeur prend 2 ms. Si une référence sur 10 000 provoque un défaut majeur, quel est le temps d’accès effectif dans le modèle à deux cas ?
  1. 80,02 ns
  2. 279,992 ns
  3. 199,992 ns
  4. 2 079,992 ns
Afficher la réponseMasquer la réponse
Réponse : B
Convertis 2 ms en 2 000 000 ns et utilise une probabilité de défaut de 0,0001. La moyenne est 0,9999×80+0,0001×2000000=279,992 ns. La valeur de 199,992 ns omet la contribution des références ordinaires, tandis qu’utiliser les millisecondes comme s’il s’agissait de nanosecondes sous-estime le coût du défaut.

Question 9 sur 10

Avec deux cadres initialement vides, OPT traite 2, 7, 2, 9, 7, 2. Combien de défauts se produisent, premières utilisations comprises ?
  1. 3 défauts
  2. 5 défauts
  3. 4 défauts
  4. 6 défauts
Afficher la réponseMasquer la réponse
Réponse : C
Les premières références à 2 et à 7 provoquent des défauts, puis 2 donne un succès. À 9, OPT évacue 2 parce que 7 sera nécessaire plus tôt ; 7 donne un succès et le dernier 2 provoque un défaut, soit quatre défauts. Trois est seulement le nombre de pages distinctes et omet le défaut de capacité ultérieur lorsque la page 2 revient.

Question 10 sur 10

Avec trois cadres initialement vides, OPT traite 6, 1, 4, 6, 8, 1, 9, 6, 4. Quels sont son nombre total de défauts et son taux de succès après exclusion des défauts obligatoires ?
  1. 6 défauts ; 75 % de succès
  2. 5 défauts ; 100 % de succès
  3. 6 défauts ; 33,3 % de succès
  4. 7 défauts ; 50 % de succès
Afficher la réponseMasquer la réponse
Réponse : A
Les cinq pages distinctes provoquent cinq défauts obligatoires ; OPT subit aussi un défaut lorsque 4 revient à la fin, soit six défauts au total. Les succès correspondent aux quatrième, sixième et huitième références. Exclure cinq références obligatoires laisse quatre références et trois succès : 75 % est donc correct ; 33,3 % utilise les neuf références.
Série 2 : Exercices 2 : suis les recherches et les défauts10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Une zone de 17 500 octets utilise des pages de 8 KiB. Combien d’octets sont inutilisés dans les pages qui lui sont allouées ?
  1. 1 116 octets
  2. 8 192 octets
  3. 7 076 octets
  4. 15 268 octets
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Dans une table linéaire dont les entrées occupent 8 octets, où se trouve la PTE 11 par rapport à la base de la table ?
  1. 88 octets après la base
  2. 11 octets après la base
  3. 19 octets après la base
  4. 80 octets après la base
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Un tableau aligné sur une frontière de page contient 6 144 valeurs de quatre octets. Il est lu une fois dans l’ordre avec des pages de 8 KiB, un TLB vide et aucune référence qui interfère. Combien d’échecs de recherche dans le TLB se produisent ?
  1. 6 échecs
  2. 12 échecs
  3. 6 144 échecs
  4. 3 échecs
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Une page de table contient 4 096 octets et chaque entrée occupe 8 octets. Combien de bits sélectionnent une entrée ?
  1. 8 bits
  2. 9 bits
  3. 10 bits
  4. 12 bits
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Une machine hypothétique utilise des adresses virtuelles de 39 bits, des pages de 4 KiB et des entrées de 8 octets dans des tables de la taille d’une page. Combien de niveaux sont nécessaires ?
  1. 3 niveaux
  2. 2 niveaux
  3. 4 niveaux
  4. 5 niveaux
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

La lecture d’une page depuis l’espace d’échange se termine et le gestionnaire installe une correspondance indiquant que la page est présente. Que doit-il arriver à l’instruction ayant provoqué le défaut ?
  1. Elle est sautée pour que l’exécution continue
  2. Elle est relancée avec la correspondance corrigée
  3. Elle est remplacée par un nouvel appel système
  4. Elle est terminée avec le numéro du bloc d’échange
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Après fork, un processus fils écrit dans cinq pages partagées distinctes protégées par copie sur écriture, de 4 KiB chacune, puis écrit de nouveau dans la première de ces pages. Quelle quantité de données de pages est copiée pour ces écritures ?
  1. 4 KiB
  2. 24 KiB
  3. 20 KiB
  4. 40 KiB
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Avec trois cadres initialement vides, traite 4, 8, 2, 4, 6, 8, 4 avec FIFO et LRU. Quels sont leurs nombres totaux de défauts ?
  1. FIFO : 6 ; LRU : 5
  2. FIFO : 5 ; LRU : 6
  3. FIFO : 6 ; LRU : 6
  4. FIFO : 5 ; LRU : 5
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

L’horloge contient les cadres A(1), B(1), C(0), D(1), avec l’aiguille sur B. Un défaut charge E. Quel est le résultat du remplacement, y compris la nouvelle position de l’aiguille ?
  1. B sort ; le bit de E vaut 1 ; l’aiguille pointe sur C
  2. C sort ; le bit de E vaut 1 ; l’aiguille pointe sur D
  3. C sort ; le bit de E vaut 0 ; l’aiguille pointe sur D
  4. D sort ; le bit de E vaut 1 ; l’aiguille pointe sur A
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Trois processus ont des ensembles de travail de 7, 5 et 4 pages. Seuls 12 cadres sont disponibles. Si le contrôle d’admission suspend exactement un processus entier en minimisant le nombre de pages d’ensemble de travail retirées, lequel doit-il suspendre et combien de cadres restent libres pour les pages nécessaires ?
  1. Suspendre le processus de 5 pages ; 1 cadre libre
  2. Suspendre le processus de 7 pages ; 3 cadres libres
  3. Ne suspendre aucun processus ; 4 cadres libres
  4. Suspendre le processus de 4 pages ; 0 cadre libre
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 3 : Exercices 3 : combine les mécanismes10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Un espace d’adressage virtuel de 28 bits possède des pages de 16 KiB et des entrées de 8 octets dans une table linéaire complète. Quelle est la taille de la table ?
  1. 64 KiB
  2. 128 KiB
  3. 256 KiB
  4. 2 MiB
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Le système d’exploitation retire la permission d’écriture d’une correspondance que deux cœurs peuvent avoir en cache. Quel état en cache doit-il mettre à jour ?
  1. Invalider uniquement les octets de données sur les deux cœurs
  2. Invalider la traduction uniquement sur le cœur qui écrit
  3. Invalider la traduction périmée sur les deux cœurs
  4. Remplacer les identifiants d’espace d’adressage de tous les processus
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Une table inversée couvre 8 GiB de mémoire physique avec des cadres de 8 KiB. Combien d’entrées nécessite-t-elle ?
  1. 1 048 576 entrées
  2. 262 144 entrées
  3. 2 097 152 entrées
  4. 8 388 608 entrées
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Un système à deux niveaux de 32 bits utilise des pages de 4 KiB et des entrées de 4 octets. Le répertoire commence à l’adresse physique 0x3000. Un accès autorisé utilise l’adresse virtuelle 0x01407120 ; sa PDE contient le PFN 0x52 et sa PTE contient le PFN 0x9C. Quelles sont l’adresse de la PDE, celle de la PTE et l’adresse finale des données ?
  1. 0x3005, 0x52007, 0x9C120
  2. 0x3014, 0x5201C, 0x52120
  3. 0x301C, 0x52014, 0x9C120
  4. 0x3014, 0x5201C, 0x9C120
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Un défaut majeur nécessite une lecture de page de 0,15 ms. Si la victime choisie est modifiée, une écriture synchrone nécessaire prend d’abord 0,20 ms. En ignorant tous les autres surcoûts, de combien ce défaut est-il plus lent qu’un défaut utilisant une victime non modifiée dont le contenu est récupérable ?
  1. 0,20 ms de plus
  2. 0,05 ms de plus
  3. 0,15 ms de plus
  4. 0,35 ms de plus
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Pourquoi une page nouvellement fournie par mise à zéro à la demande doit-elle contenir des zéros avant que le processus ne la lise ?
  1. Pour rendre l’adresse virtuelle de la page égale à son numéro de cadre
  2. Pour garantir que la page possède déjà une copie dans l’espace d’échange
  3. Pour empêcher le processeur de positionner un jour son bit de modification
  4. Pour empêcher la divulgation de données laissées par un autre processus
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Une simulation de 20 références commence avec une mémoire vide, accède à huit pages distinctes et enregistre 13 défauts. Quel est son taux de succès après exclusion des défauts obligatoires ?
  1. 7/20, soit 35 %
  2. 12/20, soit 60 %
  3. 7/12, soit environ 58,3 %
  4. 7/13, soit environ 53,8 %
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Une simulation LRU à deux cadres commence avec une mémoire vide sur 9, 3, 9, 7, 3, 9, 7. Quel est le nombre de défauts et une simulation LRU à trois cadres peut-elle produire davantage de défauts sur cette même chaîne ?
  1. 5 défauts ; plus de cadres ne peuvent pas en ajouter
  2. 6 défauts ; plus de cadres ne peuvent pas en ajouter
  3. 6 défauts ; plus de cadres peuvent en ajouter
  4. 7 défauts ; plus de cadres peuvent en ajouter
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

L’horloge commence pleine avec A(1), B(0), C(1), l’aiguille sur A. Les références sont D, A, E, D et E étant initialement absentes ; les succès positionnent les bits, et les remplacements positionnent le nouveau bit et font avancer l’aiguille. Quels sont les contenus finaux des cadres dans leur ordre d’origine et la position de l’aiguille ?
  1. E, D, C ; aiguille sur B
  2. A, E, D ; aiguille sur B
  3. E, D, C ; aiguille sur C
  4. A, D, E ; aiguille sur A
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Après la référence 9 dans 2, 6, 2, 8, 6, 9, 9, 6, 4, quel est l’ensemble de travail pour une fenêtre de cinq références ?
  1. {4, 6, 9}
  2. {2, 4, 6, 8, 9}
  3. {4, 6, 8, 9}
  4. {4, 9}
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 4 : Exercices 4 : analyse les coûts et les profils d’accès10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Une adresse virtuelle de 34 bits utilise des pages de 8 KiB. Combien de bits de VPN et de pages virtuelles l’espace d’adressage possède-t-il ?
  1. 13 bits de VPN ; 213 pages
  2. 22 bits de VPN ; 222 pages
  3. 21 bits de VPN ; 234 pages
  4. 21 bits de VPN ; 221 pages
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Un tableau C aligné sur une frontière de page possède 128 lignes et 1 024 entiers de quatre octets par ligne. Un TLB LRU de 64 entrées est initialement vide ; les pages font 4 KiB et seules les références au tableau comptent. Combien d’échecs de recherche dans le TLB se produisent lors d’un parcours par lignes et lors d’un parcours par colonnes ?
  1. Lignes : 128 ; colonnes : 131 072
  2. Lignes : 128 ; colonnes : 128
  3. Lignes : 1 024 ; colonnes : 131 072
  4. Lignes : 131 072 ; colonnes : 128
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Les processus A et B utilisent tous deux le VPN 12, associé à des cadres différents. Leurs entrées de TLB portent des ASID distincts. Pourquoi les deux entrées peuvent-elles rester en cache lors d’une commutation ?
  1. La recherche vérifie le PFN et les permissions en cache
  2. La recherche vérifie l’ASID courant et le VPN
  3. La recherche vérifie seulement le VPN après mise à jour de la racine
  4. La recherche vérifie seulement l’ASID courant pour toutes ses pages
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Un système à deux niveaux de 32 bits possède des pages de 4 KiB et des entrées de 4 octets. Le processus A associe à des cadres 1 024 pages consécutives à partir de l’adresse virtuelle zéro. Le processus B associe 1 024 pages à des cadres, une dans chaque zone de répertoire. Quelle quantité de mémoire chacun nécessite-t-il pour ses tables, répertoire compris ?
  1. A : 4 KiB ; B : 4 MiB
  2. A : 8 KiB ; B : 8 KiB
  3. A : 8 KiB ; B : 4 MiB + 4 KiB
  4. A : 4 MiB ; B : 4 MiB + 4 KiB
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Dans une pagination x86-64 à quatre niveaux, remplace une zone alignée de 2 MiB entièrement couverte par des correspondances de 4 KiB par une seule correspondance de 2 MiB. Suppose que les tables supérieures restent nécessaires pour d’autres correspondances. Combien de pages de table de dernier niveau et de lectures de parcours par échec dans le TLB sont supprimées pour cette zone ?
  1. 512 pages de table ; une lecture de parcours
  2. Une page de table ; deux lectures de parcours
  3. Une page de table ; une lecture de parcours
  4. 512 pages de table ; deux lectures de parcours
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Une référence provoque un échec de recherche dans le TLB, mais sa PTE indique que la page est présente et autorise l’accès. L’obtention de cette traduction nécessite-t-elle un défaut de page majeur ?
  1. Oui ; chaque remplissage du TLB lit la page depuis l’espace d’échange
  2. Non ; la traduction peut être chargée sans lecture sur le stockage
  3. Oui ; l’échec dans le TLB remet le bit de présence à zéro
  4. Non ; l’accès se termine sans aucune vérification de permissions
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Les références ordinaires prennent 120 ns et les références provoquant un défaut majeur prennent 3 ms au total. Quelle probabilité maximale de défaut majeur maintient la moyenne à 150 ns ou moins dans le modèle à deux cas ?
  1. 150/3000000=5,0×10−5
  2. 30/3000120≈1,0×10−5
  3. 120/3000000=4,0×10−5
  4. 30/2999880≈1,0×10−5
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Compare LRU et OPT avec trois cadres initialement vides sur 5, 2, 8, 5, 1, 2, 5, 8. Combien de défauts chacun produit-il ?
  1. LRU : 6 ; OPT : 5
  2. LRU : 7 ; OPT : 5
  3. LRU : 6 ; OPT : 6
  4. LRU : 7 ; OPT : 6
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

Un parcours de l’algorithme de l’horloge amélioré compare X, avec (référence, modification) = (0 ; 1), et Y, avec (1 ; 0). Selon l’ordre de préférence standard des classes, quelle page est préférée et quel coût sa préservation peut-elle nécessiter ?
  1. Y ; sa préservation peut nécessiter une écriture
  2. X ; son bit de référence à zéro évite toute écriture
  3. X ; sa préservation peut nécessiter une écriture
  4. Y ; son bit de modification à zéro prouve qu’elle est inutilisée
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

Deux processus ont chacun besoin de six pages pour progresser, mais reçoivent ensemble huit cadres. Une solution proposée remplace le remplacement global par le remplacement local et donne quatre cadres à chacun. Pourquoi cela peut-il laisser l’écroulement sans solution ?
  1. Chaque allocation reste inférieure à l’ensemble de travail du processus
  2. Le remplacement local rend chaque allocation définitivement fixe
  3. Huit cadres suffisent lorsque chaque page a un utilisateur distinct
  4. Les deux processus choisissent encore leurs victimes dans un pool global
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Série 5 : Exercices 5 : applique et diagnostique10 Questions Pratiques

Enregistre cette unité pour voir chaque réponse et t'entraîner sur chaque série.

Question 1 sur 10

Avec des pages de 8 KiB, l’adresse virtuelle 0x00012345 possède une correspondance vers le PFN 0x2D indiquant que la page est présente et que l’accès est autorisé. Quelle adresse physique obtient-on ?
  1. 0x0005A345
  2. 0x0002D345
  3. 0x0005B345
  4. 0x00012345
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 2 sur 10

Deux conceptions n’ajoutent aucun temps de recherche dans le TLB et ne comportent ni défauts de page ni caches de parcours. Un accès mémoire prend 90 ns. La conception L possède une table linéaire et 95 % de succès dans le TLB ; la conception H possède une table à quatre niveaux et 99 % de succès. Quels sont leurs temps moyens par référence ?
  1. L : 94,5 ns ; H : 90,9 ns
  2. L : 85,5 ns ; H : 89,1 ns
  3. L : 94,5 ns ; H : 93,6 ns
  4. L : 99 ns ; H : 97,2 ns
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 3 sur 10

Pour un nombre fixe de bits d’adresse virtuelle, une table linéaire passe de pages de 4 KiB et d’entrées de 8 octets à des pages de 16 KiB et des entrées de 16 octets. Comment sa taille totale en octets change-t-elle ?
  1. Elle devient quatre fois plus petite
  2. Elle devient deux fois plus petite
  3. Elle reste de la même taille
  4. Elle devient deux fois plus grande
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 4 sur 10

Un système hypothétique utilise 46 bits d’adresse virtuelle pris en charge, des pages de 8 KiB et des entrées de 8 octets dans des tables de la taille d’une page. Les indices des niveaux inférieurs utilisent leur pleine capacité. Combien de niveaux sont nécessaires et combien de bits d’indice restent pour la racine ?
  1. Trois niveaux ; 10 bits d’indice pour la racine
  2. Quatre niveaux ; 6 bits d’indice pour la racine
  3. Cinq niveaux ; 3 bits d’indice pour la racine
  4. Quatre niveaux ; 3 bits d’indice pour la racine
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 5 sur 10

Une page modifiée est réécrite avec succès tout en restant présente en mémoire. Aucun processus n’y écrit ensuite. Quel est son état et une autre référence peut-elle l’utiliser sans la relire depuis le stockage ?
  1. Modifiée et présente ; oui
  2. Non modifiée et présente ; oui
  3. Non modifiée et absente ; non
  4. Modifiée et absente ; non
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 6 sur 10

Les processus A, B et C partagent initialement deux pages de données privées de 4 KiB par copie sur écriture. A écrit dans les deux pages, puis B écrit dans la première et C dans la seconde. Un gestionnaire ne réutilise un cadre d’origine que lorsqu’il n’a plus qu’un seul utilisateur. Quelle quantité supplémentaire de mémoire physique ces écritures nécessitent-elles pour les pages ?
  1. 16 KiB
  2. 12 KiB
  3. 20 KiB
  4. 24 KiB
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 7 sur 10

Une simulation de références utilise sept pages distinctes et commence avec une mémoire vide. Combien de défauts obligatoires doit-elle contenir ?
  1. 0 défaut obligatoire
  2. 6 défauts obligatoires
  3. 7 défauts obligatoires
  4. 14 défauts obligatoires
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 8 sur 10

Deux simulations FIFO initialement vides traitent 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5, 1, avec trois et quatre cadres. Quels sont les nombres de défauts et l’allocation la plus grande présente-t-elle l’anomalie de Belady sur cette chaîne complète ?
  1. Trois : 9 ; quatre : 10 ; oui
  2. Trois : 10 ; quatre : 10 ; non
  3. Trois : 11 ; quatre : 10 ; non
  4. Trois : 10 ; quatre : 11 ; oui
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 9 sur 10

L’horloge contient les cadres R(1), S(1), T(1), avec l’aiguille sur S. Aucun succès ne se produit pendant sa recherche d’une victime. Quelle page est évacuée et où l’aiguille termine-t-elle après le remplacement ?
  1. R est évacuée ; l’aiguille termine sur S
  2. S est évacuée ; l’aiguille termine sur T
  3. T est évacuée ; l’aiguille termine sur R
  4. S est évacuée ; l’aiguille termine sur S
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Question 10 sur 10

À un instant donné, les processus A et B ont les fenêtres de références 7, 4, 7, 9, 4, 7 et 2, 8, 2, 5, 8, 2. La taille de la fenêtre est de six et leurs ensembles de pages sont disjoints. Ils disposent de cinq cadres au total. Que déduit une politique de contrôle d’admission fondée sur les ensembles de travail ?
  1. La demande est de douze cadres ; raccourcir automatiquement les deux fenêtres
  2. La demande est de cinq cadres ; les deux ensembles de travail tiennent déjà
  3. La demande est de six cadres ; réduire l’ensemble des processus actifs
  4. La demande est de trois cadres ; les deux processus peuvent partager tous les cadres
Afficher la réponseMasquer la réponse

Enregistre cette unité pour voir cette réponse.

Tu bloques sur ton propre exercice ? Aide aux Devoirs

Mots-Clés

79 Mots-Clés, chacun avec sa définition

A

Adresse canonique
Une adresse canonique est une adresse x86-64 dont les bits supérieurs inutilisés répètent le bit d’adresse virtuelle pris en charge de poids le plus fort.
En mode ordinaire à quatre niveaux, les bits au-dessus du bit 47 doivent le répéter pour que l’adresse soit canonique.
Aiguille de l’horloge
Une aiguille de l’horloge indique le prochain cadre à examiner lors du remplacement par l’algorithme de l’horloge et avance lorsque les bits des pages candidates sont remis à zéro ou que ces pages sont remplacées.
Après le remplacement de la page d’un cadre, l’aiguille de l’horloge avance vers le cadre suivant du cercle.
Algorithme à pile
Un algorithme à pile possède des ensembles de pages présentes inclus les uns dans les autres lorsque la capacité en cadres augmente, ce qui garantit que des cadres supplémentaires n’augmentent pas son nombre de défauts.
LRU et OPT possèdent la propriété de pile, même si LRU peut tout de même produire davantage de défauts qu’OPT.
Algorithme de l’horloge amélioré
L’algorithme de l’horloge amélioré intègre l’état de modification à la sélection des victimes avec seconde chance, afin de tenir compte à la fois de l’historique des accès et du coût de préservation du contenu.
Une page dont les bits de référence et de modification valent tous deux 0, la classe préférée (0 ; 0), n’a pas d’utilisation récente enregistrée ni de changements en attente de réécriture.
Anomalie de Belady
L’anomalie de Belady est une augmentation des défauts de page lorsqu’une politique reçoit davantage de cadres pour une même chaîne de références et des conditions initiales identiques.
FIFO peut présenter cette anomalie ; la capacité supplémentaire modifie ses choix ultérieurs de victimes selon l’ordre d’arrivée.

B

Bit de modification
Un bit de modification enregistre si une page a été écrite depuis la dernière remise à zéro de son état de modification, ce qui aide à identifier les changements non sauvegardés.
Une fois la réécriture terminée, le système d’exploitation peut remettre l’état de modification à zéro pendant que la page reste présente en mémoire.
Bit de présence
Un bit de présence indique au matériel si une entrée fournit une correspondance vers une page présente en mémoire ; s’il est à zéro, le logiciel doit déterminer l’état de la page.
Un bit de présence à zéro peut conduire le gestionnaire aux métadonnées de l’espace d’échange ou à une allocation avec mise à zéro à la demande.
Bit de référence
Un bit de référence enregistre si une page a été consultée depuis la dernière remise à zéro du bit par le système d’exploitation ; il ne compte pas les accès.
Dix lectures après la remise à zéro laissent la même valeur qu’une seule lecture : le bit de référence vaut 1.
Bits de protection
Les bits de protection précisent les opérations autorisées sur une correspondance, comme la lecture, l’écriture, l’exécution et l’accès depuis le mode utilisateur.
Une page de code présente en mémoire peut refuser une écriture même si son numéro de cadre est disponible.

C

Cache des structures de pagination
Un cache des structures de pagination conserve des informations intermédiaires des tables des pages afin que les parcours ultérieurs évitent de répéter certaines recherches dans les niveaux supérieurs.
Un échec de recherche dans le TLB à quatre niveaux peut coûter moins de quatre attentes dues à la mémoire principale lorsque des entrées intermédiaires sont en cache.
Cadre de page
Un cadre de page est un bloc de taille fixe de mémoire physique qui peut contenir une page virtuelle de taille correspondante.
Le système d’exploitation peut utiliser n’importe quel cadre libre de 4 KiB pour contenir une page de 4 KiB nouvellement nécessaire.
Chaîne de références
Une chaîne de références est une suite ordonnée de numéros de pages utilisée pour simuler les succès, les défauts et les choix de victimes d’une politique de remplacement.
Une même chaîne de références et les mêmes cadres initiaux permettent de comparer FIFO et LRU dans des conditions égales.
Contrôle d’admission
Le contrôle d’admission limite l’ensemble des processus actifs afin que les cadres disponibles puissent prendre en charge leur demande de mémoire, en suspendant des processus si nécessaire.
Si les ensembles de travail actifs dépassent la capacité, suspendre un processus peut permettre aux autres de progresser.
Contrôle de la fréquence des défauts de page
Le contrôle de la fréquence des défauts de page ajuste l’allocation de cadres d’un processus à l’aide de seuils supérieur et inférieur appliqués à son taux de défauts mesuré.
Un processus au-dessus du seuil supérieur a besoin de davantage de cadres ; un processus sous le seuil inférieur peut en libérer.
Copie sur écriture
La copie sur écriture partage initialement le contenu de pages privées et crée une copie privée accessible en écriture lorsqu’un processus écrit pour la première fois dans une page partagée.
Un processus fils qui ne modifie que trois pages de 4 KiB peut éviter de copier toute la zone de données du processus père.
Couverture du TLB
La couverture du TLB est la quantité de mémoire représentée par un ensemble de traductions en cache, calculée en multipliant le nombre d’entrées par la taille de page.
Soixante-quatre entrées représentent 256 KiB avec des pages de 4 KiB, en supposant que chaque entrée corresponde à une page de cette taille.

D

Défaut de capacité
Un défaut de capacité se produit lorsque le nombre limité de cadres empêche de conserver une page jusqu’à ce qu’une référence ultérieure en ait à nouveau besoin.
Une page qui revient peut provoquer un défaut même si elle a été chargée auparavant, parce qu’une autre page a réutilisé son cadre.
Défaut de page
Un défaut de page est une exception déclenchée lorsqu’un accès mémoire ne peut pas se terminer avec sa correspondance actuelle, notamment en cas d’absence ou de violation de protection.
Le gestionnaire peut traiter un défaut d’écriture dû à la copie sur écriture, mais rejeter une écriture dans du code de programme réellement en lecture seule.
Défaut de page majeur
Un défaut de page majeur nécessite une lecture sur le stockage pour obtenir le contenu de la page avant que le système d’exploitation puisse terminer la correspondance.
Lire depuis un SSD une page de données placée dans l’espace d’échange reste un défaut majeur même si le SSD est rapide.
Défaut de page mineur
Un défaut de page mineur est résolu sans lire le contenu de la page sur le stockage, par exemple en fournissant une mémoire mise à zéro ou en associant la page à un cadre présent en mémoire.
Une allocation avec mise à zéro à la demande peut augmenter le nombre de défauts mineurs sans provoquer de trafic vers l’espace d’échange.
Défaut obligatoire
Un défaut obligatoire est un défaut de première utilisation sur une page qui n’a pas encore été chargée, qu’un changement de politique de sélection des victimes ne peut pas éviter.
Une simulation qui commence avec une mémoire vide et accède à cinq pages distinctes comporte cinq défauts obligatoires.
Démon de pagination
Un démon de pagination est un composant du système d’exploitation qui récupère de la mémoire en arrière-plan et prépare des cadres libres avant que des allocations urgentes n’en aient besoin.
kswapd sous Linux peut commencer à récupérer des pages alors qu’il reste encore une petite réserve de cadres libres.
Déplacement dans la page
Un déplacement dans la page est la position d’un octet dans une page, codée dans les bits de poids faible de l’adresse et conservée pendant la traduction.
Un déplacement de 904 identifie toujours l’octet 904 après l’association de la page au cadre physique 9.

E

Ensemble de travail
Un ensemble de travail est l’ensemble des pages distinctes qu’un processus a utilisées dans une fenêtre récente de références, qui estime ses besoins actuels en pages présentes en mémoire.
Pour la fenêtre de cinq références 4, 5, 4, 5, 4, l’ensemble de travail est {4, 5}, de taille deux.
Entrée de répertoire de pages
Une entrée de répertoire de pages est un enregistrement qui pointe vers une table de niveau inférieur et contient l’état ou les permissions de la zone virtuelle qu’il représente.
Le numéro de cadre d’une PDE qui n’est pas au dernier niveau localise une page de PTE, et non le cadre final des données du programme.
Entrée de table des pages
Une entrée de table des pages est un enregistrement de correspondance contenant un numéro de cadre physique et des informations d’état ou de protection pour une page virtuelle.
Le processeur vérifie une entrée de table des pages avant d’utiliser son numéro de cadre pour terminer une traduction.
Erreur de segmentation
Une erreur de segmentation est une réponse habituelle du système d’exploitation à un accès mémoire invalide ou interdit que le gestionnaire ne peut pas corriger légitimement.
Un échec de recherche dans le TLB sur une page présente et accessible ne provoque pas à lui seul une erreur de segmentation.
Espace d’adressage creux
Un espace d’adressage creux comporte de grandes zones virtuelles inutilisées entre les zones associées à des cadres, comme l’espace entre le tas et la pile d’un processus.
Le grand espace virtuel vide ne nécessite pas de cadres de données simplement parce que des adresses existent de chaque côté.
Espace d’échange
L’espace d’échange est une zone de stockage réservée à la préservation du contenu des pages déplacées hors de la mémoire physique, par exemple un fichier ou une partition d’échange.
Un gestionnaire de défauts peut lire les octets d’une page déplacée depuis son emplacement enregistré dans l’espace d’échange vers un cadre libre.

É

Échec de recherche dans le TLB
Un échec de recherche dans le TLB se produit lorsqu’aucune traduction utilisable pour une page virtuelle demandée et son contexte n’est trouvée dans le cache de traduction.
Un échec de recherche dans le TLB peut être résolu à partir d’une PTE indiquant que la page est présente, sans lire son contenu depuis l’espace d’échange.
Écroulement
L’écroulement est un déplacement intense et durable de pages accompagné de peu d’exécution utile, parce que les processus actifs ont besoin de plus de pages présentes que la mémoire ne peut en contenir.
Une faible utilisation du processeur accompagnée d’une pagination constante peut signaler que lancer davantage de processus aggraverait la pression.

F

Fragmentation interne
La fragmentation interne est l’espace alloué qui reste inutilisé dans un bloc de taille fixe, comme la dernière page partiellement remplie d’une zone.
Une zone de 9 000 octets dans trois pages de 4 KiB laisse 3 288 octets alloués inutilisés.

I

Identifiant d’espace d’adressage
Un identifiant d’espace d’adressage associe les traductions en cache à leur contexte d’espace d’adressage afin de distinguer les VPN identiques de processus différents.
Des ASID différents permettent à deux traductions de la page virtuelle 7 de coexister en toute sécurité dans le même TLB.
Indice de répertoire
Un indice de répertoire est le champ de poids fort du VPN qui sélectionne une entrée dans le répertoire de pages lors d’une traduction hiérarchique d’adresse.
Les dix bits de poids fort sélectionnent l’entrée de répertoire 2 pour l’adresse virtuelle 0x00803ABC dans le schéma 10/10/12.
Indice de table
Un indice de table est le champ du VPN qui sélectionne une entrée dans la table de niveau inférieur localisée par l’entrée de répertoire précédente.
L’indice de table 3 localise une PTE à 12 octets après la base de sa table lorsque les entrées occupent quatre octets.
Invalidation du TLB
Une invalidation du TLB invalide les traductions en cache dans son périmètre, obligeant les références ultérieures à les recharger à partir des informations de correspondance actuelles.
L’invalidation lors d’une commutation de contexte empêche le processus suivant d’utiliser une traduction dépourvue d’identifiant.
Invalidation interprocesseur du TLB
Une invalidation interprocesseur du TLB coordonne l’invalidation entre les cœurs de processeur susceptibles de conserver en cache une correspondance modifiée par le système d’exploitation.
Retirer la permission d’écriture nécessite que les autres cœurs cessent d’utiliser toute ancienne traduction autorisant l’écriture.
Isolation des tables de pages du noyau
L’isolation des tables de pages du noyau sépare la plupart des projections du noyau de celles utilisées pendant l’exécution en mode utilisateur et change de contexte de correspondance à l’entrée dans le noyau.
Sur les systèmes concernés, l’isolation réduit l’exposition à Meltdown au prix d’un travail supplémentaire de changement de correspondance.

L

Localité spatiale
La localité spatiale est la tendance à accéder à des adresses voisines à des instants proches, ce qui permet à une traduction de page de servir de nombreuses références.
La lecture d’éléments voisins d’un tableau produit souvent de nombreux succès dans le TLB après le premier élément d’une page.
Localité temporelle
La localité temporelle est la tendance à réutiliser des adresses consultées récemment, ce qui rend l’historique récent des traductions utile pour la mise en cache.
Une courte boucle exécute de façon répétée du code sur les mêmes quelques pages et peut réutiliser leurs correspondances en cache.
LRU multigénérationnel
Le LRU multigénérationnel est une approche de récupération des pages sous Linux qui regroupe les pages selon la date d’utilisation observée afin de guider leur évacuation sous pression mémoire.
Le vieillissement par générations donne au code de récupération davantage d’informations sur les utilisations récentes qu’un seul bit de référence sans vieillissement.

M

Mise à zéro à la demande
La mise à zéro à la demande fournit une mémoire remplie de zéros à la première utilisation au lieu d’allouer et de mettre à zéro chaque page réservée à l’avance.
Une page du tas nouvellement consultée peut être fournie sans lecture sur disque tout en masquant les anciens octets d’un cadre recyclé.

N

Numéro de cadre physique
Un numéro de cadre physique identifie un cadre par son indice en mémoire physique, et non par l’adresse en octets du début du cadre.
Pour des pages de 4 KiB, le numéro de cadre physique 3 identifie le cadre commençant à l’adresse d’octet 12 288.
Numéro de page virtuelle
Un numéro de page virtuelle est la partie de poids fort d’une adresse virtuelle qui identifie la page virtuelle contenant l’octet demandé.
Avec des pages de 1 024 octets, l’adresse virtuelle 5 000 a pour numéro de page virtuelle 4 et pour déplacement 904.

P

Page
Une page est un bloc de taille fixe d’adresses virtuelles associé comme une seule unité à un cadre physique de même taille.
Une page virtuelle de 4 KiB peut occuper le cadre 12 même si la page virtuelle suivante occupe le cadre 3.
Page de code partagée
Une page de code partagée est une page physique d’instructions de programme projetée en lecture seule dans l’espace d’adressage de plusieurs processus.
Plusieurs instances d’un éditeur peuvent utiliser une seule copie présente en mémoire de la même page de code par l’intermédiaire de PTE différentes.
Page de grande taille
Une page de grande taille est une page associée à la mémoire physique dont la taille dépasse celle d’une page de base et qui peut terminer un parcours hiérarchique à une entrée de niveau supérieur.
Une entrée de répertoire x86-64 peut associer directement une page de 2 MiB à la mémoire physique et éviter la recherche dans la table du niveau le plus bas.
Page non modifiée
Une page non modifiée n’a aucun changement en attente selon le suivi de son état de modification ; l’écarter en toute sécurité nécessite néanmoins un contenu récupérable ou pouvant être recréé.
Du code non modifié peut être écarté puis rechargé depuis son exécutable sans nouvelle écriture.
Page victime
Une page victime est une page présente en mémoire choisie pour être évacuée afin que son cadre physique puisse être réutilisé pour le contenu d’une autre page.
OPT choisit la victime présente en mémoire dont la prochaine utilisation est la plus éloignée dans la chaîne future connue.
Pagination à cinq niveaux
La pagination à cinq niveaux ajoute un niveau de table supérieur sur les processeurs x86-64 compatibles et permet, lorsqu’elle est activée, de prendre en charge 57 bits d’adresse virtuelle.
L’activation du niveau supplémentaire ajoute un indice de neuf bits avant les quatre indices inférieurs habituels.
Pagination à la demande
La pagination à la demande fournit une page lorsqu’une référence en a besoin pour la première fois, évitant de préparer chaque page avant le début de l’exécution.
Un programme peut commencer à s’exécuter alors que les pages auxquelles il n’a pas encore accédé n’ont pas de contenu présent en mémoire.
Parcours de la table des pages
Un parcours de la table des pages suit des entrées de correspondance indexées depuis la racine sélectionnée jusqu’à une entrée de dernier niveau qui identifie la page physique demandée.
Un parcours à deux niveaux lit une PDE et une PTE avant que le processeur n’accède aux données demandées.
PML4
Une PML4 est la table de niveau supérieur de la pagination x86-64 à quatre niveaux, sélectionnée par CR3 et indexée par les bits 47 à 39 de l’adresse virtuelle.
L’entrée de la PML4 conduit à une table des pointeurs de répertoires avant que le parcours n’atteigne le répertoire et le dernier niveau.
Préchargement
Le préchargement fournit des pages avant qu’elles soient demandées, en utilisant un profil d’accès prévu pour réduire l’attente ultérieure de leur contenu.
La lecture anticipée peut aider un profil d’accès séquentiel, mais gaspille des ressources si les pages prévues sont inutilisées.
Projection mémoire réservée au superviseur
Une projection mémoire réservée au superviseur autorise les accès privilégiés du noyau tout en refusant les références ordinaires en mode utilisateur à la mémoire projetée.
Une lecture en mode utilisateur d’une page du noyau réservée au superviseur est rejetée même lorsque la correspondance est présente.

R

Réécriture
La réécriture préserve le contenu modifié d’une page présente en mémoire dans un stockage de sauvegarde, ce qui permet de remettre son état de modification à zéro après réussite.
Réécrire une page n’impose pas de l’évacuer immédiatement ; le processus peut continuer à utiliser le cadre.
Regroupement des transferts de pages
Le regroupement des transferts de pages réunit des transferts de pages en opérations de stockage plus importantes, réduisant le surcoût de nombreux petits transferts distincts, surtout sur les disques.
Un démon de pagination peut combiner plusieurs écritures de pages modifiées pendant qu’il prépare des cadres pour une réutilisation ultérieure.
Remplacement aléatoire
Le remplacement aléatoire choisit au hasard une victime présente en mémoire, évitant de classer les pages selon leurs utilisations récentes mais produisant des résultats différents selon les exécutions.
Des choix aléatoires peuvent faire mieux que LRU en moyenne sur un cycle trop grand, mais une exécution peut tout de même être malchanceuse.
Remplacement de la page la moins fréquemment utilisée
Le remplacement de la page la moins fréquemment utilisée sélectionne la page dont la fréquence d’accès comptabilisée est la plus faible, ce qui peut favoriser des pages très utilisées il y a longtemps.
Sans vieillissement, une page autrefois très utilisée peut rester en mémoire tandis qu’une page utile d’une nouvelle phase est évacuée.
Remplacement de la page la moins récemment utilisée
Le remplacement de la page la moins récemment utilisée évacue la page présente en mémoire dont l’accès le plus récent est le plus ancien, en actualisant l’ordre des utilisations lors d’un succès.
Un succès sur une page arrivée depuis longtemps la protège avec LRU, même si elle reste ancienne dans la file de FIFO.
Remplacement FIFO
Le remplacement FIFO évacue la page présente en mémoire qui a été chargée le plus tôt, en conservant l’ordre d’arrivée sans le modifier lors des succès.
Une page fréquemment utilisée peut tout de même être la victime de FIFO si elle est arrivée avant toutes les autres pages présentes.
Remplacement global
Le remplacement global permet à un processus ayant provoqué un défaut d’évacuer une page appartenant à un autre processus, en partageant les cadres disponibles avec souplesse.
Un processus dont les besoins augmentent peut accroître le taux de défauts d’un autre en prenant les cadres qui contenaient ses pages.
Remplacement local
Le remplacement local limite la sélection des victimes aux cadres alloués au processus ayant provoqué le défaut, ce qui limite les évacuations entre processus.
Une allocation de quatre cadres ne peut toujours pas contenir un ensemble de travail de six pages simplement parce que le remplacement est local.
Remplacement optimal
Le remplacement optimal évacue la page qui sera nécessaire le plus tard et donne le nombre minimal de défauts pour une chaîne de références entièrement connue.
OPT est une référence de simulation, car un système d’exploitation ne peut pas connaître les accès futurs d’un programme quelconque.
Remplacement par l’algorithme de l’horloge
Le remplacement par l’algorithme de l’horloge parcourt un cercle de cadres, remet à zéro les bits de référence positionnés et évacue la première page candidate dont le bit est à zéro.
Une page dont le bit de référence vaut 1 reçoit une autre chance lorsque l’aiguille remet son bit à zéro et poursuit.
Répertoire de pages
Un répertoire de pages est une table de niveau supérieur dont les entrées localisent les pages de tables des pages de niveau inférieur ou marquent leurs zones comme absentes.
Dans un système 10/10/12, une entrée de répertoire couvre une zone virtuelle contenant 1 024 pages de données.

S

Segmentation paginée
La segmentation paginée donne à chaque segment une table des pages avec une borne, sans prévoir d’entrées pour les espaces virtuels vides entre les segments.
Des tables distinctes pour le tas et la pile évitent les entrées de l’espace vide, mais peuvent nécessiter l’allocation de tables de tailles différentes.
Seuil de mémoire libre
Un seuil de mémoire libre est une valeur utilisée pour déclencher ou limiter la récupération en arrière-plan afin que le système maintienne une réserve de cadres.
Lorsque la mémoire libre passe sous un seuil bas, la récupération commence en visant un nombre supérieur de cadres libres.

T

Table des pages
Une table des pages est une structure gérée par le système d’exploitation qui répertorie les correspondances entre les adresses virtuelles et physiques d’un processus ainsi que les informations d’accès.
Changer la table des pages courante permet à deux processus d’utiliser la même adresse virtuelle pour des données différentes.
Table des pages hachée
Une table des pages hachée localise les enregistrements de correspondance à l’aide d’un hachage de l’identité de la page virtuelle, avec un traitement supplémentaire lorsque des clés entrent en collision.
Une recherche par hachage peut trouver une correspondance entre un processus et un VPN sans parcourir toutes les entrées d’une structure inversée.
Table des pages inversée
Une table des pages inversée comporte une entrée par cadre physique du système, qui enregistre l’identité de l’espace d’adressage et la page virtuelle qui occupent ce cadre.
Avec 16 GiB de mémoire vive et des cadres de 4 KiB, une table strictement inversée comporte 4 194 304 entrées de cadres.
Table des pages linéaire
Une table des pages linéaire est un tableau comportant une entrée pour chaque page virtuelle possible et utilisant le numéro de page virtuelle comme indice.
Une table linéaire complète pour des adresses de 32 bits, des pages de 4 KiB et des entrées de 4 octets occupe 4 MiB par processus.
Table des pages multiniveau
Une table des pages multiniveau est une hiérarchie de tables indexées qui n’alloue des branches de niveau inférieur que là où les correspondances d’adresses les nécessitent.
Une plage virtuelle inutilisée peut être représentée par une branche absente au lieu de milliers d’entrées inutilisées au dernier niveau.
Tampon de traduction
Un tampon de traduction est un cache matériel rapide contenant des traductions récentes de pages virtuelles et leurs informations d’accès.
L’accès séquentiel à de nombreux entiers sur une page peut réutiliser une seule traduction en cache dans le TLB.
Temps d’accès effectif
Le temps d’accès effectif est le temps moyen des références mémoire, pondéré par leurs probabilités, selon un modèle donné de coûts des succès, des échecs ou des défauts.
Un taux de succès dans le TLB de 98 % donne 102 ns lorsque les succès prennent 100 ns et les échecs dont la traduction est trouvée prennent 200 ns.
TLB géré par le matériel
Un TLB géré par le matériel est rempli par le matériel du processeur, qui parcourt une table des pages au format défini par le matériel lorsqu’une traduction manque.
Un échec ordinaire de recherche dans le TLB sur x86 peut être traité sans entrer dans un gestionnaire de remplissage du système d’exploitation.
TLB géré par logiciel
Un TLB géré par logiciel utilise un gestionnaire d’exception du système d’exploitation pour trouver une traduction manquante et l’installer à l’aide d’instructions privilégiées.
Un gestionnaire de remplissage MIPS classique effectue un retour afin que le processeur puisse relancer l’instruction dont la recherche a échoué.
Tueur de processus en cas de manque de mémoire
Un tueur de processus en cas de manque de mémoire termine un processus sélectionné sous une pression extrême afin que sa mémoire puisse être récupérée à sa sortie.
Le processus terminé perd son travail, tandis que les ressources libérées peuvent permettre aux autres processus de continuer.

U

Unité de gestion mémoire
Une unité de gestion mémoire est un composant matériel du processeur qui traduit les adresses et fait respecter les permissions des correspondances lors des références mémoire.
La MMU peut refuser une écriture par une traduction en lecture seule même lorsque la recherche dans le TLB réussit.

À propos de cette unité

Par StudeliSignaler une erreur

Crée ton propre Matériel d'Étude

Transforme tes notes, diapos et documents en Guides d'Étude, Questions Pratiques, Flashcards et 6 autres outils.

Commencer