Calcolo dell'indirizzo fisico dato solo un offset per il mio processo

0

Informazioni sulla memoria virtuale con un programma assegnato. Attualmente questo è quello che ho:

La memoria principale ha 60 byte e la memoria virtuale altri 60 byte. La dimensione di un frame / pagina è 10 byte. Quindi ci sono 6 frame per main e 6 per memoria virtuale.

Ho un processo che usa 40 byte, quindi ha bisogno di 4 pagine. In base alle specifiche di assegnazione, quando carico un processo le sue quattro pagine devono essere allocate casualmente, quindi supponiamo che questo sia come appare ora:

Sono riuscito a fare la maggior parte delle cose, ad esempio il cercapersone, il ripristino di una pagina con LFU e LRU, il caricamento di più processi, ecc. Ma c'è un particolare punto che mi confonde:

Given an offset for your process, you must return the physical address. You must verify that the offset is within the size of your process.

Per quanto mi riguarda, puoi calcolare un indirizzo fisico se ti viene dato un offset E un numero di pagina. Ma mi viene dato solo un numero di offset.

La mia ipotesi è che puoi ottenere il numero di pagina usando lo stesso numero di offset. Ad esempio, se l'offset è 36, il numero di pagina sarà 3 (poiché ogni pagina è grande 10 byte) con un offset di 6 byte. Quindi l'indirizzo fisico sarebbe 56? Ma poi ho una domanda più grande:

Cosa succede se mi viene dato il numero 25? Sarebbe la pagina 2 con offset 5. Ma tale pagina è nella memoria virtuale. Devo prima spostare questa pagina nella memoria principale?

    
posta Omega 18.12.2014 - 03:03
fonte

1 risposta

4

Hai un malinteso fondamentale su come funziona la memoria virtuale.

Lo spazio di memoria virtuale di un processo è un elenco lineare di indirizzi, da 0 a N. Gli indirizzi all'interno dello spazio di memoria virtuale sono segmentati in pagine e tali pagine possono risiedere nella RAM o in disco (anche se devono essere spostati nella RAM per l'esecuzione).

Quindi il tuo diagramma ha bisogno di tre blocchi:

Per"calcolare un indirizzo fisico" dato un indirizzo virtuale (che è l'interpretazione più vicina che ho di "offset"), si utilizza la tabella di pagina per scoprire dove risiede una pagina. Il risultato è una tupla che identifica dove si trovano le pagine (RAM o disco) e dove risiede in quello spazio (potrebbe essere un indirizzo assoluto, purché consideri lo scambio come uno spazio di memoria contiguo).

    
risposta data 18.12.2014 - 13:03
fonte

Leggi altre domande sui tag