1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non...

21
1 Gestione della Memoria

Transcript of 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non...

Page 1: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

1

Gestione della Memoria

Page 2: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

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)

Page 3: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

3

Tipica Gerarchia di Memoria

• Sia il tempo di accesso che la capacità sono approssimazioni abbastanza grossolane

Page 4: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

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

Page 5: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

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

Page 6: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

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

Page 7: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

7

Ambiente multiprogrammato con partizioni fisse

• Partizioni fisse– Con code dei job distinte per ogni partizione– Con unica coda dei job

Page 8: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

8

Swapping

• Caricamento in partizioni variabili• L’allocazione della memoria cambia quando:

– I processi vengono caricati in memoria– I processi rilasciano la memoria

Page 9: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

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

Page 10: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

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

Page 11: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

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

Page 12: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

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

Page 13: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

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

Page 14: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

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

Page 15: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

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

Page 16: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

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

Page 17: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

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

Page 18: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

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

Page 19: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

19

Algoritmo di Sostituzione Ottimo

• Sostituisce la pagina che sarà riferita nell’istante più lontano nel tempo– Ottimo ma non realizzabile

Page 20: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

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

Page 21: 1 Gestione della Memoria. 2 Idealmente la memoria dovrebbe essere –grande –veloce –non volatile Gerarchia di memorie –Disco: capiente, lento, non volatile.

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