Quelle est la différence entre la taille de la page et la taille de lentrée de la table de pages?

Meilleure réponse

Eh bien, la taille de la page correspond à lespace nécessaire pour 1 page. (Cest assez simple )

Pour avoir juste un peu de contexte ici, un tableau de page est un tableau de conversions dadresses virtuelles en adresses physiques que le système dexploitation utilise pour artificiellement augmenter la quantité totale de mémoire principale disponible dans un système. La mémoire physique correspond aux bits réels situés aux adresses en mémoire (DRAM), la mémoire virtuelle est lendroit où le système dexploitation se trouve aux processus pour leur dire où il se trouve afin de faire les choses comme autoriser 2 ^ 64 bits despace dadressage malgré le fait que 2 ^ 34 bits est le plus de RAM normalement utilisé. (2 ^ 32 bits équivaut à 4 gigaoctets, donc 2 ^ 34 équivaut à 16 Go.)

À présent, la plupart des tailles de tableau de page par défaut sont de 4096 Ko pour chaque processus, mais le nombre dentrées de table de pages peut augmenter si le processus a besoin de plus despace de processus. Les tailles de table de page peuvent également être initialement allouées de plus petites ou plus grandes quantités ou de la mémoire, cest juste que 4 Ko est généralement la meilleure taille pour la plupart des processus. Ainsi, la taille dentrée de la table de page aurait exactement la bonne quantité despace pour contenir nimporte quelle adresse dans un espace dadressage de 32 bits.

Prenons un exemple ici: Prenons un système avec un espace dadressage logique de 32 bits. Si la page dans un tel système est de 4 Ko (212), alors un tableau de pages peut contenir jusquà 1 million dentrées (232/212). En supposant que chaque entrée se compose de 4 octets , chaque processus peut nécessiter jusquà 4 Mo despace dadressage physique pour le seul tableau des pages.

Comment bien le comprendre?

Réponse: 4 octets (32 bits ) est exactement la bonne quantité despace pour contenir nimporte quelle adresse dans un espace dadressage de 32 bits. Étant donné quun million dentrées de 4 octets chacune fait 4 Mo, un processus « peut » avoir besoin de 4 Mo despace dadressage physique.

Réponse

Une page ta ble est maintenu par le système dexploitation sur une base par processus. Chaque processus a sa propre table de pages , cest pourquoi nous navons pas besoin de stocker didentifiant (s) de processus dans la table de pages. Le tableau des pages mappe un numéro de page logique / virtuelle donné à ladresse physique réelle du cadre / de la page.

Ladresse logique dune référence mémoire est de la forme:

Adresse logique:

Le numéro de page (numéro de page virtuelle) est utilisé pour effectuer une recherche dans la table des pages et obtenir ladresse de base du cadre physique auquel il est mappé. Ladresse de base du cadre (f) est ensuite combinée avec le décalage dans la page (d) pour obtenir ladresse du cadre de mémoire physique comme:

f = page-table [p]

Adresse physique:

Maintenant, considérons un système avec:

1. espace dadressage logique: 32 bits 2. taille de page: 4 Ko (2 ^ 12) 3. taille dentrée de table de page: 4 octets 4. mémoire physique: 2 Go

Veuillez noter que 4 octets dune entrée de table de page stocke efficacement plusieurs types dinformations en dehors de ladresse de base de la trame physique. Ces informations peuvent être pour la protection de la mémoire (bit valide / invalide), le type daccès (lecture / écriture), la comptabilité, etc. Je fais référence à ladresse de trame physique (f), je me réfère en fait à cette partie particulière de lentrée de 4 octets.

Calculons la taille dune table de page:

Taille de la page table = (Nombre dentrées * taille de chaque entrée).

Compte tenu des paramètres ci-dessus, une adresse logique 32 bits sera partitionnée en:

ou

.

Nous pouvons maintenant calculer que le nombre dentrées dans le tableau des pages (nombre total de pages virtuelles) peut atteindre 2 ^ 20. Par conséquent, la taille du tableau des pages serait:

