Sto leggendo "Capire il kernel di Linux".Perché il sistema operativo non può utilizzare interi 64 bit per l'indirizzamento? Perché solo i 48 bit?
paging per architetture a 64 bit
Come abbiamo visto nelle precedenti sezioni, due livelli di paging è comunemente utilizzato da microprocessori a 32-bit. L'impaginazione a due livelli, tuttavia, non è adatta per computer che adottano un'architettura a 64 bit . Utilizziamo un esperimento di pensiero per spiegare il motivo:
Iniziare assumendo una dimensione di pagina standard di 4 KB. Perché 1 KB copre una gamma di indirizzi, 4 KB copre 2 indirizzi, in modo che il campo Offset è di 12 bit. Questo lascia fino a 52 bit dell'indirizzo lineare da distribuire tra i campi Tabella e Directory . Se ora decidiamo di utilizzare solo 48 dei 64 bit per l'indirizzamento (questa restrizione ci lascia con un comodo spazio di indirizzamento 256 TB!), i restanti 48-12 = 36 bit sarà devono essere diviso tra la tabella e i campi della directory . Se ora decidiamo di riserva 18 bit per ciascuno di questi due campi, sia la pagina Directory e le Tabelle Pagina di ogni processo deve includere voci che è, più di 256.000 voci.
"Se ora decidiamo di utilizzare solo 48 dei 64 bit per l'indirizzamento". Perché? & Perché solo 48 bit? Perché non un altro numero?
Beh, sono solo un normale utente di PC & programmatore. È difficile per me credere che l'indirizzamento a 32 bit, ovvero 4 GB (2 GB/3 GB per essere più corretto), lo spazio di indirizzamento per processo sia un limite. Se si in realtà riscontrato questo limite. Per favore, dammi un esempio
Qual è questo limite per Windows?
So che la memoria virtuale! = Memoria fisica I pin di indirizzo del processore & non hanno nulla a che fare con la memoria virtuale. Questa è una domanda completamente diversa. Come conoscere il numero di pin di indirizzo (= dimensione del bus indirizzo) per un processore. Le specifiche http://ark.intel.com di un processore non includono questa specifica.
Risposta:
Vedi Paul Betts's answer per risposta ragionevole per il 1 ° domanda.
Vedere anche http://stackoverflow.com/questions/3196684/memory-addressing e http://stackoverflow.com/questions/132930/32-vs-64-bits-whats-the-big-deal – claws