41
1 1 Il Livello di Sistema Operativo: la memoria virtuale A cura di: Donatella Sciuto * , Luca Breveglieri * , Giacomo Buonanno # , Giuseppe Pozzi * * Dipartimento di Elettronica e Informazione, Politecnico di Milano # LIUC, Castellanza (Va) sciuto/brevegli/[email protected] [email protected] 2 Sistema operativo Livello di astrazione superiore rispetto al livello ISA della macchina Mette a disposizione del programmatore una maggior varietà di funzionalità e istruzioni. L’insieme di “istruzioni” messo a disposizione dal livello del sistema operativo corrisponde all’insieme di “istruzioni” disponibili al programmatore delle applicazioni

Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

1

1

Il Livello di Sistema Operativo:la memoria virtuale

A cura di:Donatella Sciuto*, Luca Breveglieri*,

Giacomo Buonanno#, Giuseppe Pozzi*

*Dipartimento di Elettronica e Informazione, Politecnico di Milano

#LIUC, Castellanza (Va)

sciuto/brevegli/[email protected]@liuc.it

2

Sistema operativo

• Livello di astrazione superiore rispetto al livello ISA della macchina

• Mette a disposizione del programmatore una maggior varietà di funzionalità e istruzioni.

• L’insieme di “istruzioni” messo a disposizione dal livello del sistema operativo corrisponde all’insieme di “istruzioni” disponibili al programmatore delle applicazioni

Page 2: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

4

7

Overlays

• Il programmatore era responsabile della creazione degli overlays, della loro posizione nella memoria secondaria, e caricando direttamente gli overlay in memoria

• Gestione completa degli overlays svolta manualmente dal programmatore

• Nel 1961 proposta di un metodo di gestione automatica del processo di overlays, in modo trasparente al programmatore: la memoria virtuale

8

Il concetto di memoria virtuale• Separare il concetto di spazio di

indirizzamento e locazioni di memoria• Spazio di indirizzamento = numero di parole

indirizzabili � Dipende esclusivamente dal numero di bit

dell’indirizzo e non dal numero di parole di memoria effettivamente disponibile

� Se la dimensione della memoria principale è minore dello spazio indirizzabile, prima dell’esistenza della memoria virtuale una parte degli indirizzi non sarebbe ststa utilizzabile a causa della corrispondenza uno a uno tra indirizzi e locazioni di memoria.

Page 3: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

5

9

Spazio di indirizzamento

• Separazione tra spazio di indirizzamento e locazioni di memoria

• Esempio: � 16 bit di indirizzo, memoria principale di

4K parole� In ogni istante di tempo è possibile

accedere a sole 4096 parole di memoria, ma non necessariamente corrispondenti agli indirizzi 0-4095.

10

Traduzione degli indirizzi

Quando si accede all’indirizzo 4096, questo viene automaticamente tradotto nell’indirizzo 0 della memoria principale, 4097 nell’indirizzo 1 .....8191 in 4095.

Spazio di indirizzamento

0

4096

8191

Memoria principale

Mapping4K parole

0

4095

Page 4: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

6

11

Memoria virtuale• Cosa succede se un programma chiede di

saltare dall’indirizzo 2500 all’indirizzo 8190?• Con il meccanismo di memoria virtuale:

� I contenuti della memoria principale vengono salvati su disco

� Le parole agli indirizzi da 4096 a 8191 vengono copiate in memoria principale tra gli indirizzi 0 e 4095

� L’esecuzione del programma prosegue come se non fosse successo nulla

• Meccanismo di overlay automatico: paginazione

12

Paginazione

• Blocchi di dimensione fissa (es. 4K) trasferiti tra memoria principale e memoria secondaria: pagine

• Oggi: metodo più sofisticato per la traduzione dello spazio di indirizzamento sugli indirizzi di memoria reali

Page 5: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

7

13

Memoria virtuale• Indirizzi a cui fa riferimento il programma in

esecuzione: indirizzi virtuali• Indirizzi di memoria centrale: indirizzi fisici• Meccanismo di traduzione automatico degli

indirizzi virtuali in indirizzi fisici• Con la memoria virtuale, la CPU produce un