(2 ^ 20) * 4 octets = 4 Mo despace (par processus).

Cette grande quantité despace serait nécessaire dans la mémoire physique pour la table des pages de chaque processus. Noubliez pas que nous navons que 2 Go de mémoire principale, et avoir 4 Mo de cet espace pour la table des pages de chaque processus nest peut-être pas une bonne idée. De plus, de nombreuses adresses virtuelles peuvent ne pas avoir dadresse de page physique mappée sur elles. Mais , la taille du tableau des pages sera toujours grande. Même si le bit « valide » nest pas défini pour un numéro de page virtuelle, un emplacement pour celui-ci devra exister dans le tableau des pages.

En cas de partage mémoire, avoir une table de pages par processus nécessitera une entrée de la même page physique dans la table de pages de chaque processus ayant un accès partagé à cette page. Ainsi, le système finira par conserver plusieurs entrées pour la même adresse de trame physique. Pas une très bonne utilisation de la mémoire physique.

Nous pouvons également comprendre quune table de page pour chaque processus contiendra une entrée par adresse virtuelle. La taille de la table est donc proportionnelle à la taille de logique / virtuelle un espace dadressage qui peut en fait savérer énorme.

Notre objectif est de réduire / optimiser la quantité de mémoire physique requise pour stocker les tableaux de pages. Le tableau de page inversé est une de ces solutions.

Le tableau de page inversé est un tableau de page global maintenu par le système dexploitation pour tous les processus. Il ny a quune seule table de pages dans lensemble du système, ce qui implique que des informations supplémentaires doivent être stockées dans la table de pages pour identifier les entrées de table de pages correspondant à chaque processus.

Il stocke une entrée par cadre physique, et est un tableau linéaire où le contenu de chaque emplacement est et lindex de chaque emplacement est ladresse physique du cadre. La formule va maintenant changer:

= page-table [f]

Cela implique tout de suite que les recherches ne peuvent plus avoir lieu sur le numéro de page virtuelle. La table entière doit être recherchée entrée par entrée pour trouver une entrée correspondante ayant le pid égal à « id » et le numéro de page virtuelle égal à « p ». Lemplacement dindex correspondant à la correspondance est ladresse de trame physique (f), qui ensuite combinée avec le décalage (d) donne ladresse physique.

Nous pouvons facilement déduire ce temps de recherche dans une page inversée table peut être considérablement plus élevée par rapport à une table de page simple .

Cependant, comme le tableau stocke une entrée par adresse de cadre physique et quil ny a quun seul tableau de page dans tout le système, la quantité de mémoire utilisée par le tableau de page inversé a considérablement diminué. Comment?

Considérez à nouveau les mêmes paramètres:

1. espace dadressage logique: 32 bits 2. taille de page: 4 Ko (2 ^ 12) 3. taille dentrée de table de page: 4 octets. 4. mémoire physique: 2 Go (2 ^ 31)

Nombre dentrées dans le tableau des pages = Nombre de pages physiques =

(2 ^ 31) / (2 ^ 12) = 2 ^ 19 pages ou cadres physiques.

Disons que nous utilisons des identificateurs de processus de 1 octet. La taille de chaque entrée de table de page serait:

8 bits (PID) + 20 bits ( numéro de page virtuelle) + 4bits (informations daccès) = 32 bits = 4 octets.

Taille du tableau des pages = (2 ^ 19) * 4 = 2 Mo pour lensemble du système.

Les performances des tables de pages inversées sont généralement traitées par des tables de pages hachées. Mais il existe un autre inconvénient à utiliser des tables de pages inversées en dehors des performances. Il sagit de la mémoire partagée.

Parce quil ny a quune et une seule entrée dans le tableau des pages par cadre physique, et qui contient exactement un numéro de page virtuelle, nous ne pouvons plus mapper le même cadre physique à plusieurs numéros de page virtuels dans différents processus. Il existe des moyens de contourner ce problème, mais nous ignorons les détails à écrire ici .

Source – Concepts du système dexploitation (Silberschatz et al)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *