Capitolo 4
Gestione della Memoria
4.1 Introduzione alla gestione della memoria
4.2 Swapping
4.3 Memoria virtuale
4.4 Implementazione
4.5 Algoritmi di sostituzione
4.6 Criteri di progetto per la paginazione
4.7 Case study: Unix
4.8 Case study: Windows 2000
1
Gestione della Memoria
• Idealmente la memoria dovrebbe essere
– grande
– veloce
– non volatile
• Gerarchia di memorie
– Disco: capiente, lento, non volatile ed economico
– Memoria principale: volatile, mediamente grande, veloce e
costosa
– Cache: volatile, veloce, piccola e costosa
• La gerarchia di memorie e’ gestita dal “memory
manager” (gestore della memoria)
2
Tipica Gerarchia di Memoria
• Sia il tempo di accesso che la capacità sono
approssimazioni abbastanza grossolane
3
Modelli di gestione della memoria
• Modelli che non spostano i processi dalla RAM
una volta iniziata l’esecuzione
– monoprogrammazione
– multiprogrammazione a partizioni fisse
• Modelli che spostano un processo in esecuzione
da RAM a disco
– swapping
– paginazione
4
Introduzione alla Gestione della Memoria
Ambiente monoprogrammato senza swapping nè paginazione
Tre modi semplici di organizzare la memoria
- un sistema operativo con un solo processo utente
5
Ambiente multiprogrammato con partizioni
fisse
• Partizioni fisse
– Con code dei job distinte per ogni partizione
– Con unica coda dei job
6
Rilocazione e Protezione
• Non si conosce l’istante nel quale il programma verrà
caricato in memoria
– Gli indirizzi dei dati e del codice non possono essere assoluti
– E’ necessario mantenere separati gli spazi di indirizzamento dei
processi
• Registri Base e Limite
– Indirizzo fisico = indirizzo logico + registro base
– Errore se indirizzo logico > registro limite
7
Modelli per la Multiprogrammazione
Degree of multiprogramming
Utilizzazione della CPU in funzione del numero di processi in
memoria
8
Swapping (1)
• Caricamento in partizioni variabili
• L’allocazione della memoria cambia quando:
– I processi vengono caricati in memoria
– I processi rilasciano la memoria
9
Swapping (2)
• Rilocazione e protezione possono usare ancora i
registri base e limite
• Problema: la frammentazione della memoria
– molte aree piccole
– compattazione
• Problema: stabilire quanto spazio allocare per ogni
processo
– area dati, stack
• Problema: come tenere traccia della memoria libera
10
Swapping (3)
a) Allocare dinamicamente memoria nel segmento dati
b) Allocare dinamicamente memoria nello stack e nel
segmento dati
11
Gestione della Memoria con Bit Map
a) Porzione di memoria con 5 processi e 3 aree
libere
•
Le suddivisioni indicano l’unità di allocazione
b) Bit Map corrispondente
c) Lista di Allocazione corrispondente
12
Gestione della Memoria con Liste
Quattro possibili combinazioni di allocazione in seguito
alla terminazione del processo X
13
Allocazione della Memoria
Allocazione di un blocco di memoria di dimensione x:
• First Fit
– Individua la prima porzione di memoria libera di dimensione
x
• Best Fit
– Individua la più piccola porzione di memoria libera di
dimensione  x
3
14
Scarica

Gestione della Memoria