1 (es. 1) Consideriamo un processo con m frame inizialmente vuoti. La stringa di riferimento è lunga p e contiene riferimenti a n pagine diverse. Per un qualsiasi algoritmo di rimpiazzamento: a) qual è il numero minimo di page fault? n b) qual è il numero massimo di page fault? p 2 (es. 2) un computer ha uno spazio degli indirizzi logici di 2 32 byte. Il computer ha 2 18 byte di memoria fisica. La memoria virtuale è paginata, con pagine di 4096 byte. Un processo genera l indirizzo 11123456 (esadecimale). Come viene generato il corrispondente indirizzo fisico? 0001 0001 0001 0010 0011 0100 0101 0110 1 pagina = 2 12 byte PT = 2 20. I 12 bit meno significativi sono usati come offset nella pagina. I 20 bit rimanenti sono usati come offset all interno della PT 3 (es. 3) In un sistema con demand paging, la PT è tenuta in appositi registri. Ci vogliono 8 millisec per gestire un page fault nel caso migliore, e 20 millisec nel caso peggiore. L accesso in RAM richiede 100 nanosec. Un pagina vittima ha il dirty bit a 1 nel 70% dei casi. Qual è la frequenza massima accettabile di page fault per avere un eat massimo di 200 nanosecondi? (esprimete i tempi in microsec.) 1
4 (es. 3) tempo di page fault = 8 millisec nel 30% dei casi, 20 millisec nel 70% dei casi. Access time = 100 nansosec. 0.2 µsec = (1 P) 0.1 µ sec + 0.3 P 8 millisec + 0.7 P 20 millisec 0.1 0.1 P + 2400 P + 14000 P P 0.000006 (un page fault ogni 164000 riferimenti) 5 (es. 4) quali di questi algoritmi: Optimal, FIFO, Seconda chance, LRU, soffrono della anomalia di belady? FIFO e Seconda chance 6 (es. 5) quali sono i vantaggi della memoria virtuale? Quali gli svantaggi? svantaggi: è necessario dell HW più sofisticato, e si hanno tempi di accesso in RAM peggiori, e si occupa una parte dell HD vantaggi: utilizzo migliore della memoria principale, spazi di indirizzamento logico maggiori di quello fisico, migliore produttività del sistema 2
7 (es. 6) In un sistema il tempo di accesso in memoria è di 1 µsec. Le pagine sono fatte di 1000 byte, e l HD ruota a 3000 giri al minuto, trasferendo 1 milione di byte al secondo. Si osserva quanto segue: 1% delle istruzioni accede locazioni di una pagina non in memoria associativa (il cui tempo di accesso è trascurabile) di questo 1%, l 80% degli accessi è a una pagina comunque in memoria primaria quando un riferimento produce un page fault, la pagina vittima è stata modificata nel 50% dei casi. 8 (es. 6) Calcolate l eat del sistema, assumendo che ci sia un solo processo attivo e che la CPU sia idle durante il trasferimento dal disco eat = (0.99 1 µsec) + (0.008 2 µsec) + 0.001 2 (10000 µsec + 1000 µsec) + 0.001 (10000 µsec + 1000 µsec) = (0.99 + 0.016 +22 +11) µsec = 34 µsec scrittura + lettura altra pagina in RAM T. medio di posiz. = (60 sec.)/(3000 2) solo lettura 9 (es. 7) In un sistema con demand paging vengono fatte le seguenti rilevazioni sulla percentuale di utilizzo: Utilizzo della CPU: 20% Disco di swap attivo: 97.7% altri device di I/O: 5% 3
10 (es. 7) Quali delle seguenti azioni possono (ragionevolmente) migliorare l utilizzo della CPU? Installare una CPU più veloce no Aumentare l area di swap no Aumentare il grado di multiprogrammazione no 11 Diminuire il grado di multiprogrammazione si Installare più RAM può aiutare, poiché più pagine possono rimanere in RAM senza provocare page fault Installare un HD più veloce può aiutare, poiché le pagine mancanti possono arrivare in RAM più velocemente 12 Usare la prepaginazione non si può dire a priori aumentare la dimensione delle pagine Pagine più grosse provocano meno page fault, se i processi hanno una località molto forte (ad esempio se i dati sono acceduti in modo sequenziale). Se invece i dati sono acceduti in modo casuale, vengono generati molti riferimenti a pagine diverse, e meno pagine possono stare in RAM se queste sono più grosse, provocando più page fault 4
13 (es. 8) dire quanti page fault si verificano con 1, 2, 3, 4, 5, 6, 7 frame disponibili, usando LRU, FIFO e OPT, per la seguente stringa di riferimento: 1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 2, 3, 7, 6, 3, 2, 1, 2, 3, 6 14 (es. 8): 1, 2, 3, 4, 2, 1, 5, 6, 2, 1, 2, 3, 7, 6, 3, 2, 1, 2, 3, 6 frames LRU FIFO OPT 1 20 20 20 2 18 18 15 3 15 16 11 4 10 14 8 5 8 10 7 6 7 9 7 7 7 7 7 15 (es. 9) Supponete una politica di rimpiazzamento in cui a intervalli regolari viene rimossa una pagina se questa non è stata usata dall intervallo precedente. Che vantaggi/svantaggi si hanno rispetto ad una politica che usi LRU o seconda chance chiamati solo in caso di page fault? Il sistema non tiene in memoria pagine non in uso, anche se non si verificano page fault. In caso di page fault, aumentano quindi le probabilità che si trovi un frame libero. Se però nessuna pagina viene mai scaricata, è probabile che la RAM sia sottodimensionata. 5
16 (es. 10) In un sistema con demand paging, l area di swap ha un tempo di accesso e di trasferimento di 5 millisec. Gli indirizzi sono tradotti mediante una PT in RAM, e l access time in RAM è di 1 µsec. Con l uso di una memoria associativa, la traduzione di un indirizzo logico in fisico si riduce ad un solo accesso in RAM, l hit rate è dell 80%, mentre dei restanti accessi, il 10% (ossia il 2% del totale) causano page fault. Calcolare l effective access time. eat = 0.8 1 µsec + 0.18 2 µ sec + 0.02 5002 µ sec = 101.2 µ sec 17 (es. 11) In un sistema con demand paging il grado di multiprogrammazione è stato fissato a 4. In situazioni diverse, alcune misure hanno dato i seguenti risultati: a) utilizzo CPU: 13% -- utilizzo del disco: 97% b) utilizzo CPU: 87% -- utilizzo del disco: 3% c) utilizzo CPU: 13% -- utilizzo del disco: 3% Cosa sta succendendo nei tre casi? Si potrebbe aumentare il grado di multiprogrammazione per migliorare l uso della CPU? (es. 11) : a) utilizzo CPU: 13% -- utilizzo del disco: 97% b) utilizzo CPU: 87% -- utilizzo del disco: 3% c) utilizzo CPU: 13% -- utilizzo del disco: 3% 18 a) Thrashing b) La CPU è sufficientemente utilizzata. Si può comunque tentare di alzare il grado di multiprogrammazione, poiché il numero di page fault è sicuramente basso c) Sistema sottoutilizzato: aumentare il grado di multiprogrammazione 6
(es. 12) In un calcolatore la memoria virtuale è di 32K, e la memoria fisica è di 16K. Le pagine del sistema sono di 2K. Si consideri la PT sottostante, e si dia l indirizzo fisico corrispondente a ciascuno dei seguenti indirizzi virtuali: 565; 4100; 6150 pagina frame valido/inv. 0 3 v 1 6 v 2 x i 3 2 v 4 x i 19 20 565 = (0 2048) + 565; (3 2048) + 565 = 6709 ; 4100 = (2 2048) + 4; page fault; 6150 = (3 2048) + 6; (2 2048) + 6 = 4102 ; pagina frame valido/inv. 0 3 v 1 6 v 2 x i 3 2 v 4 x i 21 (es. 13) Un sistema ha le seguenti caratteristiche: È in grado di indirizzare un milione di frames Usa 30 bit per scrivere un indirizzo logico L offset più grande in un indirizzo è 1FF Il sistema dovrebbe prevedere un meccanismo di prevenzione del thrashing? 7
22 Per dare la risposta occorre sapere se lo spazio di indirizzamento logico è più grande dello spazio di indirizzamento fisico. La dimensione di una pagina/frame è di 2 9 byte, dato che l offset più grande è scritto su 9 bit (infatti, 1FF = 111111111) Quindi, il sistema è in grado di indirizzare 2 (30-9) pagine, che sono quindi in numero maggiore dei frame. Alternativamente si può osservare che essendo 2 20 i frame indirizzabili, un indirizzo fisico è scritto su 20+9 bit e quindi lo spazio di indirizzamento logico è più grande di quello fisico, ed è necessario implementare la memoria virtuale, e quindi un meccanismo di prevezione del thrashing Il sistema deve usare una paginazione a più livelli? 23 Ecco di nuovo i dati del problema: È in grado di indirizzare un milione di frames Usa 30 bit per scrivere un indirizzo logico L offset più grande in un indirizzo è 1FF Il sistema deve usare una paginazione a più livelli? 24 La PT più grande del sistema ha 2 21 entry, e se usiamo 3 byte per ciascuna entry (in realtà sarebbero sufficienti 20 bit), la PT più grande occupa 2 21 3 = 6 megabyte Poiché un frame è grande solo 2 9 byte, sarebbero necessari (2 21 3)/ 2 9 12K frame per ospitare la PT, che quindi è meglio paginare usando una PT esterna. 8
È sufficiente una paginazione a 2 livelli? 25 Ecco di nuovo i dati del problema: È in grado di indirizzare un milione di frames Usa 30 bit per scrivere un indirizzo logico L offset più grande in un indirizzo è 1FF Dimensione della PT (dalla domanda precedente): (2 21 3) / 2 9 = 2 12 3 = 12288 frame È sufficiente una paginazione a 2 livelli? Calcoliamo la dimensione massima della PT esterna. 26 La PT interna sta in: (2 21 3) / 2 9 = 2 12 3 = 12288 frame Per cui la PT esterna deve avere 12288 entry da 3 byte ciascuna, e sarà contenuta in: (2 12 3) 3 / 2 9 = 72 frame. In linea di principio sarebbe necessario paginare anche la PT esterna, in modo da non dover trovare 72 frame adiacenti per memorizzarla. Quale dimensione minima dovrebbero avere le pagine per non dover usare una paginazione a più livelli (supponete di usare 4 byte per ogni entry della PT)? 27 Ecco di nuovo i dati del problema: È in grado di indirizzare un milione di frames Usa 30 bit per scrivere un indirizzo logico L offset più grande in un indirizzo è 1FF 9
28 La PT più grande deve poter essere contenuta in un unico frame. Supponiamo di usare 4 byte per ogni entry di una PT. Poniamo 30 = m+n, dove: -- m = numero di bit usati per il numero di pagina -- n = numero di bit usati per l offset allora il numero di entry della PT più grande moltiplicato per la dimensione di una entry dovrà poter essere contenuto in una pagina, ossia: 2 m 2 2 2 n, e quindi: m + 2 n risolvendo quindi il sistema: 30 = m + n m + 2 n Si ricava: n 16. Ne segue che le pagine devono avere la dimensione minima di 2 16 = 64 Kbyte 10