Salta al contenuto
Note per Studenti Esercizio - Dimensioni di page table e indirizzi, paginazione a più livelli (eserciziario, esercizi 66, 67, 69, 72, 76, 81, 82, 93 e 100)

Esercizio - Dimensioni di page table e indirizzi, paginazione a più livelli (eserciziario, esercizi 66, 67, 69, 72, 76, 81, 82, 93 e 100)

In questa pagina 10

Testo (eserciziario del corso di Sistemi Operativi, Ing. Informatica UniPD; sono tutti calcoli sulle dimensioni).

  • 66. Indirizzo fisico di 29 bit, frame di 8 KB; la tabella delle pagine più grande occupa esattamente un frame. Qual è lo spazio di indirizzamento logico?
  • 67. Si sceglie fra pagine da 2102^{10} e da 2202^{20} byte; lo spazio logico resta lo stesso; indirizzo fisico di 32 bit, spazio fisico pari alla metà di quello logico. (a) Con pagine da 2202^{20} byte, quanto è grande al massimo la tabella di un processo?
  • 69. Come il 67, con pagine da 2102^{10} byte: potrebbe servire una paginazione a più livelli?
  • 72. Testo di 200 KB, dati di 100 KB, stack di 50 KB; memoria a pagine da 16 KB; ogni segmento è paginato. (1) Quanto è lunga la tabella delle pagine del processo? (2) Quanta memoria si può gestire con indirizzi di 32 bit?
  • 76. Indirizzi di 32 bit, pagine su due livelli: 9 bit per la tabella principale, 11 per quella di secondo livello, 12 di offset. Quanto sono grandi le pagine e quante pagine virtuali ci sono?
  • 81. Spazio logico di 64 pagine da 1024 parole, memoria fisica di 32 frame da 1024 parole: bit degli indirizzi logici e fisici?
  • 82. Indirizzi virtuali di 21 bit, fisici di 16 bit, pagine da 2 KB: quante righe nella tabella normale, quante nell'invertita, quanta memoria al massimo?
  • 93. Indirizzi logici di 32 bit, pagine da 4 KB, 512 MB di memoria fisica: righe della tabella normale e dell'invertita?
  • 100. Pagine da 1 KB, RAM di 256 frame (numero di pagina scritto su 2 byte, tabella più grande di un frame): lunghezza in bit dell'indirizzo fisico?

Teoria: Memoria centrale - allocazione contigua, paginazione e segmentazioneUn programma deve stare in memoria centrale per girare; la MMU traduce a ogni accesso l'indirizzo logico (virtuale) in indirizzo fisico, sommando un registro di rilocazione e controllando il limite; con l'allocazione contigua (partizioni fisse o variabili, first/best/worst fit) si hanno frammentazione interna ed esterna e serve la compattazione; la paginazione divide memoria logica in pagine e memoria fisica in frame della stessa dimensione (potenza di 2), elimina la frammentazione esterna, traduce (p, d) con la tabella delle pagine (PTBR, PTLR) e riduce il costo dei due accessi con il TLB (EAT = h * t + (1 - h) * 2t); le tabelle grandi si dividono in gerarchiche, hash o invertite; lo swapping sposta intere pagine o processi su disco; la segmentazione usa blocchi di lunghezza variabile con coppia (base, limite), eventualmente paginati; Intel IA-32 usa segmentazione con paginazione a due livelli (10+10+12 bit) e IA-64 quattro livelli su 48 bit.Memoria centrale - allocazione contigua, paginazione e segmentazione →.


Le formule

Con indirizzo logico di mm bit, pagine di 2n2^n byte, indirizzo fisico di kk bit:

  • pagine virtuali (righe della tabella normale): 2m−n2^{m-n};
  • frame fisici (righe della tabella invertita): 2k−n2^{k-n};
  • bit del numero di frame: k−nk-n, quindi l'ampiezza di una riga di tabella in byte è ⌈(k−n)/8⌉\lceil(k-n)/8\rceil (si arrotonda ai byte interi);
  • dimensione della tabella: righe ×\times byte per riga.

Esercizio 66