indirizzo virtuale, che viene tradotto da una combinazione di elementi hardware e software in un indirizzo fisico, che può essere utilizzato per accedere alla memoria principale: traduzione dell’indirizzo (memory mapping)

14

Obiettivi della memoria virtuale

• consentire una condivisione efficiente della memoria da parte di più programmi

• rimuovere il carico di lavoro del programmatore provocato dalla limitata quantità di memoria disponibile� La paginazione è trasparente al programmatore� Il programmatore può scrivere i propri programmi

pensando di avere a disposizione l’intero spazio di indirizzamento virtuale indipendentemente dalle dimensioni effettive della memoria centrale

Page 6: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

8

15

Rilocazione

• Meccanismo per la fase di caricamento di un programma prima dell’esecuzione: gli indirizzi virtuali utilizzati dal programma vengono tradotti in indirizzi fisici diversi prima che possano essere utilizzati per accedere alla memoria.

• Questa traduzione consente il caricamento del programma in una qualsiasi locazione della memoria fisica.

16

Rilocazione

• Tutti i meccanismi di gestione della memoria virtuale rilocano il programma come un insieme di blocchi di dimensione fissa (pagine), eliminando così la necessità di individuare un blocco di memoria contigua sufficientemente ampio da potervi caricare il programma;

• Il sistema operativo ha solo bisogno di trovare un numero sufficiente di pagine disponibili nella memoria fisica.

Page 7: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

9

17

Implementazione della paginazione

• Lo spazio di indirizzamento virtuale è suddiviso in un numero intero di pagine di dimensione fissa

• Dimensioni di pagina tipici: da 512 byte a 64 Kbyte

• Dimensione della pagina: sempre una potenza di 2.

18

Implementazione della paginazione

• Lo spazio di indirizzamento fisico (ossia della memoria centrale) viene suddiviso in un numero intero di pagine di uguale dimensione di quelle utilizzate per lo spazio di indirizzamento virtuale.

• Ogni pagina della memoria può quindi contenere esattamente una pagina dello spazio di indirizzamento virtuale.

• Pagina della memoria: page frame

Page 8: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

10

19

Memoria virtuale Indirizzi fisici

Indirizzi di disco

IndirizziIndirizzi virtuali

Page frame

20

Esempio

• Spazio di indirizzamento virtuale: indirizzi da 32 bit � 232 indirizzi diversi

• Dimensione di pagina: 4K parole � 212 indirizzi• Numero di pagine dello spazio di

indirizzamento virtuale = 232 / 212 = 220 pagine• Spazio di indirizzamento fisico: 4M parole �

222 indirizzi • Numero di pagine dello spazio di

indirizzamento fisico = 222 / 212 = 210 pagine

Page 9: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

11

21

Traduzione dell’indirizzo virtuale in indirizzo fisico

Traduzione

Spiazzamento pagina Numero di pagina virtuale

11 10 9 8 …… 3 2 1 0 31 30 29 28 27 ………… 15 14 13 12

Indirizzo fisico

Indirizzo virtuale

Spiazzamento pagina Numero di pagina fisica

11 10 9 8 …… 3 2 1 0 21 20 ………… 15 14 13 12

22

Memory Management Unit

• La traduzione del numero di pagina virtuale nel corrispondente numero di pagina fisica avviene mediante un dispositivo, la Memory Management Unit (MMU)

• Può essere posizionata nel chip della CPU, o in un chip separato

Page 10: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

12

23

Tabella delle pagine

• La MMU contiene una tabella delle pagine, con una riga per ogni pagina dello spazio di indirizzamento virtuale

• Ogni riga è identificata dal numero di pagina virtuale e contiene due campi:� 1 bit VALIDO che indica se la pagina

corrispondente è presente/assente in memoria

� Il numero di pagina fisica corrispondente

24

Costruzione dell’indirizzo fisico

Spiazzamento pagina Registro della tabella delle pagine

Numero di pagina virtuale

Se è 0 allora la pagina non è presente in memoria

Numero di pagina fisica Valido

11 10 9 8 …… 3 2 1 0 31 30 29 28 27 ………… 15 14 13 12Indirizzo virtuale

Indirizzo fisico

Tabella delle pagine

Spiazzamento pagina Numero di pagina fisico

1220

18

