La dimensione della pagina è sempre uguale alla dimensione della cornice?


9

Sto imparando il paging. Il mio libro dice che gli indirizzi logici generati dalla CPU sono nella forma |p|d|(numero di pagina, offset di pagina) e gli indirizzi fisici sono nella forma |f|d|(numero di frame, offset di frame). Si precisa inoltre che dl'offset viene copiato direttamente per generare l'indirizzo fisico da quelli logici.

Ora, il buon senso dice che se l'offset viene copiato direttamente, la dimensione della pagina deve essere uguale alla dimensione del frame (altrimenti, gli offset non corrisponderebbero). Ma sfortunatamente il mio libro non dice nulla al riguardo.

Quindi, la dimensione della pagina è sempre uguale alla dimensione del frame?

Si prega di abilitare le immagini;)

Risposte:


8

Una pagina è una regione di spazio di indirizzi virtuale e una cornice di pagina è una regione di memoria fisica. Una pagina che mappa una regione di memoria fisica deve avere le stesse dimensioni di quella parte di memoria fisica, altrimenti non ha senso.

Inoltre, in genere devono essere allineati correttamente. Se provi a mappare, diciamo, un frame di pagina da 2 Mb nella memoria virtuale, sia l'indirizzo virtuale che l'indirizzo fisico devono essere entrambi allineati a 2 Mb.

Molte CPU moderne supportano più di una dimensione di pagina e alcune possono supportare dimensioni di pagina diverse nello stesso spazio di indirizzi. L'attuale Intel x86-64, ad esempio, supporta dimensioni di pagina 4kb, 2Mb e 1Gb. Questi numeri non sono arbitrari; rappresentano lo spazio degli indirizzi coperto da diversi "livelli" nella tabella delle pagine multilivello. Allo stesso modo, ARM moderno supporta pagine da 4kb, 64kb e 1Mb, sebbene ARM non si riferisca alle pagine da 1Mb come "pagine" (sono "sezioni"). ARMv4 e ARMv5 supportano ulteriormente la suddivisione delle pagine in cosiddette "sottopagine"; questi non sono più disponibili in ARMv7.

È interessante notare che ci sono alcune altre cose che hanno spesso le stesse dimensioni della dimensione della pagina. Ovviamente una voce TLB ha le stesse dimensioni di una pagina o di un frame, poiché è concettualmente una cache per le voci della tabella delle pagine. Tuttavia, la dimensione della cache L1 è spesso determinata anche dalla dimensione della pagina.

Supponiamo che la cache L1 sia set-associativa (una cache a mappatura diretta è in realtà solo una cache associativa set a 1 via, quindi puoi pensare a questo come un caso limitante), quindi è spesso conveniente fare un "set" delle dimensioni di una pagina fisica. Supponiamo quindi che la dimensione della pagina sia 4kb e che la cache L1 sia una cache associativa set a 4 vie, quindi la dimensione "migliore" per la cache L1 è 16kb (che è quattro volte 4kb). Vedi se riesci ad allenarti da solo, questo potrebbe essere il caso.


1

sì, la dimensione della pagina deve essere uguale alla dimensione del frame per ridurre al minimo la frammentazione interna della memoria principale.


3
Si noti che alcune architetture supportano contemporaneamente più dimensioni di pagina.
TEMLIB,

Puoi elaborare? Preferiamo risposte dettagliate che forniscano spiegazioni, giustificazioni o analisi. Se la dimensione della pagina non fosse uguale alla dimensione del frame, come potrebbe causare una maggiore frammentazione interna della memoria principale? Puoi modificare la risposta per aggiungere una spiegazione di questo?
DW

La risposta sopra con 1 voto è assolutamente sbagliata. Il paging utilizza blocchi di memoria di dimensioni costanti e quindi riduce al minimo la frammentazione esterna a spese dell'interno, se la memoria allocata è inferiore a una pagina. Quindi, ho concluso che il tuo sistema operativo sarà più felice se scegli pageSize = frameSize.
Jignesh Kumar,

@JigneshKumar, non utilizzare la casella "La tua risposta" per commentare le risposte esistenti. Concentrati invece su domande in cui puoi fornire una risposta completa o porre nuove utili domande. Grazie!
DW

0

La cornice della pagina non può essere più piccola della pagina, perché in tal caso l'offset potrebbe traboccare la cornice della pagina. Che dire del contrario: la cornice della pagina è più grande della pagina? A differenza del precedente scenario, questo funzionerebbe, ma sarebbe dispendioso perché ci sarebbero parti del frame della pagina che non sono mai state usate (queste sono le parti che vanno oltre l'offset massimo).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.