2012-11-06 5 views
1

Ce n'est pas une question de devoirs, c'était une question que nous avons eu en classe mais mon professeur m'a perdu sur la toute dernière partie. Le voici:Calcul de la taille de la table de mémoire virtuelle?

Quelle sera la taille de la table de mémoire virtuelle pour une mémoire virtuelle de 16 Go avec une taille de page de 1 Ko?

D'abord nous avons déterminé le nombre de pages de mémoire physique = 64Mo/1024 = (2^6 * 2^20)/2^10 = 2^16 = 65536 * Cela signifie que nous avons 65.536 adresses possibles, et bloc d'adresses doit être au moins 16-
bits de long (plus 1 bit pour drapeau valide et 1 pour le drapeau sale)

Deuxièmement, nous avons déterminé le nombre de pages de mémoire virtuelle = (2^34)/(2^10) = 2^24

La partie suivante, où nous calculons réellement la taille de la VMT, est celle où il m'a perdu!

(2^24 * 16 bits) + (2^24 * 1 bit) + (2^242 * 1 bit) // i comprends

(2^24 * 2) + (2^21) + (2^21) = // aucune idée comment il a obtenu ces chiffres

2^25 + 2^21 + 2^21 = 32MB + 2MB + 2MB = 36MB // aucune idée de comment il a obtenu ce soit

Ainsi, la taille du VMT est apparemment 36MB

donc, fondamentalement, je comprends tout jusqu'à ce que les 2 dernières étapes de la dernière partie. Je comprends que nous faisons "(2^24 * 16 bits) + (2^24 * 1 bit) + (2^242 * 1 bit)" parce que nous avons 2^24 pages VM dont chacune a 18 bits, je ' Je viens de perdre la façon dont il a simplifié cela plus loin!

Je ne sais pas si j'ai écrit les chiffres faux (il a l'écriture très bâclée) ou quoi!

Alors toute aide serait grandement appréciée!

+0

"2^242" se produit deux fois dans votre question, je pense que ceux-ci devraient être "2^24" –

Répondre

2

De votre question:

(2^24 * 16 bits) + (2^24 * 1 bit) + (2^24 * 1 bit) // Je comprends ce

= (2^24 * 2) + (2^21) + (2^21) = // aucune idée de la façon dont il a obtenu ces nombres

Il convertit des bits en octets dans cette étape. Donc, 16 bits devient "2", et le 1 bit devient 1/8ème d'un octet, ce qui est (1/(2^3)) octets qui obtient 2^21 lorsqu'il est multiplié par 2^24.

est ici les étapes intermédiaires:

= (2^24 * 2 bytes) + (2^24 * 1/8 bytes)  + (2^24 * 1/8 bytes) 
= (2^24 * 2 bytes) + (2^24 * 1/(2^3) bytes) + (2^24 * 1/(2^3) bytes) 
= 2^25    + 2^21     + 2^21 

ensuite convertir octets à MB vous obtient 32 Mo + 2 Mo + 2 Mo.

Ceci est une limite très théorique sur la taille du VMT dans cette configuration. Emballer des entrées de 18 bits dans des pages n'est pas très efficace pour la recherche (en fait, les entrées de 18 bits ne rentrent pas uniformément dans une page de 1 Ko, 455 entrées prennent tout mais 2 bits de la 1k). Les bits d'indicateur peuvent être stockés séparément des numéros de page 16 bits compressés pour conserver l'alignement et la densité (ou le problème peut simplement être ignoré et vous faites juste le calcul pour rechercher les entrées de 18 bits).Étant donné la mémoire virtuelle plus importante de la mémoire physique, par définition, l'espace d'adressage sera réduit (à moins que vous ne mappez la même page en plusieurs endroits), cette représentation linéaire compressée perdra donc plus d'espace qu'elle ne le devrait. Dans le monde réel, les VMT sont hiérarchiques, les entrées sont serrées et les entrées alignées sur les limites naturelles. Vraisemblablement, vous y arriverez plus tard en classe. :)

+0

Ahhh, merci beaucoup P.T. !!! Ca a tellement plus de sens maintenant! Et oui, je ne pense pas que c'était supposé être un exemple du monde réel! – Drew

+0

@ user1631708 Content que cela ait aidé! En tant que nouveau membre de StackOverflow, veuillez prendre le temps de marquer la bonne réponse en tant que telle (et/ou voter). En plus de me donner des points, il montrera que cette question est répondue dans les recherches des autres. Voir http://stackoverflow.com/faq#howtoask pour plus de détails. –

+0

Ma réputation n'est pas assez élevée pour voter la réponse mais je l'ai acceptée! Merci encore pour votre aide! – Drew

Questions connexes