Pagination de la mémoire - Memory paging

Dans l' ordinateur les systèmes d' exploitation , la pagination de la mémoire est une gestion de la mémoire système par lequel un ordinateur stocke et récupère les données de stockage secondaire pour une utilisation dans la mémoire principale . Dans ce schéma, le système d'exploitation récupère les données du stockage secondaire dans des blocs de même taille appelés pages . La pagination est une partie importante des implémentations de mémoire virtuelle dans les systèmes d'exploitation modernes, utilisant le stockage secondaire pour permettre aux programmes de dépasser la taille de la mémoire physique disponible.

Par souci de simplicité, la mémoire principale est appelée "RAM" (un acronyme de mémoire à accès aléatoire ) et le stockage secondaire est appelé "disque" (un raccourci pour disque dur , mémoire à tambour ou lecteur à semi-conducteurs , etc.), mais comme avec de nombreux aspects de l'informatique, les concepts sont indépendants de la technologie utilisée.

Histoire

Ferranti a introduit la pagination sur l' Atlas , mais les premières pages de mémoire grand public étaient des concepts d'architecture informatique, indépendamment du fait qu'une page se soit déplacée entre la RAM et le disque. Par exemple, sur le PDP-8 , 7 des bits d'instruction comprenaient une adresse mémoire qui sélectionnait l'un des 128 (2 7 ) mots. Cette zone de mémoire s'appelait une page . Cette utilisation du terme est maintenant rare. Dans les années 1960, l'échange était l'une des premières techniques de mémoire virtuelle. Un programme entier serait "échangé" (ou "déployé") de la RAM vers le disque, et un autre serait remplacé (ou intégré ). Un programme échangé serait en cours mais son exécution serait suspendue pendant que sa RAM était utilisée par un autre programme.

Un programme peut inclure plusieurs superpositions qui occupent la même mémoire à des moments différents. Les superpositions ne sont pas une méthode de pagination de la RAM sur le disque mais simplement de minimiser l'utilisation de la RAM du programme. Les architectures suivantes ont utilisé la segmentation de la mémoire et les segments de programme individuels sont devenus les unités échangées entre le disque et la RAM. Un segment était l'intégralité du segment de code ou du segment de données du programme, ou parfois d'autres grandes structures de données. Ces segments devaient être contigus lorsqu'ils résidaient dans la RAM, ce qui nécessitait des calculs et des déplacements supplémentaires pour remédier à la fragmentation .

L'invention de la table des pages a permis au processeur d'opérer sur des pages arbitraires n'importe où dans la RAM comme un espace d' adressage logique apparemment contigu . Ces pages sont devenues les unités échangées entre le disque et la RAM.

Défauts de page

Lorsqu'un processus essaie de référencer une page qui n'est pas actuellement présente dans la RAM, le processeur traite cette référence mémoire invalide comme un défaut de page et transfère le contrôle du programme au système d'exploitation. Le système d'exploitation doit :

  1. Déterminez l'emplacement des données sur le disque.
  2. Obtenez un cadre de page vide dans la RAM à utiliser comme conteneur pour les données.
  3. Chargez les données demandées dans le cadre de page disponible.
  4. Mettez à jour le tableau des pages pour faire référence au nouveau cadre de page.
  5. Rendre le contrôle au programme, en réessayant de manière transparente l' instruction qui a causé l'erreur de page.

Lorsque tous les cadres de page sont utilisés, le système d'exploitation doit sélectionner un cadre de page à réutiliser pour la page dont le programme a maintenant besoin. Si le cadre de page expulsé a été alloué dynamiquement par un programme pour contenir des données, ou si un programme l'a modifié depuis qu'il a été lu dans la RAM (en d'autres termes, s'il est devenu "sale"), il doit être écrit sur le disque avant d'être libéré. Si un programme fait ultérieurement référence à la page supprimée, un autre défaut de page se produit et la page doit être relue dans la RAM.

La méthode utilisée par le système d'exploitation pour sélectionner le cadre de page à réutiliser, qui est son algorithme de remplacement de page , est importante pour l'efficacité. Le système d'exploitation prédit le cadre de page le moins susceptible d'être nécessaire bientôt, souvent via l' algorithme le moins récemment utilisé (LRU) ou un algorithme basé sur l' ensemble de travail du programme . Pour augmenter encore la réactivité, les systèmes de pagination peuvent prédire quelles pages seront bientôt nécessaires, en les chargeant de manière préventive dans la RAM avant qu'un programme ne les référence.

Techniques de remplacement de page

Pagination à la demande
Lorsque la pagination à la demande pure est utilisée, les pages ne sont chargées que lorsqu'elles sont référencées. Un programme à partir d'un fichier mappé en mémoire commence son exécution sans aucune de ses pages en RAM. Lorsque le programme commet des erreurs de page, le système d'exploitation copie les pages nécessaires à partir d'un fichier, par exemple un fichier mappé en mémoire , un fichier d'échange ou une partition d'échange contenant les données de la page dans la RAM.

Pagination anticipée
Cette technique, parfois aussi appelée swap prefetch, prédit quelles pages seront bientôt référencées, afin de minimiser les futurs défauts de page. Par exemple, après avoir lu une page pour réparer un défaut de page, le système d'exploitation peut également lire les quelques pages suivantes même si elles ne sont pas encore nécessaires (une prédiction utilisant la localité de référence ). Si un programme se termine, le système d'exploitation peut retarder la libération de ses pages, au cas où l'utilisateur exécuterait à nouveau le même programme.
File d'attente de page gratuite, vol et récupération
La file d'attente de pages libres est une liste de cadres de page disponibles pour l'affectation. Empêcher cette file d'attente d'être vide minimise le calcul nécessaire pour réparer un défaut de page. Certains systèmes d'exploitation recherchent périodiquement des pages qui n'ont pas été référencées récemment, puis libèrent le cadre de page et l'ajoutent à la file d'attente de pages libres, un processus connu sous le nom de "vol de page". Certains systèmes d'exploitation prennent en charge la récupération de page ; si un programme commet un défaut de page en référençant une page qui a été volée, le système d'exploitation le détecte et restaure le cadre de la page sans avoir à relire le contenu dans la RAM.
Pré-nettoyage
Le système d'exploitation peut pré-nettoyer périodiquement les pages sales : réécrire les pages modifiées sur le disque même si elles peuvent être modifiées ultérieurement. Cela minimise la quantité de nettoyage nécessaire pour obtenir de nouveaux cadres de page au moment où un nouveau programme démarre ou un nouveau fichier de données est ouvert, et améliore la réactivité. (Les systèmes d'exploitation Unix utilisent périodiquement la synchronisation pour pré-nettoyer toutes les pages sales ; les systèmes d'exploitation Windows utilisent des threads « descripteur de page modifié ».)

Raclée

Une fois l'initialisation terminée, la plupart des programmes fonctionnent sur un petit nombre de pages de code et de données par rapport à la mémoire totale requise par le programme. Les pages les plus fréquemment consultées sont appelées l' ensemble de travail .

Lorsque l'ensemble de travail représente un petit pourcentage du nombre total de pages du système, les systèmes de mémoire virtuelle fonctionnent le plus efficacement et une quantité insignifiante de calcul est consacrée à la résolution des défauts de page. Au fur et à mesure que l'ensemble de travail augmente, la résolution des défauts de page reste gérable jusqu'à ce que la croissance atteigne un point critique. Ensuite, les défauts augmentent considérablement et le temps passé à les résoudre dépasse le temps consacré au calcul pour lequel le programme a été écrit. Cette condition est appelée raclée . Le thrashing se produit sur un programme qui fonctionne avec d'énormes structures de données, car son grand ensemble de travail provoque des erreurs de page continuelles qui ralentissent considérablement le système. La résolution des défauts de page peut nécessiter de libérer des pages qui devront bientôt être relues à partir du disque. « Thrashing » est également utilisé dans des contextes autres que les systèmes de mémoire virtuelle ; par exemple, pour décrire les problèmes de cache en informatique ou le syndrome de la fenêtre stupide en réseau.

