De tableau de page

Un de tableau de page est la structure de données employée par un système de la mémoire virtuelle virtuelleee dans un du système d'exploitation de l'ordinateur pour stocker la cartographie entre les adresses virtuelles et les adresses virtuelles physiques des adresses sont ceux uniques au de accès de processus. Les adresses physiques sont ceux uniques à l'unité centrale de traitement , c.

Rôle de mémoire dans les systèmes informatiques

Un programme courant, que ce soit un web browser sur un PC ou une machine de Turing dans un papier scolaire, est un processus pour transférer des données entre le monde physique et une mémoire d'ordinateur, et puis transformer les données dans cette mémoire. (Dans de l'informatique, un programme est un ensemble d'instructions, et un processus est le processus d'un ordinateur après ces instructions.) La mémoire peut être physiquement organisée de plusieurs manières, par exemple de longs domaines de bande paerforée et magnétiques sur un plateau de disque, ou des rangées de condensateurs minuscules sur une puce. Pendant les années 50, comme ordinateurs sont devenus plus complexes, ils ont été reliés à beaucoup de genres de mémoire. Contrôlant que les mémoires stockaient quel peu des données est devenu compliqué, particulièrement quand les processus multiples fonctionnaient sur la même machine en même temps.

Une simplification utile était le développement de la mémoire virtuelle virtuelleee. Un programme, le du système d'exploitation, maintient la localisation physique de chaque morceau de données, et déplace des données entre les localisations physiques pour améliorer l'exécution ou pour assurer la fiabilité. Pour chaque " ; utilisateur-level" ; le programme, le du système d'exploitation fabrique un espace simple et simplifié de mémoire virtuelle virtuelleee. Les processus courant la mémoire virtuelle virtuelleee intérieure ne doivent pas déplacer des données entre les dispositifs physiques, et ne doivent pas assigner et réapproprier des parties de la quantité fixe de mémoire centrale entre elles. Ils sont libres pour employer autant de leur mémoire virtuelle virtuelleee selon les besoins sans référence à d'autres processus.

Utilisation de mémoire centrale

Un programme se compose de deux choses (de manière simpliste) :
" ; " des textes de ; , c., les instructions qu'un programme emploie pour courir
données de , pour le " ; dur-wired" ; l'information dont un programme a besoin, comme les constantes de corde de par exemple, les cordes qui sont dans un menu dans un programme de GUI serait stockée comme constantes de corde, et pour l'autre information qui peut être créée et détruite pendant qu'un programme fonctionne. Quand un programme fonctionne, du système d'exploitation les cartes le texte et les données du programme dans l'espace d'adressage virtuel, et exécute alors l'instruction de programme dans la mémoire (voir l'architecture de Von Neumann de ). Cependant, quand le programme fonctionne, il peut devoir stocker des données provisoires, ou d'une manière primordiale, quand il appelle une autre fonction (un bloc de base de de fonctionnalité), il devra sauver l'état de la fonction courante. Pour beaucoup de buts, ces données sont stockées sur une pile , depuis quand une fonction finit s'exécuter, les données provisoires stockées dans cette fonction ne sont nécessaires plus - tellement naturellement, la meilleure forme de la structure de données à employer est une pile, puisque nous simplement " ; pop" ; outre de ces données provisoires. Cependant, ceci signifie que la pile se développe dynamiquement au-dessus de la vie d'un programme. Le du système d'exploitation a souvent fractionné le texte, les données, et les sections de pile dans des régions séparées, appelées les segments de , pour la sécurité et la fiabilité (ainsi si la pile se développe trop grande, essayant de recouvrir le texte ou les segments de données, ceci peut plus sûrement être détecté).

Non toute l'information est stockée sur la pile. Dire que par exemple nous avons un programme d'unité de traitement de texte. Au début, le bloc de mémoire qui peut être assigné pour contenir le texte du document peut être petit, mais pendant que l'utilisateur entre dans plus de texte, les besoins de ce bloc pour se développer. Using la pile à cette fin ne travaille pas, puisque la pile peut seulement adapter aux blocs à taille fixe de mémoire. Ce qui est fait est que le segment de données du programme est rendu plus grand (voir par exemple, l'appel système de de Sbrk ), de sorte que le bloc de mémoire pour votre document puisse s'adapter, et que pendant que le besoin de plus de mémoire se fait sentir, le segment et le bloc se développe (voir par exemple, Realloc ). Ainsi le segment de données se développe et se rétrécit dynamiquement également.

