1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non...
-
Upload
aldobrandino-di-gregorio -
Category
Documents
-
view
214 -
download
0
Transcript of 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non...
1
Gestione della Memoria
2
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)
3
Tipica Gerarchia di Memoria
• Sia il tempo di accesso che la capacità sono approssimazioni abbastanza grossolane
4
Gestione della memoria
• Tutti i programmi che compongono il SO ed i programmi applicativi attivi usano contemporaneamente la RAM
• Il gestore della memoria si preoccupa di fare condividere la RAM ai vari processi in esecuzione in modo che :– ogni processo abbia il suo spazio privato distinto dagli
altri (e inaccessibile agli altri)– ogni processo abbia abbastanza memoria per eseguire il
proprio algoritmo e raccogliere i suoi dati
5
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
6
Introduzione alla Gestione della MemoriaAmbiente monoprogrammato senza swapping nè paginazione
Tre modi semplici di organizzare la memoria- un sistema operativo con un solo processo utente
7
Ambiente multiprogrammato con partizioni fisse
• Partizioni fisse– Con code dei job distinte per ogni partizione– Con unica coda dei job
8
Swapping
• Caricamento in partizioni variabili• L’allocazione della memoria cambia quando:
– I processi vengono caricati in memoria– I processi rilasciano la memoria
9
Swapping• 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
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
11
Gestione della memoria • Le strategie viste finora
– ricopiano interamente lo spazio di indirizzamento di un processo P da memoria secondaria a RAM quando P va in esecuzione
Sistema Operativo
Spazio Ind processo 1
Area riservata, non accessibilein modalità utente
0
AmpiezzaRAM - 1
Spazio Ind processo 2
RAM vuota
12
Gestione della memoria • Problemi:
– limite all’ampiezza dello spazio di indirizzamento• Attualmente ogni processo usa almeno 4GB di spazio di indirizzamento, con RAM assai più piccole…
– memoria sottoutilizzata • aree dello spazio di indirizzamento che non sono utilizzate occupano RAM
• Soluzione: memoria virtuale– ad ogni istante carico in RAM solo le parti di SI che servono per una certa fase dell’esecuzione
– diverse soluzioni: vedremo la paginazione
13
Paginazione: idea base • Lo spazio di indirizzamento di ogni processo è diviso
in ‘fette’ (pagine logiche) tutte della stessa ampiezza
01234..
Processo 1
Pagina Logica: ‘fetta’ dello spazio di indirizzamento (1-4K)
01234..
Processo 2
01234..
Processo 3
14
Paginazione: idea base – Anche la RAM disponibile per i processi utente è
divisa in pagine della stessa ampiezza (pagine fisiche)
Sistema Operativo
RAM vuota
RAM vuota
RAM vuotaRAM vuota
Pagina Fisica: ‘fetta’ dello RAM stessa ampiezza della pagina logica
15
Paginazione: idea base – Ad ogni istante solo le pagine necessarie per i
processi in esecuzione sono caricate in RAM (si usa la località!)
Sistema Operativo
RAM vuota
RAM vuota
01234..
Processo 1
01234..
Processo 2
01234..
Processo 3
16
Paginazione: problema • Esecuzione (corretta) dei programmi utente
parzialmente caricati:– bloccare automaticamente accessi ad aree non
caricate in RAM (page fault)– aggiornare automaticamente l’insieme delle pagine
in memoria • scaricando/caricando da memoria secondaria quelle
necessarie in una certa fase
17
Paginazione • Cosa succede se la pagina non è in memoria?
– Presente-Assente = 0, si genera un page fault– l’esecuzione del processo viene bloccata– va in esecuzione il gestore della memoria– la pagina logica viene localizzata su disco e caricata in RAM– se la RAM è piena si individua una pagina vittima da
scaricare dalla RAM – algoritmi di sostituzione : servono a selezionare la pagina
vittima
18
Algoritmi di Sostituzione
• Il page fault forza la scelta su quale pagina deve essere rimossa– Libera memoria per la pagina da caricare
• Pagine modificate devono essere salvate– Quelle non modificate vengono semplicemente
sovrascritte
• Deve evitare di selezionare una pagina riferita spesso– Potrebbe essere necessario ricaricarla in breve tempo
19
Algoritmo di Sostituzione Ottimo
• Sostituisce la pagina che sarà riferita nell’istante più lontano nel tempo– Ottimo ma non realizzabile
20
Least Recently Used (LRU)• Assume che le pagine usate di recente siano riferite di
nuovo in breve tempo (località temporale)– Scarica le pagine inutilizzate da più tempo
• Implementazione diretta: mantiene una lista di pagine– Le pagine usate più di recente in cima– Aggiorna la lista ad ogni riferimento della memoria!!
• Impl. Approssimata: mantiene un contatore per ogni descrittore della tabella delle pagine
21
Algoritmo di Sostituzione “Working Set” • Working set (idea di base)
– insieme di pagine necessarie ad un processo P in una fase della propria elaborazione• es. due array globali A,B (dati), più istruzioni di copia (testo)
• Paginazione su domanda (a richiesta)– P passa in esecuzione senza alcuna pagina in memoria– le pagine vengono caricate quando avviene un page fault– lento finché non è stato caricato il working set
• Pre-paginazione (prepaging)– il sistema tiene traccia del working set – l’ultimo working set di P viene caricato in memoria prima di riavviare il processo