Déterminer la page taille de la table pour la mémoire virtuelle
Envisager un système de mémoire virtuelle avec un 38 bits virtuel adresse de l'octet, 1 pages et de 512 MO de mémoire physique. Quelle est la taille totale de la page table pour chaque processus sur cette machine, en supposant que la valide, la protection, la sale et l'utilisation des bits de prendre un total de 4 bits, et que toutes les pages virtuelles sont en cours d'utilisation? (à supposer que les adresses de disque ne sont pas stockées dans la table des pages.)
- 2^28 entrées en raison de l'espace virtuel de taille / taille de la page. 4 Octets par entrée (28 bits pour l'adresse vp numéros + 4 bits = 32 bits) 2^28 * 4 = 1024 MO, ce qui est plus grand que la mémoire physique. N'a pas de sens, je n'ai pas à l'école. C'est mon avis, pas la vraie réponse. Merci à l'avance.
- Je ne vois pas une exigence pour l'ensemble de la page table en mémoire physique de n'importe où dans la question.
- Pourquoi la mémoire physique donné et alors qu'il n'existe pas de disque adresses stockées dans la table? Cela signifie que vous avez seulement besoin de l'adresse de 512 mo de mémoire physique.. à Moins que je me trompe. Merci encore.
- Vous n'avez pas besoin de stocker les adresses de disque dans la table des pages si il y a une autre façon de les obtenir. Par exemple, supposons que votre fichier d'échange lui-même contient plus de la cartographie des processus-id/virtual-adresse à swap l'emplacement du fichier. Vous devez lire le fichier du disque de toute façon, peut aussi bien faire deux lectures au lieu d'un. Pas une solution idéale, mais réalisable dans une contrainte de mémoire de l'environnement.
- Et votre table virtuelle de ne pas avoir de 28 bits pour l'adresse d'un nombre VP. Le nombre VP est la clé (index de tableau, pas de la valeur). Il lui suffit d'avoir assez de bits pour se référer à toutes les pages physiques que vous souhaitez utiliser. Tout au plus, c'est 512M/1024 entrées (512K = 19 bits), en supposant physique de pages sur un 1K limite.
- Ah cela fait plus de sens.. alors vous serait techniquement besoin de 3 octets pour la PTE, mais auriez-vous autour de 4? Donc 2^19 * 4 = 2 MO. Qui permettrait de faire beaucoup plus de sens
- Non, pas tout à fait, vous avez encore besoin de 2^28 entrées de table de page puisque c'est votre espace d'adressage. Mais chaque entrée prend moins de place, car il n'a qu'à l'adresse de 512K entrées qui composent la mémoire physique. Malheureusement, avec 2^28 entrées, 512M ne peux vous donner que 2 bits par entrée - c'est moins encore que les informations comptables et encore moins les adresses physiques. Donc, vous devriez penser à avoir les tables de pagination eux-mêmes être paginée (un à deux niveaux de système VM).
- Le principal problème que vous avez est un immense espace d'adressage combinée avec une très petite taille de la page 🙂 Vous devriez vérifier les chiffres et garder à l'esprit qu'ils veulent peut-être qu'il vous suffit de calculer la taille de la page, indépendamment de savoir si elle est adaptée à un stockage physique. Est-il plus à la question de ce que vous avez montré?
- Non c'est l'ensemble de l'invite de commandes, ce qui le rend un peu confus.. je vous remercie de votre aide par la voie
- Nous n'avons pas commencé à multi niveau des systèmes de mémoire virtuelle, donc je ne pense pas que ce serait la solution.. Peut-être que la réponse est tout simplement pas possible?
Vous devez vous connecter pour publier un commentaire.
Bien, si la question est simplement de "qu'est-ce que la taille de la page table?", indépendamment de savoir si elle va tenir dans la mémoire physique, la réponse peut être calculé ainsi:
Premier de la mémoire physique. Il y a 512K pages de mémoire physique (512M /1K). Cela nécessite de 19 bits pour représenter chaque page. Ajoutez à cela les 4 bits de l'information comptable et vous obtenez 23 bits.
Maintenant la mémoire virtuelle. Avec un 38 bits de l'adresse de l'espace et une de 10 bits (1K) taille de la page, vous avez besoin de 228 entrées de table de page.
Donc 228 entrées de table de page à 23 bits chacun est 6,174,015,488 bits ou 736M.
C'est le maximum de la taille nécessaire pour un seul niveau de la VM sous-système pour chaque processus.
Maintenant, évidemment, cela ne va pas fonctionner si vous n'avez 512M de RAM physique alors vous avez quelques options.
Vous pouvez réduire le nombre de pages physiques. Par exemple, seulement laisser la moitié de la mémoire pour être soumis à la pagination, en gardant l'autre moitié résident à tous les temps. Cela permettra d'économiser un peu par entrée, pas vraiment assez pour faire une différence.
Augmentation de la taille de la page, si possible. 1K page 38 bits de l'adresse de l'espace est la raison pour laquelle le très chunky tables de pages. Par exemple, je pense que le '386, avec son espace d'adressage 32 bits, utilise les pages de 4ko. Qui seraient le résultat d'un million d'entrées de table de page, beaucoup moins que les 260 millions de dollars nécessaires ici.
Multi-niveau. Un peu plus avancée, mais il signifie que la page tables sont elles-mêmes soumises à la pagination. Vous devez tenir le premier niveau de la page des tables résident dans la mémoire physique, mais le deuxième niveau peut entrer et sortir comme nécessaire. Cela permettra de réduire considérablement les besoins physiques, mais au prix de la vitesse, depuis deux niveaux de défauts de page peut se produire pour obtenir à un processus réel de la page (un pour le secondaire tables de pagination alors on pour le processus de la page).
Voyons d'un peu plus près à l'option 3.
Si nous permettons à 32M de la primaire la pagination de la table et de donner à chaque entrée de 4 octets (32 bits: 23 seulement sont nécessaires, mais nous pouvons ronde pour l'efficacité ici), ce qui permet 8,388,608 pages pour le secondaire de la table des pages.
Puisque chacun de ces secondaire page de la table des pages est 1K long (ce qui nous permet de stocker 256 secondaire entrées de table de page à 4 octets chacun), nous pouvons traiter un total de 2,147,483,648 pages virtuelles.
Cela permettrait 8,192 entièrement chargée (c'est à dire, en utilisant la totalité de leur 28 bits de l'adresse de l'espace) le processus à exécuter côte à côte, en supposant que vous avez une bonne partie de l'espace disque pour stocker les non-résidents pages.
Maintenant évidemment la primaire la pagination de la table (et la machine virtuelle sous-système, et probablement une bonne partie du reste de l'OS) a pour résider à tout moment. Vous ne pouvez pas être admis à la page de l'une des principales pages, car vous pourriez bien besoin de cette page dans le but de le ramener dans 🙂
Mais qui est un résident coût de 32M de la 512M de la primaire la pagination de la table, beaucoup mieux que l' (au minimum, pour une pleine charge de processus) de 736M.
la taille de la page table= nombre total d'entrées de table de page*de la taille de la page d'entrée de la table
ÉTAPE 1:DÉFINIR LE PAS D'ENTRÉES DANS LA TABLE DES PAGES:
il y a donc 2^28 entrées dans la table des pages
ETAPE 2:PAS D'IMAGES DANS LA MÉMOIRE PHYSIQUE:
no of frames in the physical memory=(512*1024*1024)/(1*1024)=524288=2^19
nous avons donc besoin d'
19 bits
et supplémentaires4 bits
pour valide, la protection, la sale et l'utilisation de bitstotalement 23 bits=2.875 octets
1 KO pages = 2^10, 512 MO = 2^29 => Offset = 29 - 10 = 19 bits.
virtuel comprend deux parties: le cadre de la page + offset => page frame + dirty bit = 38 - 19 = 29 bits.
29 bits comprend 4 peu sale (ci-dessus) => 25 bits pour de vrai cadre de page, chaque page de cadre, de 10 bits de long.
Donc, la page taille de la table: 2^25 * 10 = 320M.
Espère que cela correct.