La mémoire centrale, cependant, est finie. Ceci signifie qu'il y a seulement un nombre fini d'endroits de mémoire que nous pouvons employer pour stocker des données. Dans beaucoup d'architectures informatiques modernes, ces endroits sont indexés d'une mode linéaire, c., il y a un certain sens de la position 0 au début du bloc de mémoire, avec chaque position suivante grimpant linéairement jusqu'à la fin de la mémoire. Nous appelons un " ; position" ; une adresse de . Ainsi, si nous avons 16M (méga-octets ) de la mémoire centrale, nous pouvons accéder aux adresses 0 à travers à 16777215. En parlant d'une mode technique au sujet de mémoire, nous employons souvent le hexadécimal de , c., les nombres base-16 pour décrire l'adresse, ainsi (using la notation de C-modèle de la préfixation avec 0x pour dénoter une adresse hexadécimale) dans l'exemple précédent, nous aurions les adresses 0x0 à travers à 0xFFFFFF.

Des architectures informatiques sont souvent décrites comme " ; 32-bit" ; , " ; 64-bit" ; , et ainsi de suite. Ceci signifie réellement que leurs sont 32 ou 64 lignes d'adresse (par exemple, A0, A1. à A31) du processeur. Par conséquent la mémoire maximum qu'un système de 32 bits peut adresser/accès est 2 le ^ 32 = 4G. Ce nombre (32/64) est la longueur de mot de . Ce le moyen, cependant, avec lequel la quantité de mémoire physique un ordinateur peut fonctionner est limité par la longueur de mot. De sorte que le moyen dans un ordinateur à 32 bits la gamme de l'adresse accessible commence de 0 à 4294967295 (2^ {32} - 1), nous donnant 4G (gigaoctets de la mémoire à travailler avec. Ce fait deviendra plus tardif important.

Pourquoi adressage virtuel

Quand un programme fonctionne, il doit se servir d'une certaine forme de mémoire afin de stocker l'information. Un programme peut stocker l'information telle qu'une variable numérique utilisée dans un calcul, ou des données telles que les informations client dans une application de comptabilité. Beaucoup d'architectures informatiques structurent la mémoire de la façon suivante :
mémoire centrale de , qui est volatile (signification que l'information est perdue quand l'ordinateur est arrêté), mais relativement rapide, tel que le RAM
mémoire secondaire de , qui est non-volatile, mais relativement lent ; comme un disque dur . L'adressage virtuel fournit une séparation entre la mémoire physique et les adresses qu'un programme accède pour charger ou pour stocker des données. Une des utilisations communes de cette séparation est de faciliter la pagination au disque, qui permet un à du système d'exploitation de faire l'utilisation efficace de la mémoire centrale de , par des instructions et des données inutilisées en mouvement dans la mémoire secondaire et puis réappropriation de de la mémoire physique à un autre processus. Quand le processus d'original met en référence l'adresse virtuelle où il s'attend ses instructions ou données d'être, le que du système d'exploitation réapproprie la mémoire centrale de physique (devant probablement déplacer une certaine mémoire centrale de additionnel à la mémoire secondaire de ), alors déplace ces instructions et données de nouveau à cette mémoire centrale de . Si le du système d'exploitation entre dans une situation où il déplace constamment la mémoire centrale de à la mémoire secondaire de (et arrière) afin de soutenir l'ensemble d'applications, le système exécutera mal. Ceci est connu comme battant .

L'adressage virtuel fournit beaucoup d'autres indemnités. Un des avantages les plus importants de l'adressage virtuel est que chaque processus peut écrire seulement à la mémoire physique pour laquelle le du système d'exploitation a créé les entrées de tableau de page. Ceci empêche un processus de recouvrir les données d'un autre processus. D'autres avantages importants incluent fournir le du système d'exploitation la capacité de détecter des références aux adresses inadmissibles (par exemple les adresses sans la mémoire physique fondamentale, écrit sur les adresses qui sont tracées à la mémoire inaltérable du , etc.

La combinaison de l'adressage virtuel et deux formes de du mémoire auxiliaire (comme décrit ci-dessus) désigné souvent sous le nom de la mémoire virtuelle virtuelleee , bien que ce soit légèrement d'un terme mal approprié.

Adressage virtuel

