Risposta migliore
Bene, la dimensione della pagina è lo spazio necessario per 1 pagina. )
Per avere solo un po di background qui, una tabella di pagine è una tabella di conversioni da indirizzi virtuali a fisici che il sistema operativo utilizza per artificialmente aumentare la quantità totale di memoria principale disponibile in un sistema. La memoria fisica sono i bit effettivi situati negli indirizzi in memoria (DRAM), la memoria virtuale è dove il sistema operativo si trova ai processi per dire loro dove si trova per fare le cose come consentire 2 ^ 64 bit di spazio degli indirizzi nonostante il fatto che 2 ^ 34 bit sia la RAM normalmente utilizzata. (2 ^ 32 bit corrispondono a 4 gigabyte, quindi 2 ^ 34 corrispondono a 16 GB.)
Ora, la maggior parte delle dimensioni predefinite della tabella delle pagine sono 4096 kb per ogni processo, ma il numero di voci della tabella delle pagine può aumentare se il processo richiede più spazio per il processo. Le dimensioni della tabella di pagina possono anche essere inizialmente allocate quantità o memoria più piccole o più grandi, è solo che 4 kb di solito è la dimensione migliore per la maggior parte dei processi. Quindi la dimensione della voce della tabella della pagina sarebbe esattamente la giusta quantità di spazio per contenere qualsiasi indirizzo in uno spazio di indirizzi a 32 bit.
Consideriamo un esempio qui: si consideri un sistema con uno spazio di indirizzi logici a 32 bit. Se la pagina la dimensione in un tale sistema è di 4 KB (212), quindi una tabella di pagine può contenere fino a 1 milione di voci (232/212). Supponendo che ciascuna voce sia composta da 4 byte , ogni processo può richiedere fino a 4 MB di spazio degli indirizzi fisici per la sola tabella delle pagine.
Come comprenderlo appieno?
Risposta: 4 byte (32 bit ) è esattamente la giusta quantità di spazio per contenere qualsiasi indirizzo in uno spazio di indirizzi a 32 bit. Poiché 1 milione di voci di 4 byte ciascuna corrisponde a 4 MB, un processo “potrebbe” richiedere fino a 4 MB di spazio di indirizzi fisici.
risposta
A pagina ta ble viene mantenuto dal sistema operativo in base al processo. Ogni processo ha la propria tabella delle pagine ed è per questo motivo che non è necessario memorizzare alcun identificatore di processo nella tabella delle pagine. La tabella delle pagine mappa un dato numero di pagina logica / virtuale sulleffettivo frame / indirizzo di pagina fisico.
Lindirizzo logico per un riferimento alla memoria è nel formato:
Indirizzo logico:
Numero di pagina (numero di pagina virtuale) viene utilizzato per eseguire la ricerca nella tabella delle pagine e ottenere lindirizzo di base del frame fisico su cui è mappato. Lindirizzo di base del frame (f) viene quindi combinato con loffset nella pagina (d) per ottenere lindirizzo del frame di memoria fisica come:
f = page-table [p]
Indirizzo fisico:
Ora, considera un sistema con:
1. spazio indirizzo logico: 32 bit 2. dimensione pagina: 4KB (2 ^ 12) 3. dimensione voce tabella pagina: 4 byte 4. memoria fisica: 2 GB
Si noti che 4 byte di una voce della tabella delle pagine memorizza efficacemente più tipi di informazioni oltre allindirizzo di base del frame fisico. Queste informazioni possono essere per la protezione della memoria (bit valido / non valido), il tipo di accesso (lettura / scrittura), la contabilità, ecc. Mi riferisco allindirizzo del frame fisico (f), in realtà mi riferisco a questa parte particolare della voce di 4 byte.
Calcoliamo la dimensione di una tabella di pagina:
Dimensione di la tabella della pagina = (numero di voci * dimensione di ciascuna voce).
Dati i parametri precedenti, un indirizzo logico a 32 bit verrà partizionato in:
o
.
Ora possiamo calcolare che il numero di voci nella tabella delle pagine (il numero totale di pagine virtuali) può arrivare fino a 2 ^ 20. Quindi, la dimensione della tabella della pagina sarebbe:
(2 ^ 20) * 4 byte = 4 MB di spazio (per processo).
Questo molto spazio sarebbe richiesto nella memoria fisica per la tabella delle pagine di ogni processo. Non dimenticare che abbiamo solo 2 GB di memoria principale e avere 4 MB di spazio per la tabella delle pagine di ogni processo potrebbe non essere una buona idea. Inoltre, molti degli indirizzi virtuali potrebbero non avere alcun indirizzo di pagina fisico mappato su di essi. Ma , tuttavia la dimensione della tabella della pagina sarà grande. Anche se il bit “valido” non è impostato per un numero di pagina virtuale, dovrà esistere uno slot nella tabella della pagina.
In caso di condivisione memoria, avere una tabella delle pagine per processo richiederà una voce della stessa pagina fisica nella tabella delle pagine di ogni processo che ha un accesso condiviso a quella pagina, quindi il sistema finirà per mantenere più voci per lo stesso indirizzo del frame fisico. Non è un ottimo utilizzo della memoria fisica.
Possiamo anche capire che una tabella di pagine per ogni processo conterrà una voce per indirizzo virtuale. La dimensione della tabella è quindi proporzionale alla dimensione del logico / virtuale spazio di indirizzi che può effettivamente rivelarsi enorme.
Il nostro obiettivo è ridurre / ottimizzare la quantità di memoria fisica richiesta per memorizzare le tabelle delle pagine. La tabella delle pagine invertite è una di queste soluzioni.
Tabella delle pagine invertita è una tabella delle pagine globale gestita dal sistema operativo per tutti i processi. Esiste solo una tabella delle pagine nellintero sistema, il che implica che è necessario memorizzare informazioni aggiuntive nella tabella delle pagine per identificare le voci della tabella delle pagine corrispondenti a ciascun processo.
Memorizza una voce per frame fisico ed è un array lineare in cui il contenuto in ogni posizione è
Questo implica subito che le ricerche non possono più avvenire sul numero di pagina virtuale. Lintera tabella deve essere ricercata voce per voce per trovare una voce corrispondente avente il pid uguale a “id” e il numero di pagina virtuale uguale a “p”. La posizione dellindice corrispondente alla corrispondenza è lindirizzo del frame fisico (f), che quindi combinato con loffset (d) fornisce lindirizzo fisico.
Possiamo facilmente dedurre quel tempo di ricerca in una pagina invertita può essere notevolmente più alta rispetto a una semplice tabella di pagina .
Tuttavia, poiché la tabella memorizza una voce per indirizzo di frame fisico e vi è ununica tabella di pagina nellintero sistema, la quantità di memoria utilizzata dalla tabella di pagina invertita si è ridotta notevolmente. Come?
Considera di nuovo gli stessi parametri:
1. spazio degli indirizzi logici: 32 bit 2. dimensione della pagina: 4KB (2 ^ 12) 3. dimensione della voce della tabella della pagina: 4 byte. 4. memoria fisica: 2 GB (2 ^ 31)
Numero di voci nella tabella delle pagine = Numero di pagine fisiche =
(2 ^ 31) / (2 ^ 12) = 2 ^ 19 pagine o frame fisici.
Supponiamo di utilizzare identificatori di processo a 1 byte. La dimensione di ciascuna voce della tabella di pagina sarebbe:
8 bit (PID) + 20 bit ( numero di pagina virtuale) + 4 bit (informazioni di accesso) = 32 bit = 4 byte.
Dimensioni della tabella delle pagine = (2 ^ 19) * 4 = 2 MB per lintero sistema.
Le prestazioni delle tabelle delle pagine invertite sono solitamente indirizzate tramite tabelle delle pagine con hash. Tuttavia, oltre alle prestazioni, cè un altro svantaggio nellusare le tabelle delle pagine invertite. È la memoria condivisa.
Perché cè una sola voce nella tabella delle pagine per frame fisico e che contiene esattamente un numero di pagina virtuale, non possiamo più mappare lo stesso frame fisico a più numeri di pagina virtuali in processi diversi. Ci sono modi per aggirare questo problema, ma non siamo consapevoli dei dettagli da scrivere qui .
Fonte – Concetti del sistema operativo (Silberschatz et al)