11 10 9 8 …… 3 2 1 0 21 20 …… 15 14 13 12

Page 11: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

13

25

Procedura di calcolo dell’indirizzo fisico

1. MMU riceve l’indirizzo virtuale da 32 bit

2. Separa i 12 bit meno significativi che rappresentano lo spiazzamento all’interno della pagina di 4K

3. I 20 bit più significativi rappresentano il numero di pagina virtuale

4. Il numero di pagina virtuale identifica la riga della tabella delle pagine

26

Procedura di calcolo dell’indirizzo fisico

5. La MMU verifica se la pagina richiesta è presente in memoria centrale esaminando il bit di VALIDO.

6. Se il bit=1 la pagina è presente in memoria� Legge il valore contenuto nella tabella che

rappresenta il numero di pagina fisica e lo affianca come bit più significativi all’offset ottenendo l’indirizzo fisico di memoria da cercare.

7. Else si verifica un errore di pagina (page fault)

Page 12: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

14

27

Errore di pagina• Si verifica quando il bit di validità per una pagina

virtuale è = 0: il controllo deve essere passato al sistema operativo con il meccanismo dell’eccezione.

• Una volta che il sistema operativo ha ottenuto il controllo, deve rintracciare la pagina nel livello inferiore della gerarchia (di solito un disco magnetico) e decidere dove, nella memoria fisica, deve mettere la pagina richiesta.

• Per individuare la posizione della pagina sul disco ènecessaria una struttura dati che ne registra la posizione

28

Errore di pagina

• Deve inserire la corrispondenza tra indirizzo di pagina virtuale e di pagina fisica nella tabella delle pagine

• Ripetere l’esecuzione dell’istruzione che aveva causato l’errore di pagina

Page 13: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

15

29

Tabella delle pagine

Memorizzazione su disco

Tabella delle pagine Memoria fisica

11

Valido Pagina fisica o indirizzo su disco

11

10

01

11

10

Numero dellapagina virtuale

30

Traduzione degli indirizzi

Processore

Spazio ind. virtuale

TraduzioneIndirizzi

Gestione errore di pagina

MemoriaPrincipale

MemoriaSecondaria

a

aa'

0

Errore di pagina

Indirizzo fisico Trasferimento gestito dal SO

V = {0, 1, . . . , n - 1} spazio indirizzi virtualiM = {0, 1, . . . , m - 1} spazio indirizzi fisici

MAP: V --> M U {Ø} f. traduzione degli indirizzi

n > m

MAP(a) = a' se il dato all’ind. virtuale a è presente all’ind. fisico a' e a' in M

= Ø se il dato all’ind. virtuale a non è presente in M

Page 14: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

16

31

Progetto di un sistema di memoria virtuale

• Problemi principali:� Dimensione delle pagine (unità trasferita tra

memoria principale e memoria secondaria)� Strategia di caricamento delle pagine (su

richiesta/working set)� Politica di sostituzione: nel caso di errore di

pagina, se la memoria centrale non ha page frame disponibile come scegliere la pagina da sostituire per far posto alla nuova pagina

� Politica di posizionamento delle pagine in memoria centrale

32

Paginazione su richiesta• Esecuzione di un nuovo programma

� La tabella delle pagine viene invalidata per indicare che nessuna pagina si trova in memoria

� Quando la CPU cerca di accedere alla prima istruzione si verifica un errore di pagina e la prima pagina viene portata in memoria e registrata nella tabelle delle pagine

� Ogni volta che si identifica un indirizzo in una pagina non ancora in memoria, si verifica un errore di pagina

• Metodo chiamato di paginazione su richiesta (demand paging): pagine caricate solo quando necessarie

Page 15: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

17

33

Working set• Metodo alternativo basato sul principio di

località� La maggior parte dei programmi non accede al

suo spazio di indirizzamento in modo uniforme ma gli accessi tendono a raggrupparsi in un numero limitato di pagine

• Working set: insieme di pagine che ad ogni istante t rappresentano le pagine a cui hanno fatto accesso le ultime k richieste alla memoria

• All’inizio dell’esecuzione di un programma è possibile caricare il working set in memoria

34

Politica di sostituzione delle pagine

• Idealmente si mantiene in memoria il working set per ridurre il numero di errori di pagina