Dire que nous avons une architecture informatique où la longueur de mot est 32 bits. Ceci signifie que nous pouvons former des adresses de 0x00000000 à 0xFFFFFFFF - enjambement de 4GB. Forme de ces adresses ce qui désigné sous le nom de l'espace d'adressage virtuel de . Ces adresses n'ont aucune signification physique - si nous avons seulement 16MB de mémoire, toutes les adresses au-dessus de 0x01000000 seraient inadmissibles. Cependant, comme mentionné, presque tous les programmes n'emploient pas tout le 4GB de mémoire quand un programme fonctionne, mais seulement des parties de lui à la fois. Par exemple, le texte, les données, et les segments de pile peuvent seulement être employés et ensemble seulement prendre 1 méga-octet au total au cours du temps où il fonctionne.

Les morceaux comme mentionnés ci-dessus s'appellent les noms spéciaux. Cet espace d'adressage 4GB virtuel est fractionné dans les morceaux, généralement 4K dans la taille, appelée les pages de . La mémoire physique est également fractionnée dans les morceaux, aussi généralement 4K dans la taille, appelée les armatures de *. Le segment de texte d'un programme pourrait commencer à l'adresse virtuelle 0x00000004 - le numéro de page 0x0, et compenser 0x4, mais en réalité, ceci peut correspondre à l'adresse physique 0xff0e0004 - le nombre d'armature 0xff0e0, et a compensé 0x4. Ce que le système mémoire virtuel fait est des adresses virtuelles de converti dans des adresses physiques, essentiellement, des tracés entre les pages et des armatures. Le de tableau de page est employé à cette fin.

Beaucoup d'architectures ont également le soutien direct de matériel de la mémoire virtuelle virtuelleee, fournissant ce qui est connu comme amortisseur lookaside de traduction de (TLB), qui est rempli de tracés de page-armature au commencement, et au lieu de avoir le système mémoire virtuel entièrement dans le logiciel, quand le matériel recherche une adresse de mémoire et fait la traduction de page-armature, la cartographie de page-armature d'adresse virtuelle est cachée dans le TLB, qui nous gagne une augmentation d'exécution.

Cependant, le TLB peut seulement tenir un nombre fixe de tracés de page-armature. C'est le travail du système mémoire virtuel de prolonger ceci dans le logiciel, et de tenir les tracés supplémentaires de page-armature. Le système mémoire virtuel fait ainsi au moyen d'un de tableau de page.
note d'utilisation de

: quelques textes ne font pas une distinction entre un " ; chunk" ; c'est dans l'examen médical ou dans la mémoire virtuelle virtuelleee, using la page de de limite pour tous les deux, ou les limites sont l'armature de page de d'une armature physique ou une page de pour une page virtuelle. D'autres textes peuvent employer différents termes.

----

Rôle du de tableau de page

Dire qu'un programme fonctionne et il essaye à la mémoire d'accès dans l'adresse virtuelle 0xd09fbabe. L'adresse virtuelle est cassée vers le haut dans deux : 0xd09fb est le numéro de page de et 0xabe est le excentré, dans la page 0xd09fb.

Avec le soutien de matériel de la mémoire virtuelle virtuelleee, l'adresse est recherchée dans le TLB. Le TLB est spécifiquement conçu pour exécuter cette consultation en parallèle, ainsi ce processus est extrêmement rapide. S'il y a une allumette pour la page 0xd09fb dans le TLB (un TLB a frappé ), le nombre d'armature physique est recherché, l'excentrage remplacé, et l'accès mémoire peut continuer. Cependant, s'il y a aucune allumette de (appelée un coup manqué de TLB), le deuxième port-de-appellent est le de tableau de page.

Quand le matériel ne peut pas trouver une armature physique pour une page virtuelle, il produira d'une interruption de processeur appelée un défaut de page . Les architectures de matériel offrent la chance pour qu'un traiteur d'interruption soit installé par le du système d'exploitation pour traiter de tels défauts de page. Le traiteur peut rechercher la reproduction d'adresses dans le de tableau de page, et peut voir si une cartographie existe dans le de tableau de page. Si on existe, on lui écrit de nouveau au TLB, comme mémoire d'accès de matériel par le TLB dans un système mémoire virtuel, et l'instruction de dislocation est remise en marche, avec la conséquence qui le matériel regardera dans le TLB encore, trouvent la cartographie, et la traduction réussira.