Le pire des cas peut se produire sur les processeurs VAX . Un seul MOVL traversant une limite de page pourrait avoir un opérande source utilisant un mode d'adressage différé par déplacement, où le mot long contenant l'adresse d'opérande traverse une limite de page, et un opérande de destination utilisant un mode d'adressage différé par déplacement, où le mot long contenant l'adresse d'opérande croise une limite de page, et la source et la destination pourraient toutes deux traverser les limites de la page. Cette seule instruction fait référence à dix pages ; si tous ne sont pas en RAM, chacun provoquera un défaut de page. Au fur et à mesure que chaque panne se produit, le système d'exploitation doit passer par les routines étendues de gestion de la mémoire, provoquant peut-être plusieurs E/S, notamment l'écriture d'autres pages de processus sur le disque et la lecture de pages du processus actif à partir du disque. Si le système d'exploitation ne pouvait pas allouer dix pages à ce programme, alors la résolution du défaut de page éliminerait une autre page dont l'instruction a besoin, et tout redémarrage de l'instruction serait à nouveau défectueux.

Pour réduire la pagination excessive et résoudre les problèmes de thrashing, un utilisateur peut augmenter le nombre de pages disponibles par programme, soit en exécutant moins de programmes simultanément, soit en augmentant la quantité de RAM dans l'ordinateur.

Partage

En multi-programmation ou dans un environnement multi-utilisateurs , de nombreux utilisateurs peuvent exécuter le même programme, écrit de sorte que son code et ses données se trouvent dans des pages séparées. Pour minimiser l'utilisation de la RAM, tous les utilisateurs partagent une seule copie du programme. La table des pages de chaque processus est configurée de sorte que les pages qui adressent le code pointent vers la seule copie partagée, tandis que les pages qui adressent les données pointent vers différentes pages physiques pour chaque processus.

Différents programmes peuvent également utiliser les mêmes bibliothèques. Pour économiser de l'espace, une seule copie de la bibliothèque partagée est chargée dans la mémoire physique. Les programmes qui utilisent la même bibliothèque ont des adresses virtuelles qui correspondent aux mêmes pages (qui contiennent le code et les données de la bibliothèque). Lorsque les programmes souhaitent modifier le code de la bibliothèque, ils utilisent la copie sur écriture , de sorte que la mémoire n'est allouée qu'en cas de besoin.

La mémoire partagée est un moyen efficace de communication entre les programmes. Les programmes peuvent partager des pages en mémoire, puis écrire et lire pour échanger des données.

Implémentations

Atlas Ferranti

Le premier ordinateur à prendre en charge la pagination était le supercalculateur Atlas , développé conjointement par Ferranti , l' Université de Manchester et Plessey en 1963. La machine avait une mémoire associative ( adressable par le contenu ) avec une entrée pour chaque page de 512 mots. Le superviseur gérait les interruptions de non-équivalence et gérait le transfert des pages entre le noyau et le tambour afin de fournir un magasin à un niveau aux programmes.

Microsoft Windows

Windows 3.x et Windows 9x

La pagination est une fonctionnalité de Microsoft Windows depuis Windows 3.0 en 1990. Windows 3.x crée un fichier caché nommé 386SPART.PARou WIN386.SWPà utiliser comme fichier d'échange. Il se trouve généralement dans le répertoire racine , mais il peut apparaître ailleurs (typiquement dans le répertoire WINDOWS). Sa taille dépend de la quantité d'espace d'échange dont dispose le système (un paramètre sélectionné par l'utilisateur sous Panneau de configuration → Amélioré sous « Mémoire virtuelle »). Si l'utilisateur déplace ou supprime ce fichier, un écran bleu apparaîtra au prochain démarrage de Windows, avec le message d'erreur "Le fichier d'échange permanent est corrompu". L'utilisateur sera invité à choisir de supprimer ou non le fichier (qu'il existe ou non).

Windows 95 , Windows 98 et Windows Me utilisent un fichier similaire et les paramètres correspondants se trouvent sous Panneau de configuration → Système → onglet Performances → Mémoire virtuelle. Windows définit automatiquement la taille du fichier d'échange pour qu'il démarre à 1,5 fois la taille de la mémoire physique et étende jusqu'à 3 fois la mémoire physique si nécessaire. Si un utilisateur exécute des applications gourmandes en mémoire sur un système avec une faible mémoire physique, il est préférable de définir manuellement ces tailles sur une valeur supérieure à la valeur par défaut.

Windows NT