• Problema: identificazione del working set in ogni istante di tempo deve essere svolta dal SO in modo dinamico

• Informazione utile per identificare la pagina da sostituire in caso di errore di pagina

Page 16: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

18

35

Politica di sostituzione

• Definizione di un algoritmo di sostituzione� Casuale� Least recently used (LRU): il SO cerca di

identificare la pagina meno utile nel prossimo futuro, ossia quella utilizzata meno di recente (principio di località) che ha bassa probabilità di appartenere al working set attuale

� FIFO (First In First Out): si sostituisce sempre la pagina caricata meno di recente, indipendentemente da quando si è fatto riferimento a questa pagina

36

Algoritmo LRU

• Buone prestazioni in media• Esistono situazioni particolari in cui l’algoritmo

ha prestazioni pessime• Esempio:

� Esecuzione di un ciclo che si estende su 9 pagine virtuali

� La memoria può contenere solo 8 pagine� Si assuma che le prime 8 pagine virtuali (da 0 a

7) siano in memoria.� Al termine dell’esecuzione della pagina 7 è

necessario caricare pagina 8.

Page 17: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

19

37

Algoritmo LRU: esempio

• Scelta della pagina da sostituire mediante algoritmo LRU

• La pagina meno utilizzata di recente è la pagina 0 �viene sostituita con la pagina 8

• Al termine dell’esecuzione delle istruzioni che appartengono alla pagina 8 è necessario ricominciare l’esecuzione del ciclo da pagina 0, ossia la pagina appena sostituita � errore di pagina!

• La pagina 0 andrà a sostituire la pagina 1, utilizzata meno di recente: ma questa sarà la pagina da ricaricare subito dopo!!

38

Fallimento dell’algoritmo LRU

Pagina virtuale 0Pagina virtuale 1Pagina virtuale 2Pagina virtuale 3Pagina virtuale 4

Pagina virtuale 5

Pagina virtuale 7Pagina virtuale 6

Pagina virtuale 8

Memoria centrale

Al termine dell’esecuzione delleistruzioni di pagina 7 è necessariocaricare pagina 8 sostituendo la pagina utilizzata meno di recente, ossia pagina 0

Page 18: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

20

39

Fallimento dell’algoritmo LRU

Pagina virtuale 8Pagina virtuale 1Pagina virtuale 2Pagina virtuale 3Pagina virtuale 4

Pagina virtuale 5

Pagina virtuale 7Pagina virtuale 6

Pagina virtuale 0

Memoria centrale

Al termine dell’esecuzione delleistruzioni di pagina 8 è necessariocaricare pagina 0 sostituendo la pagina utilizzata meno di recente, ossia pagina 1

40

Fallimento dell’algoritmo LRU

Pagina virtuale 8Pagina virtuale 0Pagina virtuale 2Pagina virtuale 3Pagina virtuale 4

Pagina virtuale 5

Pagina virtuale 7Pagina virtuale 6

Pagina virtuale 1

Memoria centrale

Al termine dell’esecuzione delleistruzioni di pagina 0 è necessariocaricare nuovamente pagina 1 sostituendo la pagina utilizzata meno di recente, ossia pagina 2

E così via.....

Page 19: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

21

41

Algoritmo LRU

• Fallisce quando il working set è di poco maggiore della memoria centrale disponibile

• Nel caso in esempio il working set è di una pagina superiore al numero di pagine disponibili in memoria

• Se l’accesso alle pagine è sequenziale, in questo caso si sostituisce sempre la pagina che verrà richiesta subito dopo

42

Algoritmo di sostituzione FIFO

• Si mantiene l’informazione del momento in cui è stata caricata la pagina

• Si associa un contatore ad ogni page frame• Inizialmente i contatori sono = 0• Al termine della gestione di un errore di

pagina i contatori dei page frame non modificati sono incrementati di 1

• Il contatore della pagina appena caricata viene posto a 0

Page 20: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

22

43

Algoritmo di sostituzione FIFO

• In caso di errore di pagina la pagina da sostituire è quella con il valore del contatore più alto.

• Il valore di contatore più alto significa che si tratta della pagina che ha visto piiù errori di pagina e quindi si trova in memoria da più tempo rispetto alle altre� ha più probabilità di non essere