Cependant, la consultation de tableau de page peut ne pas être réussie pour deux raisons :
il n'y a aucune traduction disponible pour cette adresse - l'accès mémoire à cette adresse virtuelle est ainsi mauvais ou inadmissible, ou
la page n'est pas résidente dans la mémoire physique (elle est expulsée à la mémoire secondaire de ). Dans le premier cas, l'accès mémoire est inadmissible, et la nécessité du système d'exploitation pour prendre une certaine mesure pour traiter le problème. Sur les logiciels d'exploitation modernes, il enverra un défaut de segmentation de au programme offensant. Dans le deuxième cas, la page est normalement stockée ailleurs, comme dessus un disque. Pour traiter ce cas, la page doit être prise à partir du disque et mettre dans la mémoire physique. Quand la mémoire physique n'est pas pleine, c'est tout à fait simple, simplement les besoins un d'écrire la page dans la mémoire physique, modifient l'entrée dans le de tableau de page pour dire qu'il est présent dans la mémoire physique (voir la prochaine section), écrivent la cartographie dans le TLB et remettent en marche l'instruction.

Cependant, quand le de mémoire physique est complètement, et il n'y a aucune armature libre disponible, pages dans la mémoire physique peut devoir être permuté avec la page qui doit être écrite à la mémoire physique. Les besoins de tableau de page d'être mis à jour pour marquer que les pages qui étaient précédemment dans la mémoire physique ne sont plus ainsi, et pour marquer que la page qui était sur le disque n'est plus tellement également (et naturellement écrire la cartographie dans le TLB et remettre en marche l'instruction). Ce processus de permuter des pages entre la mémoire physique et le disque est connu parfois comme, évidemment, le de permutation (bien que le terme est parfois employé pour décrire permuter des processus complets). Ce processus cependant est extrêmement lent par rapport à l'accès mémoire par l'intermédiaire du TLB ou même du de tableau de page, qui se situe dans la mémoire physique. Quelle page permuter est le sujet des algorithmes de remplacement de page .

Données de tableau de page

Les systèmes de tableau de page les plus simples maintiennent souvent une table d'armature et un de tableau de page.

La table d'armature, dans le système le plus fondamental, tient l'information au sujet dont des armatures sont tracées. Dans des systèmes plus avancés, la table d'armature peut également tenir l'information à laquelle l'espace d'adressage une page appartient, ou l'information de statistiques, ou toute autre information de fond.

Les prises de tableau de page la cartographie entre une adresse virtuelle d'une page et l'adresse d'une armature physique. Il y a également des informations auxiliaires sur la page telle qu'un peu du présent de , un sale ou le peu de modifié par , l'espace d'adressage ou l'information d'identificateur de processus, notamment. Ceci ne pourrait pas être les informations exactes puisque n'importe qui peut apporter des modifications à elles. Le stockage secondaire, tel qu'un disque dur, peut être employé pour augmenter la mémoire physique. Des pages peuvent être permutées dans et hors de la mémoire physique et du disque. Le peu actuel peut indiquer quelles pages sont actuellement présentes dans la mémoire physique ou sont dans le disque, et peut indiquer comment traiter ces différentes pages, IE., si charger une page à partir du disque et permuter une autre page dans la mémoire physique dehors, etc.

Le peu sale nous permet une optimisation d'exécution. Dire que nous avons une page sur le disque que nous permutons dedans à la mémoire physique. Nous pouvons ou écrire à cette page, ou nous pouvons juste lire de elle. Si nous lisons juste de elle, et nous devons remplacer cette page par des autres, nous n'avons pas besoin d'écrire cette page de nouveau au disque puisque la page n'a pas changé (si nous voulons recharger la page, nous pouvons juste faire ainsi à partir du disque encore). Cependant, si nous faisions écrivent à la page, nous soulèverions le drapeau sale, et ceci signifierait que nous devrions écrire la page en arrière ainsi si nous rechargeons la page, nous récupérons l'information correcte.

L'espace d'adressage ou l'information d'identificateur de processus est nécessaire ainsi le système de gestion de la mémoire virtuelle connaît quelles pages à s'associer à quel processus. Puisque la carte de mémoire virtuelle virtuelleee est mêmes pour chaque processus, entre deux processus, deux adresses virtuelles identiques pourraient être employés pour différents buts, ainsi les adresses doivent être distinguées de façon ou d'autre en l'identifiant avec le processus dans le de tableau de page. Ceci peut être fait en employant une marque d'espace d'adressage unique, ou en employant des IDs de processus.

Types de tableau de page

Il y a plusieurs différents types de tables de pages, celle sont plus adapté pour différentes conditions. Essentiellement, un magasin de tableau de page de nécessité de squelette ambulant l'adresse virtuelle, l'adresse physique qui est " ; under" ; cette adresse virtuelle, et probablement de l'information d'espace d'adressage.