Le fichier utilisé pour la pagination dans la famille Windows NT est pagefile.sys. L'emplacement par défaut du fichier d'échange se trouve dans le répertoire racine de la partition sur laquelle Windows est installé. Windows peut être configuré pour utiliser l'espace libre sur tous les lecteurs disponibles pour les fichiers d'échange. Cependant, il est nécessaire que la partition de démarrage (c'est-à-dire le lecteur contenant le répertoire Windows) contienne un fichier d'échange si le système est configuré pour écrire des vidages du noyau ou de la mémoire complète après un écran bleu de la mort . Windows utilise le fichier d'échange comme stockage temporaire pour le vidage de la mémoire. Lorsque le système est redémarré, Windows copie l'image mémoire du fichier d'échange dans un fichier séparé et libère l'espace utilisé dans le fichier d'échange.

Fragmentation

Dans la configuration par défaut de Windows, le fichier d'échange est autorisé à s'étendre au-delà de son allocation initiale si nécessaire. Si cela se produit progressivement, il peut devenir fortement fragmenté, ce qui peut potentiellement entraîner des problèmes de performances. Le conseil commun donné pour éviter cela est de définir une seule taille de fichier de page "verrouillée" afin que Windows ne l'étende pas. Cependant, le fichier d'échange ne se développe que lorsqu'il est rempli, ce qui, dans sa configuration par défaut, représente 150 % de la quantité totale de mémoire physique. Ainsi, la demande totale de mémoire virtuelle sauvegardée sur fichier d'échange doit dépasser 250 % de la mémoire physique de l'ordinateur avant que le fichier d'échange ne s'étende.

La fragmentation du fichier d'échange qui se produit lorsqu'il se développe est temporaire. Dès que les régions étendues ne sont plus utilisées (au prochain redémarrage, sinon plus tôt), les allocations d'espace disque supplémentaires sont libérées et le fichier d'échange revient à son état d'origine.

Le verrouillage d'une taille de fichier d'échange peut être problématique si une application Windows demande plus de mémoire que la taille totale de la mémoire physique et du fichier d'échange, ce qui entraîne l'échec des demandes d'allocation de mémoire pouvant entraîner l'échec des applications et des processus système. De plus, le fichier d'échange est rarement lu ou écrit dans un ordre séquentiel, de sorte que l'avantage en termes de performances d'avoir un fichier d'échange complètement séquentiel est minime. Cependant, un fichier d'échange volumineux permet généralement l'utilisation d'applications gourmandes en mémoire, sans aucune pénalité en plus d'utiliser plus d'espace disque. Bien qu'un fichier d'échange fragmenté ne soit pas un problème en soi, la fragmentation d'un fichier d'échange de taille variable créera au fil du temps plusieurs blocs fragmentés sur le lecteur, provoquant la fragmentation d'autres fichiers. Pour cette raison, un fichier d'échange contigu de taille fixe est préférable, à condition que la taille allouée soit suffisamment grande pour répondre aux besoins de toutes les applications.

L'espace disque requis peut être facilement alloué sur des systèmes avec des spécifications plus récentes (c'est-à-dire un système avec 3 Go de mémoire ayant un fichier d'échange de taille fixe de 6 Go sur un lecteur de disque de 750 Go, ou un système avec 6 Go de mémoire et 16 Go de fichier d'échange de taille fixe et 2 To d'espace disque). Dans les deux exemples, le système utilise environ 0,8 % de l'espace disque avec le fichier d'échange pré-étendu à son maximum.

La défragmentation du fichier d' échange est également parfois recommandée pour améliorer les performances lorsqu'un système Windows utilise de manière chronique beaucoup plus de mémoire que sa mémoire physique totale. Cette vue ignore le fait que, mis à part les résultats temporaires de l'expansion, le fichier d'échange ne se fragmente pas au fil du temps. En général, les problèmes de performances liés à l'accès aux fichiers d'échange sont traités beaucoup plus efficacement en ajoutant plus de mémoire physique.

Systèmes Unix et de type Unix

Les systèmes Unix et d'autres systèmes d' exploitation de type Unix utilisent le terme « swap » pour décrire à la fois l'acte de déplacer des pages de mémoire entre la RAM et le disque et la région d'un disque sur laquelle les pages sont stockées. Dans certains de ces systèmes, il est courant de dédier une partition entière d'un disque dur à l'échange. Ces partitions sont appelées partitions d'échange . De nombreux systèmes ont un disque dur entier dédié à l'échange, séparé du ou des lecteurs de données, ne contenant qu'une partition d'échange. Un disque dur dédié au swap est appelé "swap drive" ou "scratch drive" ou encore " scratch disk ". Certains de ces systèmes ne prennent en charge que l'échange vers une partition d'échange ; d'autres prennent également en charge l'échange de fichiers.

Linux

Le noyau Linux prend en charge un nombre pratiquement illimité de backends d'échange (périphériques ou fichiers), et prend également en charge l'attribution de priorités de backend. Lorsque le noyau permute les pages de la mémoire physique, il utilise le backend de la plus haute priorité avec l'espace libre disponible. Si plusieurs backends d'échange se voient attribuer la même priorité, ils sont utilisés de manière circulaire (ce qui est quelque peu similaire aux dispositions de stockage RAID 0 ), offrant des performances améliorées tant que les périphériques sous-jacents peuvent être efficacement accessibles en parallèle.

Échanger des fichiers et des partitions

Du point de vue de l'utilisateur final, les fichiers d'échange dans les versions 2.6.x et ultérieures du noyau Linux sont pratiquement aussi rapides que les partitions d'échange ; la limitation est que les fichiers d'échange doivent être alloués de manière contiguë sur leurs systèmes de fichiers sous-jacents. Pour augmenter les performances des fichiers d'échange, le noyau conserve une carte de l'endroit où ils sont placés sur les périphériques sous-jacents et y accède directement, contournant ainsi le cache et évitant la surcharge du système de fichiers. Quoi qu'il en soit, Red Hat recommande d'utiliser des partitions d'échange. Lorsque vous résidez sur des disques durs, qui sont des périphériques à support magnétique rotatif, l'un des avantages de l'utilisation de partitions d'échange est la possibilité de les placer sur des zones de disque dur contiguës qui offrent un débit de données plus élevé ou un temps de recherche plus rapide. Cependant, la flexibilité administrative des fichiers d'échange peut l'emporter sur certains avantages des partitions d'échange. Par exemple, un fichier d'échange peut être placé sur n'importe quel système de fichiers monté, peut être défini sur n'importe quelle taille souhaitée et peut être ajouté ou modifié selon les besoins. Les partitions d'échange ne sont pas aussi flexibles ; ils ne peuvent pas être agrandis sans utiliser des outils de partitionnement ou de gestion de volume , qui introduisent diverses complexités et des temps d'arrêt potentiels.

Swappiness

Swappiness est un paramètre du noyau Linux qui contrôle le poids relatif accordé à l' échange de la mémoire d'exécution , par opposition à la suppression de pages du cache de pages système , chaque fois qu'une demande d'allocation de mémoire ne peut pas être satisfaite à partir de la mémoire libre. La permutation peut être définie sur des valeurs comprises entre 0 et 200 (inclus). Une valeur faible amène le noyau à préférer expulser les pages du cache de pages tandis qu'une valeur plus élevée amène le noyau à préférer permuter les pages mémoire "froides". La valeur par défaut est 60; le définir plus haut peut entraîner une latence élevée si les pages froides doivent être réintroduites (lors de l'interaction avec un programme qui était inactif par exemple), tandis que le définir plus bas (même 0) peut entraîner une latence élevée lorsque les fichiers qui ont été expulsés du le cache doit être lu à nouveau, mais rendra les programmes interactifs plus réactifs car ils seront moins susceptibles d'avoir besoin de retourner les pages froides. L'échange peut également ralentir davantage les disques durs car il implique de nombreuses écritures aléatoires, tandis que les disques SSD n'ont pas ce problème. Certes, les valeurs par défaut fonctionnent bien dans la plupart des charges de travail, mais les ordinateurs de bureau et les systèmes interactifs pour toute tâche attendue peuvent vouloir réduire le paramètre tandis que le traitement par lots et les systèmes moins interactifs peuvent vouloir l'augmenter.

