© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1
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) 2 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 non è 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.
Nota di Copyright
Fondamenti di Informatica - Gestione della memoria centrale
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 3
Gestione della memoria per sistemi multiprogrammati
• Diverse tecniche:
– partizioni fisse – partizioni variabili – segmentazione – paginazione
– segmentazione + paginazione
memoria virtuale
Fondamenti di Informatica - Gestione della memoria centrale
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 4
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
Fondamenti di Informatica - Gestione della memoria centrale
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’indirizzo di inizio della partizione
• Problemi:
– quante partizioni, quanto grandi?
– frammentazione interna ed esterna
Fondamenti di Informatica - Gestione della memoria centrale
Partizioni fisse
inizia P1
PX frammen- tazione interna:
non è possibile caricare il processo P6
P1 P1
P2 P4 P3 P5
PY frammen- tazione esterna:
non è possibile caricare il processo P7 partizioni
vuote
iniziano P2, P3, P4, P5
P1 P3 P5 terminano
P2 e P4
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 7
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
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 8
Partizioni variabili
P1 P1
P2 P1 P2 P3
P1
P3
P2 termina
P1
P3 P4
P3 P4
P1 termina
P5
la memoria è frammentata,
non è possibile caricare il processo P5
Fondamenti di Informatica - Gestione della memoria centrale
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 9
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
Fondamenti di Informatica - Gestione della memoria centrale
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 10
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 bus) e dalla quantità di RAM
• Massima quantità di parole di memoria utilizzabili contemporaneamente
– determinata dal numero di processi attivi e dalla quantità di RAM
Fondamenti di Informatica - Gestione della memoria centrale
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 11
Memory Management Unit (MMU)
Address bus CPU
CU ALU
PC
IR R0
R1 R15
Memoria Dispositivi di I/O 0000
0001 0002 0003 0004 0005 0006 0007...
...
Data bus Control bus SP
flags
INDIRIZZI FISICI INDIRIZZI VIRTUALI MMU
Fondamenti di Informatica - Gestione della memoria centrale
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 12
Segmenti e pagine
• Segmento
– 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) 13
indirizzo di base del segmento
lunghezza del segmento
indirizzo relativo dell'istruzione istruzione
Segmentazione
• Dati e programmi possono essere suddivisi in segmenti, contenenti parti che possono essere indirizzate relativamente ad un indirizzo di base.
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 14
Segmentazione
• Ogni segmento 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 segmento sono identificate tramite il loro indirizzo relativo all'indirizzo di base
• NOTA: Per l'esecuzione di un programma non è necessario che siano presenti in memoria centrale tutti i segmenti: possono essere caricati quando serve
Fondamenti di Informatica - Gestione della memoria centrale
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 15
Vantaggi
• Possibilità di rilocare i segmenti: gli indirizzi sono relativi all'indirizzo di base, e
quest'ultimo viene definito al momento del caricamento del segmento in memoria
• L'hardware che gestisce la memoria virtuale provvede alla traduzione degli indirizzi relativi in indirizzi fisici di memoria
• Ad ogni segmento possono essere associate delle protezioni (es. sola lettura o
esecuzione) in base alla sua funzione
Fondamenti di Informatica - Gestione della memoria centrale
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 16
Segmentazione
PID
indirizzo di base della segment table del processo
segment table
segmento offset indirizzo virtuale
+
indirizzo fisico + indirizzo del segmento
in memoria fisica
Fondamenti di Informatica - Gestione della memoria centrale
Segmentazione vs. partizioni variabili
istruzione
segmento
0000
A022 A136 000 114
segment table
CPU:
indirizzo virtuale
A022 + 114 istruzione
partizione
0000
A022 A136 A136 CPU:
indirizzo reale
Fondamenti di Informatica - Gestione della memoria centrale
Paginazione
• 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) 19
Paginazione
• Pagine e page frame hanno dimensioni pari a 2
n– come nella segmentazione, l’indirizzo viene calcolato sommando l’offset all’indirizzo 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) 20
Paginazione
PID
indirizzo di base della page table del processo
page table
pagina offset
indirizzo virtuale
+
m - n bit più significativi dell’indirizzo della pagina in memoria fisica
indirizzo fisico
Fondamenti di Informatica - Gestione della memoria centrale
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 21
Paginazione + 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 segmento)
pagina offset
indirizzo virtuale segmento
determina la page table da usare PID
segment table
Fondamenti di Informatica - Gestione della memoria centrale
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 22
A
C
A
C
memoria fisica
NOTA: n = 4 (pagine da 16 byte) b (base address)
b + 20 (0010100) segmento
n. 6
offset (4 bit) pagina
(3 bit) 0 1 2
B
0 16 32 48 64
80 96 16
48 64
4
B 4
b + 16
Esempio
page table del segmento
110 001 0100 segm.
(3 bit) mediante la
segment table ha permesso di individuare la page table da usare
Fondamenti di Informatica - Gestione della memoria centrale
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 23
file su disco
memoria RAM
cache memory
capacità
costo, velocità
Gerarchia di memoria
Fondamenti di Informatica - Gestione della memoria centrale
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 24
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) 25
Page fault
• Quando si legge nella page table l'indirizzo della pagina, questo può essere marcato invalido (bit aggiuntivi oltra all’indirizzo di pagina in memoria fisica)
• Ciò significa che la pagina non è 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) 26
solo se la pagina è stata modificata pagina a cui è stato fatto accesso
pagefile
lista delle pagine in memoria
Algoritmo di gestione dei page fault
• Least Recently Used (LRU), altrimenti detto FIFO modificato.
Fondamenti di Informatica - Gestione della memoria centrale
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 27
Attributi di pagina
• In corrispondenza di ogni pagina, nella page table sono contenute diverse informazioni:
– bit di presenza (in memoria centrale)
– se è presente, l'indirizzo della pagina di memoria, altrimenti, l'indirizzo all'interno del page file – informazioni di protezione (ereditate dal segmento
di cui attualmente fa parte)
– informazioni relative all'utilizzo e alla modifica del contenuto
Fondamenti di Informatica - Gestione della memoria centrale
© 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 28
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 è possibile riattivarli