FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Gestione della memoria centrale 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1 Nota di Copyright Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e dalle disposizioni dei trattati internazionali. Il titolo ed i copyright relativi alle slides (ivi inclusi, ma non limitatamente, ogni immagine, fotografia, animazione, video, audio, musica e testo) sono di proprietà dell autore prof. Pier Luca Montessoro, Università degli Studi di Udine. Le slide possono essere riprodotte ed utilizzate liberamente dagli istituti di ricerca, scolastici ed universitari afferenti al Ministero della Pubblica Istruzione e al Ministero dell Università e Ricerca Scientifica e Tecnologica, per scopi istituzionali, non a fine di lucro. In tal caso richiesta alcuna autorizzazione. Ogni altro utilizzo o riproduzione (ivi incluse, ma non limitatamente, le riproduzioni su supporti magnetici, su reti di calcolatori e stampe) in toto o in parte è vietata, se non esplicitamente autorizzata per iscritto, a priori, da parte degli autori. L informazione contenuta in queste slide è ritenuta essere accurata alla data della pubblicazione. Essa è fornita per scopi meramente didattici e non per essere utilizzata in progetti di impianti, prodotti, reti, ecc. In ogni caso essa è soggetta a cambiamenti senza preavviso. L autore non assume alcuna responsabilità per il contenuto di queste slide (ivi incluse, ma non limitatamente, la correttezza, completezza, applicabilità, aggiornamento dell informazione). In ogni caso non può essere dichiarata conformità all informazione contenuta in queste slide. In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono mai essere rimossi e devono essere riportati anche in utilizzi parziali. 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 2 Gestione della memoria per sistemi multiprogrammati Diverse tecniche: partizioni fisse partizioni variabili segmentazione paginazione segmentazione paginazione memoria virtuale 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 3 Obiettivi Massimizzare il numero di processi che possono utilizzare la memoria Minimizzare lo spazio di memoria inutilizzato frammentazione interna: spazio inutilizzato all interno di una partizione frammentazione esterna: partizioni non utilizzate perché troppo piccole Semplicità ed efficienza 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 4 Partizioni fisse Partizioni fisse La memoria fisica viene suddivisa in partizioni predefinite Quando un programma viene caricato in una partizione, gli indirizzi vengono ricalcolati in funzione dell di inizio della partizione Problemi: quante partizioni, quanto grandi? frammentazione interna ed esterna partizioni vuote inizia iniziano,,, PX frammentazione interna: processo P6 terminano e PY frammentazione esterna: processo P7 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 5 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 6 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1
Partizioni variabili Partizioni variabili Le partizioni vengono create man mano che i processi richiedono memoria Gli indirizzi vengono ricalcolati come nel caso delle partizioni fisse Problemi: scelta della partizione da utilizzare frammentazione / ricompattazione la memoria è frammentata, processo termina termina 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 7 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 8 Memoria virtuale 2 aspetti: estensione della memoria RAM utilizzabile dalla CPU oltre la dimensione reale della memoria fisica disponibile (mediante page file) mapping tra gli indirizzi virtuali di ciascun processo in ambiente multitasking: tutti i processi usano lo stesso range di indirizzi, ma per ciascuno la memoria realmente indirizzata è diversa 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 9 Memoria virtuale e indirizzi Spazio di indirizzamento virtuale: determinato dal parallelismo della CPU (es. 32 bit indirizzi da 0 a 4G) Spazio di indirizzamento reale (in cui vengono tradotti gli indirizzi virtuali): determinato dall architettura (numero di fili dell address ) e dalla quantità di RAM Massima quantità di parole di memoria utilizzabili contemporaneamente determinata dal numero di processi attivi e dalla quantità di RAM 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 10 Memory Management Unit (MMU) CPU CU PC IR SP flags MMU ALU. R0 R1 R15 Memoria 0000 0001 0002 0003 0004 0005 0006 0007. INDIRIZZI FISICI Dispositivi di I/O INDIRIZZI VIRTUALI Address Data Control 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 11 Segmento Segmenti e pagine raggruppamento logico di informazioni (subroutine, area dati, ecc.) di lunghezza variabile Page frame partizione della memoria fisica di dimensione fissa e uguale per tutti i page frame Pagina partizione della memoria virtuale del processo di dimensione pari ad un page frame 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 12 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 2
di base del lunghezza del Dati e programmi possono essere suddivisi in segmenti, contenenti parti che possono essere indirizzate relativamente ad un di base. relativo dell' 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 13 Ogni corrisponde ad una entità logica ben definita (Esempi: codice, dati, funzioni di libreria, sistema operativo o parte di esso) Le istruzioni e/o le variabili contenute nel sono identificate tramite il loro relativo all' di base NOTA: Per l'esecuzione di un programma necessario che siano presenti in memoria centrale tutti i segmenti: possono essere caricati quando serve 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 14 Vantaggi Possibilità di rilocare i segmenti: gli indirizzi sono relativi all' di base, e quest'ultimo viene definito al momento del caricamento del in memoria L'hardware che gestisce la memoria virtuale provvede alla traduzione degli indirizzi relativi in indirizzi fisici di memoria Ad ogni possono essere associate delle protezioni (es. sola lettura o esecuzione) in base alla sua funzione di base della segment table del processo segment table virtuale offset del in memoria fisica fisico 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 15 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 16 vs. partizioni variabili CPU: virtuale 000 114 segment table A022 114 0000 A022 CPU: 0000 reale A022 partizione Risolve il problema della frammentazione esterna, esistente nella segmentazione al pari del sistema a partizioni variabili, unificando la dimensione dei blocchi di codice (pagine) che vengono dinamicamente caricati in memoria (page frame) Il programma vede ancora lo spazio di indirizzamento virtuale contiguo all'interno dei segmenti, ma in realtà è immagazzinato in pagine che non sono contigue 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 17 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 18 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 3
Pagine e page frame hanno dimensioni pari a 2 n come nella segmentazione, l viene calcolato sommando l offset all di base della pagina, ma questo avrà gli ultimi n bit a zero, quindi sarà sufficiente accostare i bit 101111000000000 001001011 ---------------------------- 101111001001011 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 19 di base della page table del processo page table m - n bit più significativi dell della pagina in memoria fisica virtuale pagina offset fisico 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 20 segmentazione La paginazione pura può portare a page table molto grosse La segmentazione con paginazione permette di suddividerle in più page table (una page table diversa per ogni ) segment table virtuale pagina determina la page table da usare offset n. 6 A B 4 C b (base address) b 16 mediante la segment table ha permesso di individuare la page table da usare b 20 (0010100) Esempio 0 1 2 page table del 16 64 48 110 001 0100 segm. pagina offset (3 bit) (3 bit) (4 bit) NOTA: n = 4 (pagine da 16 byte) memoria fisica 0 16 A 32 48 C 64 4 B 80 96 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 21 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 22 Gerarchia di memoria file su disco memoria RAM cache memory capacità costo, velocità 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 23 Page file Il meccanismo di traduzione degli indirizzi permette di far vedere ai programmi uno spazio di indirizzamento virtuale, per esempio da 00000000h a FFFFFFFFh (32 bit) La memoria RAM fisicamente presente nel calcolatore avrà normalmente dimensione molto inferiore a quella massima indirizzabile dalla CPU L'uso del page file permette di sfruttare la memoria su disco (più lenta, ma più economica) per espandere la memoria RAM centrale 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 24 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 4
Page fault Quando si legge nella page table l' della pagina, questo può essere marcato invalido (bit aggiuntivi oltra all di pagina in memoria fisica) Ciò significa che la pagina presente in memoria centrale ed è necessario leggerla dal page file su disco Troppi page fault provocano una degradazione delle prestazioni del sistema, esiste il problema del bilanciamento tra dimensione del page file e capacità della memoria centrale 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 25 Algoritmo di gestione dei page fault Least Recently Used (LRU), altrimenti detto FIFO modificato. pagefile pagina a cui è stato fatto accesso lista delle pagine in memoria solo se la pagina è stata modificata 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 26 Attributi di pagina In corrispondenza di ogni pagina, nella page table sono contenute diverse informazioni: bit di presenza (in memoria centrale) se è presente, l' della pagina di memoria, altrimenti, l' all'interno del page file informazioni di protezione (ereditate dal di cui attualmente fa parte) informazioni relative all'utilizzo e alla modifica del contenuto 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 27 Swapping I primi sistemi UNIX, per liberare memoria centrale, trasferivano su memoria secondaria interi processi, e non soltanto parti di essi (pagine). Questo modo di procedere è detto swapping I sistemi con paginazione usano ancora lo swapping per liberare memoria quando il carico inizia ad essere eccessivo. In queste condizioni il sistema è impegnato quasi al 100% a caricare e scaricare pagine in memoria (thrashing) I processi vengono nuovamente caricati in memoria quando è riattivarli 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 28 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 5