Échanger la mort

Lorsque la mémoire système est très insuffisante pour les tâches en cours et qu'une grande partie de l'activité mémoire passe par un échange lent, le système peut devenir pratiquement incapable d'exécuter une tâche, même si le processeur est inactif. Lorsque chaque processus attend le swap, le système est considéré comme étant en mode swap death .

La mort du swap peut se produire en raison d'un surengagement de mémoire mal configuré .

La description originale du problème « swapping à la mort » se rapporte au serveur X . Si le code ou les données utilisées par le serveur X pour répondre à une frappe ne se trouvent pas dans la mémoire principale, alors si l'utilisateur entre une frappe, le serveur prendra un ou plusieurs défauts de page, exigeant que ces pages soient lues à partir de l'échange avant que la frappe puisse être traitées, ce qui ralentit la réponse. Si ces pages ne restent pas en mémoire, elles devront être à nouveau mises en défaut pour gérer la prochaine frappe, rendant le système pratiquement insensible même s'il exécute normalement d'autres tâches normalement.

macOS

macOS utilise plusieurs fichiers d'échange. L'installation par défaut (et recommandée par Apple) les place sur la partition racine, bien qu'il soit possible de les placer à la place sur une partition ou un périphérique séparé.

AmigaOS 4

AmigaOS 4.0 a introduit un nouveau système d'allocation de RAM et de défragmentation de la mémoire physique. Il utilise toujours un espace d'adressage partagé plat qui ne peut pas être défragmenté. Il est basé sur la méthode d'allocation des dalles et la mémoire de pagination qui permet l'échange. La pagination a été implémentée dans AmigaOS 4.1 mais peut bloquer le système si toute la mémoire physique est utilisée. La mémoire d'échange peut être activée et désactivée à tout moment, permettant à l'utilisateur de choisir d'utiliser uniquement la RAM physique.