necessaria nel prossimo futuro (principio di località)

44

Algoritmi di sostituzione

• L’algoritmo FIFO non ha un buon comportamento nel caso in cui il working set è di poco maggiore del numero di pagine disponibili in memoria

• Non ci sono algoritmi che danno buoni risultati in questo caso

• Un programma che genera errori di pagina frequenti si dice in thrashing(situazione poco auspicabile)

Page 21: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

23

45

Scrittura in memoria

• Nel caso di scrittura in memoria la modifica avviene solo nelle pagine in memoria e non riportata immediatamente sulle pagine su disco

• Motivazione: tempi di accesso al disco molto elevati rispetto ai tempi di accesso alla memoria

• In caso di errore di pagina è necessario individuare se la pagina in memoria è stata o meno modificata

46

Scrittura in memoria

• Se la pagina è stata modificata è necessario di copiarla su disco prima di sostituirla

• Le pagine contenenti istruzioni non possono essere modificate quindi non devono essere copiate su disco

• Nella MMU si associa un bit ad ogni page frame per indicare se la pagina che contiene è stata o meno modificata

• Quando una pagina deve essere sostituita il SO verifica il bit di scrittura per stabilire se la pagina debba essere copiata su disco

Page 22: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

24

47

Frammentazione della memoria

• Ad un programma e ai suoi dati vengono assegnati un numero intero di pagine

• Non sempre un programma e i suoi dati riempiono un numero intero di pagine� spreco della memoria

• Esempio: programma + dati = 26.000 Byte e pagine di 4kByte (4096 Byte)

• Numero di pagine: 26000/4096 ≈ 6.34� sono necessarie 7 pagine, ma l’ultima pagina è

occupata per 1424 Byte e verranno sprecati 2672 Byte

48

Frammentazione della memoria

• Per pagine di n Byte la quantità media di spazio di memoria sprecato nell’ultima pagina sarà di n/2 Byte� ridurre le dimensioni della pagina per

minimizzare lo spreco• Pagine piccole � � numero di pagine �� dimensioni della tabella delle pagine�� dimensioni della MMU

Page 23: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

25

49

Dimensionamento delle pagine

• Pagine piccole riducono l’efficienza dei trasferimenti dal disco:� Pagine più piccole richiedono più trasferimenti � Tempo di ricerca della pagina su disco + ritardo

di rotazione ≈ 10 msec� Tempo di trasferimento di una pagina di 1KByte a

10MB/sec richiede circa 0.1 msec � Il peso del trasferimento è di due ordini di

grandezza inferiore al tempo di ricerca

50

Dimensionamento delle pagine• Pagine piccole portano a meno thrashing se il

programma lavora su regioni piccole e separate all’interno dello spazio di indirizzamento

• Esempio: matrice di 10.000×10.000 elementi memorizzata per colonne, ogni elemento richiede 8 Byte.

• Gli elementi della riga 1 sono a distanza di 80.000 Byte l’uno dall’altro.

• Elaborazione su una riga intera: per avere tutti gli elementi in memoria:� Con pagine da 8KB sono necessari 80MB � Con pagine da 1KB sono necessari 10MB� Se memoria disponibile è di 32 MB il programma andrebbe

in thrashing con pagine da 8KB.

Page 24: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

26

51

Spazio di indirizzamento di un programma

• Fino ad ora si è considerato un unico spazio di indirizzamento lineare

• In alcuni casi potrebbe essere più utile avere spazi di indirizzamento diversi per diverse tipologie di informazione

• Il compilatore crea strutture dati diverse durante la fase di compilazione di un programma

52

Tipologie di informazioni

1. Tabella dei simboli che contiene nomi e caratteristiche delle variabili

2. Codice del programma3. Tabella delle costanti4. Albero sintattico del programma5. Stack utilizzato per le chiamate a procedura

Prime 4 tabelle crescono al crescere della compilazione mentre lo stack cresce in modo non prevedibile in base alle chiamate

Page 25: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

27

53

Spazio di indirizzamentoSuddivisione dello spazio di indirizzamento lineare in parti adiacenti, una per ogni tabella

Tabella dei simboli

Codice sorgente

Tabella costanti

Stack

Albero sintattico