De tableau de page inversé

Le de tableau de page inversé par (IPT) combine une table de tableau de page et d'armature dans une structure de données. À son noyau est une table à taille fixe avec le nombre de rangées s'associant à chaque armature dans la mémoire. S'il y avait 4000 armatures, le de tableau de page inversé a 4000 rangées. Pour chaque rangée il y a une entrée pour le numéro de page virtuel (VPN), le numéro de page physique (pas l'adresse physique), quelques autres données et des moyens de créer une chaîne de collision, car nous verrons plus tard.

Pour rechercher par toutes les entrées de la structure du noyau IPT est pénible, ainsi nous employons une table de brouillage traçant des adresses virtuelles (et l'information d'adresse space/PID si besoin est) à un index dans l'IPT - c'est où la chaîne de collision est employée. Cette table de brouillage est connue comme table d'ancre de gâchis de . La fonction de brouillage n'est pas généralement optimisée pour l'assurance - la vitesse crue est plus souhaitable. Naturellement, les tables de brouillage éprouvent des collisions. En raison de cette fonction de brouillage choisie, nous pouvons éprouver beaucoup de collisions dans l'utilisation, ainsi pour chaque entrée dans la table le VPN est donné pour vérifier si c'est l'entrée recherchée ou une collision.

En recherchant une cartographie, la table d'ancre de gâchis est employée, et si aucune entrée n'existe, un défaut de page se produit, autrement, l'entrée est trouvé et, selon l'architecture, est placé dans le TLB encore et la référence de mémoire est remise en marche, ou la chaîne de collision est suivie jusqu'à ce qu'elle ait été épuisée et un défaut de page se produit.

Une adresse virtuelle dans ce schéma a pu être coupée en deux, la première moitié étant un numéro de page virtuel et la deuxième moitié étant l'excentrage en cette page.

De tableau de page à multiniveaux

Les subsistances de tableau de page inversées qu'une liste des tracés a installées de toutes les armatures dans la mémoire physique. Cependant, ceci a pu être tout à fait inutile. Au lieu de faire ainsi, nous pourrions créer une structure de tableau de page qui contient des tracés pour les pages virtuelles. Elle est faite en gardant plusieurs tables de pages qui couvrent un certain bloc de mémoire virtuelle virtuelleee. Par exemple, nous pouvons créer de plus petites pages 1024 de l'entrée 4K qui couvrent 4M de la mémoire virtuelle virtuelleee.

C'est utile puisque souvent les parties le plus élevé et les parties les plus bottom-most de la mémoire virtuelle virtuelleee sont employées en courant un processus - le dessus est employé souvent pour le texte et les segments de données tandis que le fond pour la pile, avec de la mémoire libre dans l'intervalle. Le de tableau de page à multiniveaux peut garder quelques unes des tables de pages plus petites pour couvrir les parties juste supérieures et inférieures de la mémoire et pour créer des neufs si seulement strictement nécessaire.

Maintenant, chacune de ces plus petites tables de pages est liée ensemble par un de tableau de page principal, effectivement créant une structure de données d'arbre. Il faut non seulement deux niveaux, mais probablement multiple ceux.

Une adresse virtuelle dans ce schéma a pu être coupée en trois, index dans la racine de tableau de page, index dans la table de secondaire-page, et excentrage en cette page.

De tableau de page virtualisé

On lui a mentionné que créant une structure de tableau de page qui a contenu les tracés pour chaque page virtuelle dans l'espace d'adressage virtuel pourraient finir être vers le haut inutiles. Mais, nous pouvons venir à bout les soucis excessifs de l'espace en mettant le de tableau de page dans la mémoire virtuelle virtuelleee, et en laissant le système mémoire virtuel contrôler la mémoire pour le de tableau de page.

Cependant, une partie de cette structure de tableau de page linéaire doit toujours rester résidente dans la mémoire physique, afin d'empêcher contre les défauts de page circulaires, qui recherchent des parties fondamentales du de tableau de page qui n'est pas présent dans le de tableau de page, qui n'est pas présent dans le de tableau de page, etc.

< ! -- a besoin d'une meilleure/plus détaillée explication -->

.

Random links:William Ross Ashby | Port Harcourt | Forêts tropicales d'îles Salomon | Hambourg, comté d'Aiken, la Caroline du Sud | Carburant cryogénique | De_tabla_de_páginas