Performance

La mémoire de sauvegarde d'un système d'exploitation de mémoire virtuelle est généralement plus lente de plusieurs ordres de grandeur que la RAM . De plus, l'utilisation de périphériques de stockage mécaniques introduit un délai de plusieurs millisecondes pour un disque dur. Par conséquent, il est souhaitable de réduire ou d'éliminer l'échange, lorsque cela est possible. Certains systèmes d'exploitation proposent des paramètres pour influencer les décisions du noyau.

  • Linux propose le paramètre, qui modifie l'équilibre entre l'échange de mémoire d'exécution, par opposition à la suppression de pages du cache de pages système ./proc/sys/vm/swappiness
  • Windows 2000, XP et Vista offrent le DisablePagingExecutiveparamètre de registre, qui contrôle si le code et les données en mode noyau peuvent être éligibles pour la pagination.
  • Les ordinateurs centraux utilisaient fréquemment des lecteurs de disque ou des tambours tête par piste pour le stockage de pages et d'échanges afin d'éliminer le temps de recherche, et plusieurs technologies pour envoyer plusieurs demandes simultanées au même périphérique afin de réduire la latence de rotation .
  • La mémoire flash a un nombre fini de cycles d'effacement-écriture (voir les limitations de la mémoire flash ), et la plus petite quantité de données pouvant être effacées en une fois peut être très importante (128 Ko pour un SSD Intel X25-M ), coïncidant rarement avec taille de la page. Par conséquent, la mémoire flash peut s'user rapidement si elle est utilisée comme espace d'échange dans des conditions de mémoire restreinte. Du côté attrayant, la mémoire flash est pratiquement sans délai par rapport aux disques durs et n'est pas volatile comme les puces RAM. Des programmes comme ReadyBoost et Intel Turbo Memory sont conçus pour exploiter ces caractéristiques.

De nombreux systèmes d' exploitation de type Unix (par exemple AIX , Linux et Solaris ) permettent d'utiliser plusieurs périphériques de stockage pour l'espace d'échange en parallèle, afin d'augmenter les performances.

Changer la taille de l'espace

Dans certains systèmes d'exploitation de mémoire virtuelle plus anciens, l'espace dans le magasin de sauvegarde d'échange est réservé lorsque les programmes allouent de la mémoire pour les données d'exécution. Les fournisseurs de systèmes d'exploitation publient généralement des directives sur la quantité d'espace de swap qui doit être allouée.

Limites d'adressage sur le matériel 32 bits