Spazio di indirizzamento stack Possibili problemi

di disponibilità di memoria per i singoli spazi adiacenti

54

Segmenti

• Soluzione: definire spazi di indirizzamento indipendenti, chiamati segmenti.

• Ogni segmento composto da una sequenza lineare di indirizzi.

• Segmenti possono avere lunghezze diverse sia in fase di compilazione sia in fase di esecuzione (ad esempio lo stack o i dati dinamici)

Page 26: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

28

55

Segmenti

• Entità logiche note al programmatore• Per specificare un indirizzo nella memoria

segmentata è necessario fornire un numero di segmento e un indirizzo al suo interno, da 0 a un massimo consentito

• Memoria bidimensionale• Ogni segmento rappresenta uno spazio di

indirizzamento separato e può crescere indipendentemente, senza creare problemi ad altri segmenti

56

Memoria a segmenti

Tabella dei simboli

Codice sorgente

Tabella costanti

Alberosintattico

Stack

Segmento 0 Segmento 1 Segmento 2 Segmento 4Segmento 3

0

16K

4K

8K

20K

12K

Page 27: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

29

57

Segmento

• Entità logica singola• Ogni segmento contiene una tipologia

di informazioni singola: procedure, stack, matrici, collezione di dati scalari....

58

Vantaggi della memoria a segmenti

• Semplifica la gestione delle strutture di dati dinamici che possono crescere o decrescere senza problemi

• Semplifica la gestione del collegamento di procedure compilate separatamente, ognuna in un segmento separato� Ogni procedura potrà essere chiamata

indirizzando il segmento k che la contiene e la parola 0, (k,0)

Page 28: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

30

59

Vantaggi della memoria a segmenti

• La segmentazione facilita la condivisione di procedure o dati tra programmi� Evita di dover fornire una copia fisica separata di

procedure di libreria a più programmi in memoria che ne fanno uso, dato che vengono poste in segmenti diversi a quello del programma

• Segmenti diversi possono avere tipi di protezione diversa (lettura, scrittura, esecuzione) decisa dal programmatore

• La protezione non ha senso nella paginazione� Ogni pagina può contenere informazioni di tipo

diverso in modo trasparente al programmatore

60

Confronto tra paginazione e segmentazione

Fornire spazi multipli di indirizzamento

Simulare memorie molto grandi

Motivo della tecnica?

SINOGestione di spazi di dimensioni variabili

SISISpazio virtuale > spazio fisico di memoria?

Molti1Spazi di indirizzamento

SINOVisibilità al programmatore

SegmentazionePaginazione

Page 29: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

31

61

Implementazione della segmentazione

Swapping• I segmenti vengono caricati e scaricati dalla

memoria in base alla necessità• Tecnica simile alla paginazione su richiesta

con la differenza che i segmenti hanno dimensioni variabili� Problema: frammentazione della memoria dovuta

a zone di memoria di dimensioni non utili per contenere segmenti (frammentazione esterna)

� Spreco di memoria!

62

Swapping: esempio

• INSERIRE FIG 6.10

Page 30: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

32

63

Swapping: frammentazione esterna

• Per evitare la frammentazione esterna:� Ogni volta che compare uno spazio libero tra un

segmento e un altro è sufficiente spostare i segmenti che seguono verso l’alto, eliminando lo spazio libero in modo da lasciare uno spazio di memoria libero in fondo

� Compattazione richiede tempo� Se il tempo necessario per la compattazione

riduce troppo le prestazioni e serve un algoritmo per determinare quale spazio libero usare per un segmento da caricare in memoria

64

Swapping: gestione della frammentazione

• Gestione degli spazi liberi di memoria richiede la gestione di una lista di indirizzi e dimensioni di tutti gli spazi liberi

• Algoritmo best fit� Sceglie la zona più piccola in cui il

segmento può stare in modo da ottimizzare l’utilizzo dello spazio libero

� Complessità elevata

Page 31: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

33

65

Swapping: gestione della frammentazione

• Algoritmo first fit� Controlla in modo circolare la lista delle zone

libere e sceglie la prima zona di dimensioni tali da contenere il segmento da caricare

� Algoritmo non ottimo ma che richiede un tempo minore per scegliere l’allocazione