Il frame è 8 KB =213=2^{13} byte, quindi il numero di frame fisici è 229−13=2162^{29-13}=2^{16}: il numero di frame si scrive su 16 bit =2=2 byte per riga. In un frame entrano 213/2=212=40962^{13}/2=2^{12}=4096 righe. La tabella più grande ha quindi al massimo 4096 righe, cioè 4096 pagine, e lo spazio logico è

212⋅213=225 byte=32 MB.2^{12}\cdot2^{13}=2^{25}\text{ byte}=32\text{ MB}.

Esercizi 67 e 69

Il fisico è di 32 bit, lo spazio fisico è la metà del logico: lo spazio logico è di 33 bit, cioè 2332^{33} byte.

67 (pagine da 2202^{20} byte). Righe della tabella: 233/220=213=81922^{33}/2^{20}=2^{13}=8192. Frame fisici: 232/220=2122^{32}/2^{20}=2^{12}, quindi 12 bit per riga: si usano 2 byte. Dimensione massima: 2⋅213=214=16 KB2\cdot2^{13}=2^{14}=\mathbf{16\ KB}.

69 (pagine da 2102^{10} byte). Righe: 233/210=2232^{33}/2^{10}=2^{23}. Frame fisici: 232/210=2222^{32}/2^{10}=2^{22}, quindi 22 bit: servono 3 byte per riga. Dimensione: 3⋅2233\cdot2^{23} byte =24 MB=24\text{ MB}, enormemente più grande di un frame da 1 KB: la tabella non sta in un frame e la paginazione a più livelli è necessaria (si pagina la tabella stessa).

Esercizio 72

  1. Pagine da 16 KB: testo 200/16=12,5→13200/16=12{,}5\to13; dati 100/16=6,25→7100/16=6{,}25\to7; stack 50/16=3,125→450/16=3{,}125\to4 (si arrotonda per eccesso per ogni segmento). Totale 24 pagine: la tabella ha 24 righe.
  2. Offset di 14 bit (16 KB=21416\text{ KB}=2^{14}), restano 32−14=1832-14=18 bit di pagina: 218=256 K2^{18}=256\text{ K} pagine, quindi 232=4 GB2^{32}=\mathbf{4\ GB} di memoria complessiva.

Esercizio 76

L'offset è 12 bit: le pagine sono 212=4 KB2^{12}=\mathbf{4\ KB}. La tabella principale ha 292^9 righe, ognuna punta a una tabella di secondo livello con 2112^{11} righe: le pagine virtuali sono 29⋅211=220≈1062^9\cdot2^{11}=2^{20}\approx10^6.

Esercizio 81

Logico: 64 pagine (262^6) ×\times 1024 parole (2102^{10}): 6+10=166+10=\mathbf{16} bit. Fisico: 32 frame (252^5) ×\times 2102^{10}: 5+10=155+10=\mathbf{15} bit.

Esercizio 82

Pagine da 2 KB =211=2^{11}. Tabella normale: 221−11=210=10242^{21-11}=2^{10}=\mathbf{1024} righe. Tabella invertita: una riga per frame, 216−11=25=322^{16-11}=2^5=\mathbf{32} righe. Memoria fisica massima: 216=642^{16}=64 KB.

Esercizio 93

Pagine da 4 KB =212=2^{12}. Tabella normale: 232−12=220=1 048 5762^{32-12}=2^{20}=\mathbf{1\,048\,576} righe. Tabella invertita: 512 MB/4 KB=229/212=217=128 K=131 072512\text{ MB}/4\text{ KB}=2^{29}/2^{12}=2^{17}=\mathbf{128\text{ K}=131\,072} righe.

Esercizio 100

Pagine da 1 KB =210=2^{10}: 10 bit di offset. 256 frame =28=2^8: 8 bit per il numero di frame. Indirizzo fisico: 8+10=188+10=\mathbf{18} bit. (Il fatto che il numero di pagina sia scritto su 2 byte e la tabella più grande di un frame non cambia il conto.)


