Svolgimento

Esercizio 4

Abbiamo uno spazio di indirizzamento di 16 bit con pagine di 4K.

Essendo la dimensione della memoria di 64K ( 2^16) abbiamo lo spazio di memoria logica diviso in 16 pagine (= 64K/4K).

Nella figura sotto vediamo come è suddiviso lo spazio di memoria e gli indirizzi delle diverse pagine:

Essendo 16 le pagine, bastano 4 bit per il numero di pagina quindi:

pagina  0 -> 0000
pagina  1 -> 0001
pagina  2 -> 0010
pagina  3 -> 0011
pagina  4 -> 0100
pagina  5 -> 0101
pagina  6 -> 0110
pagina  7 -> 0111
pagina  8 -> 1000
pagina  9 -> 1001
pagina 10 -> 1010
pagina 11 -> 1011
pagina 12 -> 1100
pagina 13 -> 1101
pagina 14 -> 1110
pagina 15 -> 1111

i successivi 12 bit, dell'indirizzo di 16 bit, rappresentano l'offset (scostamento) all'interno della singola pagina (di 4K).

Quindi gli indirizzi all'interno della pagina vanno da:

0     -> 0000 0000 0000
4095  -> 1111 1111 1111

L'indirizzo logico è composto così:

( 4096 * N_PAGINA) + OFFSET

dove N_PAGINA nel nostro caso va da 0 a 15 e OFFSET va da 0 a 4095 (avendo pagine da 4K e 16 pagine totali).

Fatta questa premessa dato un indirizzo logico, i primi 4 bit, della rappresentazione binaria, rappresentano il numero di pagina e i successivi 12 bit, rappresentano l'offset (scostamento) all'interno della pagina.

Ipotizzando la seguente tabella della pagine del nostro processo:

   ----------
0  |   10   |
   ----------
1  |    7   |
   ----------
2  |    9   |
   ----------
3  |    5   |
   ----------   

Cioè alla pagina 0, corrisponde il frame 10, alla pagina 1 il frame 7, ecc...

Calcoliamo ora l'indirizzo fisico corrispondente all'indirizzo logico 10344 in base decimale:

Vediamo che 10344 corrisponde alla codifica binaria: 0010_1000_0110_1000, quindi il numero di pagina è 2 (0010) e l'offset è 1000_1000_0110_1000.

Dalla tabella della pagine vediamo che alla pagina 2 corrisponde al frame 9, quindi l'indirizzo logico sarà 1001 (9 in binario) la parte del numero del frame e l'offset identico 1000_1000_0110_1000; quindi l'indirizzo fisico è:1001_1000_1000_0110_1000, corrispondente a 39016 in decimale.

Infatti come verifica si può vedere che 10344 può essere scomposto in (2 * 4096) + 2152, dove 2 è il numero di pagine e 2152 l'offset. Quindi l'indirizzo fisico sarà (9 * 4096) + 2152) = 39016.

Esercizio 6

Dimensione memoria programma 300 MB sapendo che la memoria ha pagine di 4 KB, quanto occupa come memoria la page table, sapendo che ogni riga dalla page table è di 4 byte?

Per trovare quante pagine occupa il processo:

300 MB / 4 KB = (300 * 2^20) / ( 4 * 2^10) = 75 * 2^10 pagine

Quindi la tabella sarà composta da 75 K righe.

Siccome ogni riga della tabella è di 4 byte, allora la tabella delle pagine occupa:

75 * 2^10 * 4 byte = 300 KB.

Last updated

Was this helpful?