• First fit è migliore di best fit in termini di prestazioni� Best fit tende a generare molte zone piccole

inutilizzabili� Zone libere adiacenti possono essere riunite in un

unico spazio

66

Implementazione della segmentazione

Paginazione• Suddivisione di ogni segmento in pagine

di dimensioni fisse • Si applica la paginazione su richiesta• Per gestire i segmenti serve una tabella

delle pagine separata per ogni segmento

Page 32: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

34

67

Memoria virtuale in UNIX

• Memoria segmentata con tre tipi di segmenti: codice, dati e stack

• Segmenti suddivisi in pagine di dimensioni fisse, gestita su richiesta

• Esiste la possibilità di far crescere dinamicamente le dimensioni dei segmenti dati e stack

68

Segmentazione in UNIX

Spazio libero per crescita dati e stack

stack

dati

codice

Spazio diindirizzamento di un programmain esecuzione

0

max

Page 33: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

35

69

Memoria virtuale: Pentium II

• Sistema di memoria virtuale sofisticato: paginazione su richiesta, segmentazione pura, segmentazione con paginazione

• Basata su due tabelle� Local Descriptor Table (LDT): una per

ogni programma, descrive i suoi segmenti stack, dati, codice ....

� Global Descriptor Table (GDT): unica, condivisa tra tutti i programmi, descrive i segmenti di sistema

70

Memoria virtuale: Pentium II

• Ogni segmento ha associato un selettore di 16 bit

• Il selettore viene caricato in un registro di segmento (CS per codice e DS per dati)

• Indice specifica l’elemento della LDT e della GDT (massimo 8K descrittori di segmenti)

INDICE (13 bit)

Livello di privilegio (0-3)2 bit

GDT: 0LDT: 1

Page 34: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

36

71

Memoria virtuale: Pentium II

• Quando viene caricato un selettore in un registro di segmenti, il descrittore corrispondente viene prelevato da LDT o GDT e memorizzato in registri interni della MMU per accedervi rapidamente

• Descrittore composto da 8 byte:� indirizzo di base del segmento,� dimensioni (in pagine o in byte), � altre informazioni: tipo di segmento e protezione,

livello di privilegio, presenza in memoria....

72

Memoria virtuale: Pentium II

Conversione di (selettore, offset) in indirizzo lineare

selettore

Indirizzo di base

Limite

Altri campi

offset

+

Indirizzo lineare 32 bit

Page 35: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

37

73

Memoria virtuale: Pentium II

• Se la paginazione è disattivata l’indirizzo lineare viene interpretato come indirizzo fisico e mandato in memoria (segmentazione pura)

• In caso di paginazione l’indirizzo lineare corrisponde all’indirizzo virtuale e viene mappato nell’indirizzo fisico utilizzando la tabella delle pagine

74

Paginazione: Pentium II

• Ogni programma in esecuzione ha associato un direttorio delle pagine: 1024 elementi di 32 bit� Si trova a un indirizzo indicato da un

registro globale� Ogni elemento del direttorio punta a una

tabelle delle pagine di 1024 elementi di 32 bit

� Gli elementi della tabella delle pagine puntano alle pagine in memoria (4Kbyte)

Page 36: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

38

75

Paginazione: Pentium IIIndirizzo lineare

DIR (10 bit) PAGE (10 bit) OFFSET (12 bit)

DIR

PAGE

OFFSET

Parola selezionata

Direttorio di pagina

Tabella delle pagine Pagina

76

Paginazione: Pentium II

• Elementi della tabella delle pagine: 32 bit� 20 bit: numero di pagina� 12 bit: bit di servizio gestiti dell’hardware per conto del SO

(bit di protezione, dirty bit per indicare se una pagina in memoria è stata modificata,.....)

• Due livelli di paginazione permette di ridurre lo spreco di memoria

• La MMU è dotata di speciali funzionalità hw per cercare velocemente le combinazioni DIR-PAGE usate più di recente e mapparle sull’indirizzo fisico, evitando molti accessi alla memoria

Page 37: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

39

77

Livelli di protezione nel Pentium II

• 4 livelli di protezione individuati da 2 bit del PSW (Program Status Word):� Livello 3: programmi utente� Livello 2: librerie condivise� Livello 1: chiamate di sistema� Livello 0: kernel del SO