Errori tipici

  • Usare gli stessi bit per la pagina virtuale e per il frame: la riga della tabella contiene il numero di frame (k−nk-n bit), non quello di pagina.
  • Dimenticare di arrotondare i byte per riga (22 bit →\to 3 byte) o le pagine di ogni segmento per eccesso.
  • Confondere la dimensione della tabella normale (2m−n2^{m-n} righe) con quella dell'invertita (2k−n2^{k-n} righe).
  • Dedurre il livello di paginazione senza confrontare la tabella con la dimensione del frame (se la tabella supera un frame, serve un secondo livello).

Versione ripasso

Formule. mm bit logici, kk bit fisici, pagina 2n2^n: righe normali 2m−n2^{m-n}; invertita 2k−n2^{k-n}; riga =⌈(k−n)/8⌉=\lceil(k-n)/8\rceil byte; tabella == righe ×\times riga. Logico =log⁡2(pagine)+n=\log_2(\text{pagine})+n; fisico =log⁡2(frame)+n=\log_2(\text{frame})+n.

Risultati. 66: frame 2132^{13}, riga 2 byte, 4096 righe →\to spazio logico 212⋅213=225=322^{12}\cdot2^{13}=2^{25}=32 MB. 67: logico 2332^{33}; pagine 2202^{20}: 2132^{13} righe da 2 byte =16=16 KB. 69: pagine 2102^{10}: 2232^{23} righe da 3 byte =24=24 MB ≫\gg frame →\to più livelli. 72: 13+7+4=2413+7+4=24 pagine; offset 14 bit, 18 di pagina, 232=42^{32}=4 GB. 76: pagine 4 KB, 29+11=2202^{9+11}=2^{20} pagine virtuali. 81: 16 bit logici, 15 fisici. 82: normale 210=10242^{10}=1024, invertita 25=322^5=32, 64 KB. 93: normale 2202^{20}, invertita 229/212=217=1282^{29}/2^{12}=2^{17}=128 K. 100: 8+10=188+10=18 bit.

Passaggi. 66: frame 2132^{13}, numero di frame su 29−13=1629-13=16 bit (2 byte), righe per frame 213/2=2122^{13}/2=2^{12}, spazio logico 212⋅213=2252^{12}\cdot2^{13}=2^{25}. 67: logico 2332^{33}, pagine 2202^{20}: 2132^{13} righe, frame 2122^{12} →\to 2 byte →214=16\to2^{14}=16 KB. 69: pagine 2102^{10}: 2232^{23} righe, frame 2222^{22} →\to 3 byte →24\to24 MB ≫\gg frame →\to più livelli. 72: ⌈200/16⌉+⌈100/16⌉+⌈50/16⌉=13+7+4=24\lceil200/16\rceil+\lceil100/16\rceil+\lceil50/16\rceil=13+7+4=24; offset 14 bit →232\to2^{32} B.

Errori tipici: confondere bit di pagina e di frame nella riga; non arrotondare i byte per riga e le pagine per segmento; scambiare tabella normale e invertita; non confrontare la tabella con il frame per decidere i livelli.

Teoria: Memoria centrale - allocazione contigua, paginazione e segmentazioneUn programma deve stare in memoria centrale per girare; la MMU traduce a ogni accesso l'indirizzo logico (virtuale) in indirizzo fisico, sommando un registro di rilocazione e controllando il limite; con l'allocazione contigua (partizioni fisse o variabili, first/best/worst fit) si hanno frammentazione interna ed esterna e serve la compattazione; la paginazione divide memoria logica in pagine e memoria fisica in frame della stessa dimensione (potenza di 2), elimina la frammentazione esterna, traduce (p, d) con la tabella delle pagine (PTBR, PTLR) e riduce il costo dei due accessi con il TLB (EAT = h * t + (1 - h) * 2t); le tabelle grandi si dividono in gerarchiche, hash o invertite; lo swapping sposta intere pagine o processi su disco; la segmentazione usa blocchi di lunghezza variabile con coppia (base, limite), eventualmente paginati; Intel IA-32 usa segmentazione con paginazione a due livelli (10+10+12 bit) e IA-64 quattro livelli su 48 bit.Memoria centrale - allocazione contigua, paginazione e segmentazione →.

Teoria collegata