La pagination est une façon de permettre à la taille des adresses utilisées par un processus, qui est « l'espace d'adressage virtuel » ou « l'espace d'adressage logique » du processus, d'être différente de la quantité de mémoire principale réellement installée sur un ordinateur particulier, qui est l'espace d'adressage physique.

Mémoire principale plus petite que la mémoire virtuelle

Dans la plupart des systèmes, la taille de l'espace d'adressage virtuel d'un processus est bien supérieure à la mémoire principale disponible. Par exemple:

  • Le bus d'adresses qui connecte le CPU à la mémoire principale peut être limité. Les adresses internes 32 bits du processeur i386SX peuvent adresser 4 Go, mais il n'a que 24 broches connectées au bus d'adresse, limitant la mémoire physique installée à 16 Mo. Il peut y avoir d'autres restrictions matérielles sur la quantité maximale de RAM pouvant être installée.
  • La mémoire maximale peut ne pas être installée en raison du coût, parce que la configuration standard du modèle l'omet, ou parce que l'acheteur ne pense pas que ce serait avantageux.
  • Parfois, toutes les adresses internes ne peuvent de toute façon pas être utilisées pour la mémoire, car l'architecture matérielle peut réserver de grandes régions pour les E/S ou d'autres fonctionnalités.

Mémoire principale de la même taille que la mémoire virtuelle

Un ordinateur avec un véritable adressage à n bits peut avoir 2 n unités de RAM adressables installées. Un exemple est un processeur x86 32 bits avec 4  Go et sans extension d'adresse physique (PAE). Dans ce cas, le processeur est capable d'adresser toute la RAM installée et pas plus.

Cependant, même dans ce cas, la pagination peut être utilisée pour créer une mémoire virtuelle de plus de 4 Go. Par exemple, de nombreux programmes peuvent s'exécuter simultanément. Ensemble, ils peuvent nécessiter plus de 4 Go, mais ils ne devront pas tous être en RAM à la fois. Un système de pagination prend des décisions efficaces sur la mémoire à reléguer au stockage secondaire, conduisant à la meilleure utilisation de la RAM installée.

Bien que le processeur de cet exemple ne puisse pas gérer la RAM au-delà de 4 Go, le système d'exploitation peut fournir des services à des programmes qui envisagent une mémoire plus importante, tels que des fichiers pouvant croître au-delà de la limite de RAM installée. Le système d'exploitation permet à un programme de manipuler arbitrairement les données du fichier, en utilisant la pagination pour amener des parties du fichier dans la RAM si nécessaire.

Mémoire principale plus grande que l'espace d'adressage virtuel

Quelques ordinateurs ont une mémoire principale plus grande que l'espace d'adressage virtuel d'un processus, comme le Magic-1, certaines machines PDP-11 et certains systèmes utilisant des processeurs x86 32 bits avec Physical Address Extension . Cela annule un avantage significatif de la pagination, car un seul processus ne peut pas utiliser plus de mémoire principale que la quantité de son espace d'adressage virtuel. De tels systèmes utilisent souvent des techniques de pagination pour obtenir des avantages secondaires :

  • La "mémoire supplémentaire" peut être utilisée dans le cache de la page pour mettre en cache les fichiers et métadonnées fréquemment utilisés, tels que les informations de répertoire, à partir du stockage secondaire.
  • Si le processeur et le système d'exploitation prennent en charge plusieurs espaces d'adressage virtuels, la "mémoire supplémentaire" peut être utilisée pour exécuter plus de processus. La pagination permet au total cumulé d'espaces d'adressage virtuels de dépasser la mémoire principale physique.
  • Un processus peut stocker des données dans des fichiers mappés en mémoire sur des systèmes de fichiers sauvegardés en mémoire, tels que le système de fichiers tmpfs ou des systèmes de fichiers sur un lecteur RAM , et mapper des fichiers dans et hors de l'espace d'adressage selon les besoins.
  • Un ensemble de processus peut toujours dépendre des fonctionnalités de sécurité améliorées que l'isolation basée sur les pages peut apporter à un environnement multitâche.

La taille du total cumulé des espaces d'adressage virtuels est toujours limitée par la quantité de stockage secondaire disponible.

Voir également

Remarques

Les références

Liens externes