• L’accesso a livelli più bassi di quello del programma in esecuzione sono illegali e causano trap

• Si possono richiedere procedure a livelli inferiori in modo controllato fornendo alla chiamata un selettore (non un indirizzo)� Selettore designa un descrittore (call gate) che identifica

l’indirizzo della procedura chiamata

78

Memoria virtuale: UltraSPARC II

• Macchina di 64 bit dotata di memoria virtuale paginata che si basa su indirizzi virtuali di 64 bit

• Spazio di indirizzamento per i programmi: 44 bit (1.8 × 1013 byte) diviso in due zone ognuna di 243 byte, una in cima allo spazio di indirizzamento una in fondo

• Memoria fisica massima: 241 byte, circa 2200 GB

• Pagine: 8 KB, 64 KB, 512 KB, 4 MB

Page 38: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

40

79

Memoria virtuale: UltraSPARC II

• MMU contiene una tabella hw chiamata Translation Lookaside Buffer (TLB) che mappa le pagine virtuali in pagine fisiche

• TLB contiene solo gli indici delle 64 pagine virtuali usate più di recente e l’indice della corrispondente pagina fisica

80

Memoria virtuale: UltraSPARC II

• Quando la MMU riceve dal programma in esecuzione il suo identificatore e un indirizzo virtuale confronta in modo hw l’indice della pagina virtuale con tutti gli elementi della TLB associati a quell’identificatore di programma

• Se corrispondono l’indice di pagina fisica viene associato con l’offset preso dall’indirizzo virtuale per formare un indirizzo fisico di 41 bit

Page 39: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

41

81

Memoria virtuale: UltraSPARC II

• Se non si trovano corrispondenze nella TLB si verifica un miss che causa una trap al SO

• Il SO mantiene una cache software per gli elementi della TLB usati spesso in una tabella: Translation Storage Buffer (TSB)

• TSB organizzata come una cache direct mapped che contiene riferimenti a pagine virtuali

• Nel caso di TLB miss il SO controlla se l’elemento corrispondente nel TSB contiene la pagina virtuale richiesta: se è presente si sostituisce un elemento del TLB con l’elemento del TSB usando un algoritmo LRU

82

Memoria virtuale: UltraSPARC II

• Se la pagina virtuale non si trova nel TSB, il SO utilizza un’altra tabella per verificare se la pagina cercata è in memoria: tabella di traduzione

• UltraSPARC II non utilizza la segmentazione

Page 40: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

42

83

Memoria virtuale e caching

CPU Traduzione Cache Memoria

centrale

IV IF miss

hitdata

E’ necessario un ciclo di memoria aggiuntivo per tradurre l’indirizzo virtuale (IV) nell’indirizzo fisico (IF) per l’accesso alla cache

Cache non usa indirizzi virtuali per problemi di aliasing

Concettualmente cache e gestione della memoria virtuale sono identici ma lavorano a diversi livelli della gerarchia

Cache miss gestiti dall’hardware mentre page fault gestiti dal sistema operativo

84

Conclusioni

• La memoria virtuale è stata inventata come un livello aggiuntivo della gerarchia di memoria per evitare che i programmatori dovessero gestire manualmente l’utilizzo della memoria centrale, più piccola della dimensione dei programmi

• Oggi, con l’incremento esponenziale delle dimensioni delle DRAM nell’ultimo decennio il problema è diverso

Page 41: Il Livello di Sistema Operativo: la memoria virtualeunina.stidue.net/Universita' di Trieste/Ingegneria Industriale e dell'Informazione...4 7 Overlays • Il programmatore era responsabile

43

85

Conclusioni

• Oggi, la funzione principale della memoria virtuale è permettere la condivisione della memoria centrale tra più processi in modo da non dover trasferire i processi non in esecuzione su disco.

• La memoria virtuale quindi fornisce la protezione della memoria

• La tecnica più comune utilizzata è la paginazione, traducendo l’indirizzo virtuale in indirizzo fisico mediante una tabella delle pagine

86

Conclusioni

• Tecnica di segmentazione inventata per gestire spazi di indirizzamento indipendenti nel programma e permettere la crescita dinamica dei dati

• Segmentazione e paginazione possono essere combinati