PDA

Visualizza la versione completa : [OT] Segmentazione e impaginazione della memoria


Who am I
18-04-2012, 12:51
Sto leggendo un esempio di gestione della memoria in cui la memoria virtuale viene gestita tramite la segmentazione, e la memoria fisica tramite l' impaginazione, e gli indirizzi di memoria generati dalla CPU sono di 32 bit.
Le pagine sono grandi 2^12 bit (512 B), e sono presenti 2^20 pagine.
Poi nell' esempio, ogni entry della tabella occupa 4 Byte: 3 B per l' indice delle pagine, e 1 B per il controllo (es: bit accesso in scrittura, bit di modifica, ecc...).
Non mi è chiaro come possano esserci 2^20 pagine mappabili e però vengono usati 24 bit per l' indice della pagina.
Se ogni puntatore su questa ipotetica macchina è lungo 32 bit, gli ultimi 4 bit dei 3 B dell' indice della pagine, a cosa si riferiscono?

oregon
18-04-2012, 13:00
Potrebbero non essere usati ...

robe92
19-04-2012, 00:13
Scusate se mi intrometto ma vorrei chiarire questo mio dilemma: in cosa consiste la segmentazione?

Who am I
19-04-2012, 00:57
La divisione logica della memoria, che viene divisa in segmenti cioè blocchi di memoria virtuale (non mappabile fisicamente).
Ma la cosa che non mi è chiara è l' impaginazione.
Per facilitare le cose faccio una domanda specifica: visto che la memoria virtuale può essere superiore a quella fisica, quando avviene un page fault (cioè la pagina non è caricata in memoria), come si fa a sapere da dove prendere (dal disco) quella pagina? Dov'è l' informazione che dice da dove va presa quella pagina se il bit presente è a zero? :confused:

Andrea Simonassi
19-04-2012, 10:05
Ad occhio e croce direi che la coppia (id processo, indirizzo virtuale) è l'indice su disco della pagina da caricare. Dovrei rileggere il tanenbaum sono quasi dodici anni che non lo apro.

robe92
19-04-2012, 12:07
Originariamente inviato da Who am I
La divisione logica della memoria, che viene divisa in segmenti cioè blocchi di memoria virtuale (non mappabile fisicamente)
Tutto qui?

Who am I
19-04-2012, 12:36
Originariamente inviato da Andrea Simonassi
Ad occhio e croce direi che la coppia (id processo, indirizzo virtuale) è l'indice su disco della pagina da caricare. Dovrei rileggere il tanenbaum sono quasi dodici anni che non lo apro.

Anche io sto leggendo il Tanenbaum, però non parla di disco e di RAM, la chiama semplicemente "memoria fisica".
Certo che se è come dici te allora le cose quadrano, perché la pagina se ha il bit presente la cerca nella RAM, altrimenti la cerca nel disco e fa lo swap-in.

Who am I
19-04-2012, 22:22
Avevi ragione comunque, conoscendo l' indirizzo virtuale si può risalire alla pagina sul disco.
Un altro mistero risolto :fighet:

oregon
19-04-2012, 22:25
Originariamente inviato da Who am I
Avevi ragione comunque, conoscendo l' indirizzo virtuale si può risalire alla pagina sul disco.
Un altro mistero risolto :fighet:

Mi sembra che sia una cosa logica. Altrimenti il sistema come potrebbe caricare la pagina giusta dal disco se, ad un certo punto, accede ad un indirizzo non mappato in memoria?

Who am I
20-04-2012, 10:40
Originariamente inviato da oregon
Mi sembra che sia una cosa logica. Altrimenti il sistema come potrebbe caricare la pagina giusta dal disco se, ad un certo punto, accede ad un indirizzo non mappato in memoria?

Già che ci sono: e questo avviene senza nessuna traduzione da parte della MMU?
Cioè la MMU genera indirizzi di pagine nella RAM, e se non c'è la pagina nella RAM la carica dal disco? Oppure la MMU genera direttamente indirizzi del disco?

Loading