Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria...

70
Gestione della memoria Gestione della memoria principale principale

Transcript of Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria...

Page 1: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Gestione della memoria Gestione della memoria principaleprincipale

Page 2: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.2

Gestione della memoria principaleGestione della memoria principale

Background

Swapping

Allocazione contigua

Paginazione

Struttura della tabella delle pagine

Segmentazione

Un esempio: il Pentium

Page 3: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.3

Background Background 1 1

Lo scheduling della CPU:

Migliora l’utilizzo della risorsa CPU

Migliora la “reattività” del sistema nei confronti degli utenti

Per poter essere eseguiti, i programmi devono essere portati in memoria centrale, per essere “trasformati” in processi Per ottenere l’aumento di prestazioni garantito

dallo scheduling della CPU, la memoria deve essere condivisacondivisa

Page 4: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.4

Background Background 2 2

Nella fase di fetchfetch, la CPU preleva le istruzioni dalla memoria, in base al contenuto del contatore di programma (PC)

Le istruzioni possono determinare ulteriori letture e scritture di dati in specifici indirizzi di memoria

La memoria “vede” soltanto un flusso di indirizzi e non conosce la modalità con cui sono stati generati o a cosa si riferiscano (istruzioni o dati)

Page 5: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.5

Background Background 3 3La memoria principale ed i registri sono gli unici dispositivi di memoria cui la CPU può accedere direttamente

I registri vengono acceduti in un ciclo di clock

Un accesso alla memoria può invece richiedere diversi cicli di clock (occorre “passare” dal bus) Possibile stallo del processore in attesa dei datiPossibile stallo del processore in attesa dei dati SoluzioneSoluzione: la memoria la memoria cachecache che si situa, nella che si situa, nella

gerarchia delle memorie, tra la memoria gerarchia delle memorie, tra la memoria principale ed i registri della CPUprincipale ed i registri della CPU

La protezione della memoria è fondamentale per la corretta operatività del sistema

Page 6: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.6

Esempio: registri base e limite Esempio: registri base e limite 1 1

Ogni processo deve avere uno spazio di memoria separato

I registri basebase e limitelimite definiscono lo spazio degli indirizzi di ciascun processo

Il registro baseregistro base contiene il più piccolo indirizzo legale della memoria fisica allocata al processo; il registro registro limitelimite determina la dimensione dello spazio di memoria

Page 7: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.7

Esempio: registri base e limite Esempio: registri base e limite 2 2

Per mettere in atto il meccanismo di protezione, la CPU confronta ogni indirizzo logico generato dal processo utente con i valori contenuti nei due registri

indirizzo base

indirizzo baselimite

Solo il SO può caricare i registri base e limite tramite istruzioni privilegiate

In modalità utente, un tentativo di accesso ad aree di memoria riservate al SO, o ad altri processi utente, provoca un segnale di eccezione che restituisce il controllo al SO e l’emissione di un messaggio di errore

Page 8: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.8

Supporto hardware alla protezione della memoria mediante Supporto hardware alla protezione della memoria mediante registri base e limiteregistri base e limite

Esempio: registri base e limite Esempio: registri base e limite 3 3

Page 9: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.9

I programmi risiedono su disco sotto forma di file binari eseguibili

L’insieme dei programmi residenti su disco ed in attesa di essere trasferiti in memoria, per essere eseguiti, forma la input queueinput queue

Si seleziona uno dei processi per il caricamento e l’esecuzione

Il processo, in fase di esecuzione, può accedere alle istruzioni ed ai dati residenti in memoria centrale

Quando termina, rilascia lo spazio ad esso allocato

Associazione degli indirizzi Associazione degli indirizzi 1 1

Page 10: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.10

I programmi utente passano attraverso stadi diversi, con diverse rappresentazioni degli indirizzi, prima di essere eseguiti

Gli indirizzi nel programma sorgente sono simbolicisimbolici

Il compilatore associa gli indirizzi simbolici ad indirizzi rilocabilirilocabili (per es., calcolati a partire dalla prima istruzione del programma)

Il loader fa corrispondere gli indirizzi rilocabili con indirizzi assoluti assoluti (nella memoria fisica)

Ogni associazione stabilisce una corrispondenza fra spazi di indirizzi

Associazione degli indirizzi Associazione degli indirizzi 2 2

Page 11: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.11

L’associazione bindingbinding di istruzioni e dati a indirizzi di memoria può avvenire durante la fase di…

CompilazioneCompilazione: se la posizione in memoria del processo è nota a priori, può essere generato codice assolutoassoluto; se la locazione iniziale cambia, è necessario ricompilare il codice (Es.: programmi MSDOS nel formato .COM)

CaricamentoCaricamento: se la posizione in memoria non è nota in fase di compilazione, è necessario generare codice rilocabilerilocabile; se l’indirizzo iniziale cambia, il codice deve essere ricaricato in memoria

EsecuzioneEsecuzione: se il processo può essere spostato a run–a run–timetime da un segmento di memoria all’altro, il binding viene rimandato fino al momento dell’esecuzione; è necessario un opportuno supporto hardware per il mapping degli indirizzi (ad esempio attraverso registri base e limite)

Associazione degli indirizzi Associazione degli indirizzi 3 3

Page 12: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.12

Elaborazione multistep dei programmi Elaborazione multistep dei programmi utenteutente

Caricamento dinamico: i Caricamento dinamico: i sottoprogrammi sottoprogrammi vengono caricati in vengono caricati in memoria quando memoria quando vengono richiamativengono richiamati

Collegamento dinamico: Collegamento dinamico: i sottoprogrammi i sottoprogrammi vengono collegati vengono collegati quando vengono quando vengono richiamatirichiamati

Indirizzi Indirizzi simbolicisimbolici, ad , ad esempio esempio countcount

Indirizzi Indirizzi rilocabilirilocabili, , ad esempio “ad esempio “4 4 byte a partire byte a partire dall’inizio di dall’inizio di questo modulo”questo modulo”

Indirizzi Indirizzi assolutiassoluti, , ad esempio ad esempio 2680026800

Page 13: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.13

Spazi di indirizzi logici e fisiciSpazi di indirizzi logici e fisici

Il concetto di uno spazio di indirizzi logicispazio di indirizzi logici nettamente distinto dallo spazio degli indirizzispazio degli indirizzi fisicifisici è centrale per la gestione della memoria

Indirizzi logiciIndirizzi logici generati dalla CPU, altrimenti chiamati indirizzi virtualiindirizzi virtuali

Indirizzi fisiciIndirizzi fisici indirizzi contenuti nel memory memory address registeraddress register e utilizzati dall’unità di memoria

Gli indirizzi logici corrispondono agli indirizzi fisici negli schemi di binding in fase di compilazione e caricamento, mentre differiscono per il binding in fase di esecuzione

Page 14: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.14

MemoryMemoryManagement Unit (Management Unit (MMUMMU))

Il programma utente “ragiona” in termini di indirizzi virtuali, né mai è (deve essere) conscio del loro mapping fisico

Dispositivo hardware che mappa indirizzi virtuali su indirizzi fisici

Nello schema MMU, il valore contenuto nel registro di rilocazioneregistro di rilocazione viene sommato ad ogni indirizzo generato dai processi utente nel momento stesso in cui l’indirizzo viene inviato alla memoria

Rilocazione dinamica ottenuta tramite registro di rilocazione

Page 15: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.15

Caricamento dinamicoCaricamento dinamicoI sottoprogrammi non vengono caricati in memoria fino a quando non vengono richiamati

Miglior impiego della memoria: sottoprogrammi non utilizzati non vengono mai caricati

Utile quando si richiedono grandi quantità di codice per gestire situazioni che avvengono raramente (condizioni di eccezione)

Al SO non è richiesto alcun supporto speciale: il caricamento dinamico viene implementato mediante software opportunamente codificato

Tuttavia, il SO fornisce librerie di procedure che realizzano il caricamento dinamico

Page 16: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.16

Link dinamico delle librerie Link dinamico delle librerie 1 1

Il link viene rinviato fino al momento dell’esecuzione

Particolarmente utile per librerie di sistema e librerie di procedure del linguaggio

Altrimenti ogni programma dovrebbe disporre all’interno della propria immagine eseguibile di una copia della libreria del linguaggio (o almeno dei sottoprogrammi utilizzati)

Piccole porzioni di codice (dette stubstub) vengono impiegate per localizzare la routine appropriata nella libreria residente in memoria

Lo stub rimpiazza se stesso con l’indirizzo della routine e la esegue

Page 17: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.17

Link dinamico delle librerie Link dinamico delle librerie 2 2

Il SO deve verificare se la routine si trova già nello spazio degli indirizzi del processo o, eventualmente, deve renderla accessibile se è presente in memoria nello spazio di indirizzi di un altro processo

Il link dinamico risulta particolarmente utile per le routine di libreria modalità operativa a a librerie condiviselibrerie condivise

Supporto del sistema operativo per superare le barriere di protezione fra processi ed accedere a segmenti di codice condivisi

Page 18: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.18

Swapping Swapping 1 1Un processo può venire temporaneamente riversato swapped swapped dalla memoria centrale alla backing storebacking store, dalla quale, in seguito, viene portato nuovamente in memoria per proseguire l’esecuzione

Backing storeBacking store È una partizione del disco ad accesso rapido, sufficientemente capiente da accogliere copie di tutte le immagini di memoria per tutti i processi utente; deve garantire accesso diretto a tali immagini

Roll out, roll inRoll out, roll in È una variante dello swapping impiegata per algoritmi di scheduling basati su priorità; processi a bassa priorità vengono riversati sulla memoria di massa, in modo tale da permettere che processi a priorità maggiore vengano caricati ed eseguiti

Page 19: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.19

Swapping Swapping 2 2

Il sistema operativo mantiene una ready queue dei processi la cui immagine è stata riversata su disco e dei processi attualmente presenti in memoria

La maggior parte del tempo di swap è dovuta al trasferimento di dati; il tempo totale di trasferimento è direttamente proporzionale alla quantità di memoria riversata

Se il binding viene effettuato in fase d’esecuzione, il processo sottoposto a swapping può successivamente essere riversato in uno spazio di memoria diverso

Molti SO attuali (i.e., UNIX, Linux, e Windows) supportano differenti versioni di swapping

Page 20: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.20

Swapping Swapping 3 3

Swapping di due processi su backing store (disco)Swapping di due processi su backing store (disco)

Page 21: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.21

Allocazione contigua Allocazione contigua 1 1La memoria principale viene suddivisa in due partizioni:

La parte residente del SO è generalmente memorizzata nella memoria bassa, insieme al vettore degli interruptvettore degli interrupt

I processi utente sono memorizzati nella memoria alta

Si impiega uno schema basato su registri di rilocazioneregistri di rilocazione e registriregistri limitelimite per proteggere programmi e dati del SO e per proteggere reciprocamente i programmi utente

Il registro di rilocazioneregistro di rilocazione contiene il valore del più piccolo indirizzo fisico di memoria allocata al processo

Il registro limiteregistro limite contiene l’intervallo degli indirizzi logici: ciascun indirizzo logico deve essere inferiore al valore del registro limite

La MMU effettua un mapping dinamico degli indirizzi logici

Page 22: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.22

Un bucobuco (holehole) è un blocco di memoria disponibile; nella memoria sono sparsi buchi di varie dimensioniQuando viene caricato un nuovo processo, gli viene allocato un buco grande abbastanza da contenerloIl SO conserva informazioni su:

Partizioni allocatePartizioni allocate Partizioni liberePartizioni libere

SO

processo 5

processo 8

processo 2

SO

processo 5

processo 2

SO

processo 5

processo 2

SO

processo 5

processo 9

processo 2

processo 9

processo 10

Allocazione contigua Allocazione contigua 2 2

Page 23: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.23

Come allocare memoria Come allocare memoria dinamicamente?dinamicamente?

In ogni momento è presente un insieme di buchi di diverse dimensioni sparsi per la memoria

Come soddisfare una richiesta di dimensione n a partire da un insieme di buchi?

FirstFirstfitfit: Viene allocato il primoprimo buco grande abbastanza

BestBestfitfit: Viene allocato il buco più piccolopiù piccolo capace di contenere il processo; è necessario scandire tutta la lista dei buchi (se non è ordinata)

Si produce il più piccolo buco residuo

WorstWorstfitfit: Viene allocato il buco più grandepiù grande; è ancora necessario ricercare in tutta la lista

Si produce il più grande buco residuo

Firstfit e Bestfit sono migliori di Worstfit, rispettivamente in termini di velocità e di impiego di memoria

Page 24: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.24

FrammentazioneFrammentazioneFrammentazione esternaFrammentazione esterna È disponibile lo spazio necessario a soddisfare una richiesta, ma non è contiguo

Frammentazione internaFrammentazione interna La memoria allocata può essere leggermente maggiore della memoria effettivamente richiesta (pochi byte di differenza); la differenza di dimensioni è memoria interna ad una partizione che non viene impiegata completamente

Si può ridurre la frammentazione esterna con la compattazionecompattazione

Si spostano i contenuti della memoria per avere tutta la memoria libera contigua a formare un grande blocco

La compattazione è possibile solo con la rilocazione dinamica e viene effettuata in fase d’esecuzione

Page 25: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.25

Frammentazione esternaFrammentazione esterna

La gravità del problema della frammentazione esterna per allocazione contigua dipende dalla quantità totale di memoria e dalla dimensione media dei processi

Regola del 50%Regola del 50%: Con Firstfit, per n blocchi assegnati, 0.5n blocchi possono andare “persi” per frammentazione

Un terzo della memoria diventa inutilizzabile!

Page 26: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.26

Paginazione Paginazione 1 1

Una diversa soluzione alla frammentazione esterna è ottenuta consentendo la non contiguità degli indirizzi fisici, permettendo così di allocare la memoria fisica ai processi ovunque essa sia disponibile

Si divide la memoria fisica in blocchi di dimensione fissa, chiamati frameframe o pagine pagine fisichefisiche (la dimensione è una potenza del 2, compresa fra 512 byte e 16 MB, ma valori tipici negli elaboratori attuali sono 4KB8KB)

Si divide la memoria logica in blocchi della stessa dimensione, chiamati paginepagine

Si tiene traccia di tutti i frame liberi

Page 27: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.27

Paginazione Paginazione 2 2

Per eseguire un programma di dimensione n pagine, è necessario trovare n frame liberi prima di caricare il programma

Si impiega una tabella delle paginetabella delle pagine per tradurre gli indirizzi logici negli indirizzi fisici corrispondenti

Si ha solo frammentazione interna (relativa all’ultimo frame)

Page 28: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.28

L’indirizzo generato dalla CPU viene suddiviso in:

Numero di paginaNumero di pagina (p) — impiegato come indice in una tabella di pagine che contiene l’indirizzo base di ciascun frame nella memoria fisica

Offset nella paginaOffset nella pagina (d) — combinato con l’indirizzo base per definire l’indirizzo fisico di memoria che viene inviato all’unità di memoria

Schema di traduzione degli Schema di traduzione degli indirizziindirizzi

Numero di pagina offset

p d

m n n

Spazio logico di 2m indirizzi con 2m-n pagine di dimensione 2n

Page 29: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.29

Supporto hardware alla Supporto hardware alla paginazionepaginazione

Page 30: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.30

Esempi di paginazioneEsempi di paginazioneModello di paginazione di memoria logica e memoria fisica

Memoria da 32 byte con pagine da 4 byte

ESEMPIOESEMPIO: 6 = 00110

#pagina=1, offset=2

64+2 = 26

Page 31: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.31

Frammentazione Frammentazione internainterna mediamedia pari a pari a mezza pagina per mezza pagina per processoprocesso

Frame liberiFrame liberi

Prima dell’allocazione Dopo l’allocazione

Page 32: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.32

Tabella dei frameTabella dei frame

Poiché il SO gestisce la memoria fisica, deve essere informato su:

quali frame sono assegnati

quali e quanti frame sono liberi

Le informazioni sono contenute nella tabella tabella dei framedei frame

Una entry per ciascun frame, per definire se la pagina fisica è libera o assegnata e, nel secondo caso, a quale pagina di quale(/i) processo(/i)

Page 33: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.33

Implementazione della tabella delle Implementazione della tabella delle paginepagine

La tabella delle pagine risiede in memoria centrale; si ha una tabella per ogni processo

Il registro PagePageTableTable Base RegisterBase Register (PTBR) punta all’inizio della tabella

Il registro PagePageTable Length RegisterTable Length Register (PTLR) indica la dimensione della tabella

Con questo schema, ogni accesso a dati o istruzioni richiede di fatto due accessi alla memoria: uno per la tabella e uno per le istruzioni/dati

Il problema dei due accessi alla memoria può essere risolto per mezzo dei registri associativiregistri associativi (altrimenti detti translation looktranslation look––aside bufferaside buffer, TLB) attraverso i quali si effettua una ricerca parallela veloce su una piccola tabella (641024 elementi)

Page 34: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.34

Memoria associativaMemoria associativa

Memoria associativa ricerca parallela

Traduzione dell’indirizzo (p, d)

Se p è nel registro associativo, si reperisce il numero del frame

Altrimenti, si recupera il numero di frame dalla tabella delle pagine in memoria

# Pagina # Frame

Page 35: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.35

Hardware di paginazione con TLBHardware di paginazione con TLB

Page 36: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.36

Tempo di accesso effettivoTempo di accesso effettivo

Lookup associativoLookup associativo unità di tempo

Hit ratioHit ratio percentuale di volte che un numero di pagina viene reperito nei registri associativi; è correlata al numero di registri associativi

Tempo di accesso effettivoTempo di accesso effettivo (EAT, Effective Effective Access TimeAccess Time)

EAT (1) (2)(1)

2

dove si suppone che un accesso alla memoria abbia la durata di 1 microsecondo e 0.1 sec

Page 37: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.37

Protezione della memoria Protezione della memoria 1 1

La protezione della memoria è implementata associando uno o più bit di protezionebit di protezione a ciascun frame nella tabella delle pagine

I bit determinano se una certa pagina può essere acceduta in lettura, scrittura e/o esecuzione

Tutti i riferimenti alla memoria passano attraverso la tabella delle pagine Mentre si effettua il mapping da indirizzi logici ad

indirizzi fisici, si verificano le modalità di accesso al dato frame

Un tentativo di accesso che viola quanto codificato nei bit di protezione provoca una trap al SO

Page 38: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.38

Protezione della memoria Protezione della memoria 2 2

Un ulteriore bit di validitàbit di validità viene associato ad ogni elemento della tabella delle pagine:

Un valore “valido” indica che la pagina è nello spazio degli indirizzi logici del processo, e quindi è una pagina legale

Un valore “non valido” indica che la pagina non si trova nello spazio di indirizzi logici del processo

Il bit di validità consente di riconoscere gli indirizzi illegali e di notificare l’anomalia con un segnale di eccezione

È il sistema operativo che concede o revoca il diritto di accesso ad una data pagina, impostando opportunamente il bit di validità

Page 39: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.39

Bit di validità nella tabella delle Bit di validità nella tabella delle paginepagine

Pagine/frame di 2KB

Page 40: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.40

Pagine condivisePagine condivise

Codice condivisoCodice condiviso

Una copia di codice di sola lettura (reentrantreentrant ) viene condivisa fra processi (ad es.: text editor, compilatori, sistemi a finestre)

Il codice condiviso deve apparire nella stessa locazione nello spazio degli indirizzi logici di tutti i processi

Codice e dati privatiCodice e dati privati

Ciascun processo mantiene una copia separata dei dati e del codice

Le pagine di codice e dati privati possono apparire ovunque nello spazio degli indirizzi logici

Page 41: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.41

Esempio di pagine condiviseEsempio di pagine condivise

Condivisione di codice in un ambiente di Condivisione di codice in un ambiente di paginazione: editor contenuto in tre paginepaginazione: editor contenuto in tre pagine

Page 42: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.42

Struttura della tabella delle Struttura della tabella delle paginepagine

Paginazione gerarchica

Tabella delle pagine hash

Tabella delle pagine invertita

Page 43: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.43

Paginazione gerarchicaPaginazione gerarchica

Quando lo spazio degli indirizzi logici è grande, la stessa tabella delle pagine viene paginata

Esempio:Esempio:Spazio di indirizzi logici a 32 bit

220 pagine da 4KB

Elementi della tabella da 4 byte

dim. tabella 4MB NO allocazione contigua

paginazione a due paginazione a due livellilivelli

Page 44: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.44

Esempio di paginazione a due Esempio di paginazione a due livellilivelli

Un indirizzo logico (in architetture a 32 bit con dimensione della pagina di 4KB) viene suddiviso in:

un numero di pagina a 20 bitun offset all’interno della pagina di 12 bit

Dato che la tabella delle pagine è paginata, il numero di pagina viene ulteriormente suddiviso in:

un numero di pagina di 10 bit (tabella esterna) un offset di 10 bit

Pertanto, un indirizzo logico si rappresenta come:

dove p1 è un indice nella tabella delle pagine esterna e p2 rappresenta lo spostamento all’interno della pagina indicata dalla tabella esterna

numero di pagina offset

p1 p2 d10

10

12

Page 45: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.45

Schema di traduzione degli Schema di traduzione degli indirizziindirizzi

Dato che ciascun livello viene memorizzato come una tabella separata in memoria, la traduzione di un indirizzo logico in uno fisico può richiedere tre accessi alla memoria

Anche se il tempo richiesto per un accesso alla memoria è triplicato, la presenza di cache consente di mantenere prestazioni ragionevoli

Traduzione degli indirizzi per un’architettura a 32 bit con paginazione a due livelli

Page 46: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.46

Paginazione gerarchica (Cont.)Paginazione gerarchica (Cont.)

Lo schema di paginazione a due livelli non è più adeguato nel caso di sistemi con spazio di indirizzi a 64 bit

La tabella delle pagine esterna avrebbe una dimensione massima di 16 TB

Si opta per una soluzione a più livelli di paginazione (da 3 a 7 nelle architetture a 32/64 bit esistenti)

Tuttavia… per le architetture a 64 bit la paginazione gerarchica è da considerarsi inadeguata a causa dei costi proibitivi di accesso alla memoria in caso di TLB missTLB miss

Page 47: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.47

Schema di paginazione a tre livelliSchema di paginazione a tre livelli

Tabella delle pagine esterna di 16 GBTabella delle pagine esterna di 16 GB

Page 48: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.48

Tabella delle pagine Tabella delle pagine hashhash 1 1

Comune per spazi di indirizzi a più di 32 bit

L’argomento della funzione hash è il numero della pagina virtuale

Per la gestione delle collisioni, ogni elemento della tabella hash contiene una lista concatenata di elementi che la funzione hash fa corrispondere alla stessa posizione nella tabella

Ciascun elemento della tabella è composto da tre campi

Numero della pagina virtuale

Indirizzo del frame corrispondente

Puntatore al successivo elemento nella lista

Page 49: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.49

Tabella delle pagine hash Tabella delle pagine hash 2 2

I numeri di pagina virtuale vengono confrontati con tutti gli elementi della catena

A fronte di una ricerca positiva, si estrae il corrispondente numero di frame

Le tabelle di pagine hash sono particolarmente utili per spazi di indirizzi sparsi, in cui riferimenti alla memoria logica non sono contigui (situazione un po’ irrealistica)

Page 50: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.50

Tabella delle pagine hash Tabella delle pagine hash 3 3

Page 51: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.51

Tabella delle pagine hash Tabella delle pagine hash 4 4

Tabella delle pagine a gruppiTabella delle pagine a gruppi

Adatta a spazi di indirizzamento a 64 bit

Ciascun elemento della tabella delle pagine contiene riferimenti alle pagine fisiche corrispondenti ad un gruppo di pagine virtuali contigue Si riduce lo spazio di memoria richiesto Dato che lo spazio di indirizzi dei programmi è

naturalmente “contiguo in tempo e spazio” (località negli accessi alla memoria), aumentano le prestazioni del sistema

Page 52: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.52

Tabella delle pagine invertita Tabella delle pagine invertita 1 1

Generalmente, si associa una tabella delle pagine ad ogni processo, che contiene un elemento per ogni pagina virtuale che il processo sta utilizzando (o un elemento per ogni possibile indirizzo virtuale, a prescindere dalla validità)

Rappresentazione naturale, dato che i processi si riferiscono alle pagine per mezzo di indirizzi virtuali ed il SO si occupa della traduzione in indirizzi fisici

Problema:Problema: ogni tabella delle pagine può contenere milioni di elementi ed occupare molta memoria

Page 53: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.53

Tabella delle pagine invertita Tabella delle pagine invertita 2 2

Soluzione:Soluzione: tabella delle pagine invertitatabella delle pagine invertita

Un elemento della tabella per ogni frame

Gli elementi della tabella contengono l’indirizzo virtuale della pagina memorizzata nel dato frame, con informazioni sul processo che possiede tale pagina

Riduzione della memoria richiesta per realizzare il mapping indirizzi logici/fisici; incremento del tempo necessario per ricercare nella tabella quando si ha un riferimento a pagina

Notare che è necessario ricercare su tutta la tabella!

Si impiegano tabelle hash per limitare la ricerca ad uno o al più pochi elementi della tabella

Page 54: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.54

Tabella delle pagine invertita Tabella delle pagine invertita 3 3

Ciascun indirizzo virtuale è formato dalla tripla: <#processo, #pagina, offset>

Page 55: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.55

Tabella delle pagine invertita Tabella delle pagine invertita 4 4

Ogni accesso alla tabella hash aggiunge un riferimento alla memoria

Per migliorare le prestazioni, si usa un TLB

Difficile l’implementazione della memoria condivisa, dovuta alla presenza di un solo elemento indicante la pagina virtuale corrispondente ad ogni pagina fisica

Page 56: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.56

Segmentazione Segmentazione 1 1Schema di gestione della memoria che asseconda la visione utente (l’utente generalmente non pensa alla memoria come ad un array lineare di byte)

Un programma è una collezione di segmenti; un segmento è un’unità logica:

Programma principale

Procedure

Funzioni

Oggetti

Metodi

Strutture datiTabelle, matrici, stack,…

Page 57: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.57

Segmentazione Segmentazione 2 2

Ciascun segmento ha lunghezza variabile, definita intrinsecamente dal compito svolto dal segmento come parte del programma utente

Gli elementi, all’interno di un segmento, sono identificati mediante il loro offset dall’inizio del segmento

Ogni indirizzo è rappresentato da una coppia ordinata di valori

<<numero_di_segmento,numero_di_segmento, offset offset > >

Page 58: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.58

Schema logico di segmentazioneSchema logico di segmentazione

1

3

2

4

1

4

2

3

Spazio utente Spazio fisico di memoria

Page 59: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.59

Architettura per la segmentazione Architettura per la segmentazione 1 1

Tabella dei segmentiTabella dei segmenti mappa gli indirizzi fisici bidimensionali; ciascun elemento della tabella contiene:

basebase indirizzo fisico iniziale della memoria contenente il segmento

limitelimite specifica la lunghezza del segmento

Il registro SegmentSegmentTable Base RegisterTable Base Register (STBR) punta alla locazione in memoria della tabella dei segmenti

Il registro SegmentSegmentTable Length RegisterTable Length Register (STLR) indica il numero di segmenti utilizzati dal programma; un numero di segmento ss è legale se ss < STLR < STLR

Page 60: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.60

ProtezioneProtezione: Si associa a ciascun elemento della tabella dei segmenti:

bit di validità 0 segmento illegale

privilegi read/write/execute

La condivisione di codice viene implementata a livello di segmento

Dato che i segmenti variano di dimensione, l’allocazione della memoria è un problema di allocazione dinamica

Architettura per la segmentazione Architettura per la segmentazione 2 2

Page 61: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.61

Hardware di segmentazioneHardware di segmentazione

Page 62: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.62

Esempio di segmentazioneEsempio di segmentazione

Esempi:Esempi:

<2,53> <2,53> 4353 4353

<3,852> <3,852> 4052 4052

<0,1222> <0,1222> TRAP TRAP

Page 63: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.63

CaseCasestudy: Intel Pentiumstudy: Intel Pentium

Supporta sia la segmentazione pura che la segmentazione mista a paginazione

La CPU genera indirizzi logici…

…che confluiscono nell’unità di segmentazione che…

…produce indirizzi lineari

L’indirizzo lineare passa quindi all’unità di paginazione…

…la quale a sua volta genera l’indirizzo fisico all’interno della memoria centrale

Le unità di segmentazione e di paginazione formano un equivalente dell’unità di gestione della memoria (MMU)

Page 64: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.64

Traduzione di indirizzi nel PentiumTraduzione di indirizzi nel Pentium

Page 65: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.65

Segmentazione nel Pentium Segmentazione nel Pentium 1 1Segmenti lunghi al più 4GB; 16KB segmenti al più per ogni processo

Spazio degli indirizzi logici diviso in due partizioni

8KB segmenti riservati (informazioni nella Local Descriptor Table, LDT)

8KB segmenti condivisi (informazioni nella Global Descriptor Table, GDT)

Un indirizzo logico è una coppia <<selettoreselettore,,offset offset >>, dove il selettore è un numero a 16 bit

con s numero del segmento (13 bit), g indicatore di tipo (in LDT o GDT) e p contenente due bit di protezione

g ps

Page 66: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.66

Segmentazione nel Pentium Segmentazione nel Pentium 2 2Un indirizzo lineare del Pentium è lungo 32 bit e si genera come segue:

Il registro segmento punta all’elemento appropriato nella LDT o nella GDT

Le informazioni relative alla base ed al limite di tale segmento vengono utilizzate per generare l’indirizzo lineare

Page 67: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.67

Paginazione nel Pentium Paginazione nel Pentium 1 1L’architettura Pentium prevede che le pagine abbiano una misura di 4KB o 4MB

Per le prime, vige uno schema di paginazione a due livelli secondo lo schema:

I 10 bit più significativi puntano alla tabella delle pagine esterna, detta directory delle paginedirectory delle pagine

Se la pagina ha invece dimensione 4MB, la directory di pagina punta direttamente al frame corrispondente (senza considerare la tabella delle pagine interna)

numero di pagina offset

p1 p2 d10

10

12

Page 68: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.68

Paginazione nel Pentium Paginazione nel Pentium 2 2

Page 69: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.69

Si consideri un sistema di paginazione con la tabella delle pagine conservata in memoria

Se un riferimento alla memoria necessita di 200 nanosecondi per essere servito, di quanto necessiterà un riferimento alla memoria paginata?

Se si aggiunge un TLB con hit ratio del 75%, quale sarà il tempo effettivo di riferimento alla memoria? (Si ipotizzi che un accesso al TLB richieda un tempo trascurabile)

Esercizi Esercizi 1 1

Page 70: Gestione della memoria principale. Sistemi Operativi a.a. 2007-08 8.2 Gestione della memoria principale Background Swapping Allocazione contigua Paginazione.

Sistemi Operativi a.a. 2007-088.70

Si consideri la seguente tabella dei segmenti:

e si calcolino gli indirizzi fisici corrispondenti ai seguenti indirizzi logici

<0,430>

<1,10>

<2,500>

<3,400>

<4,112>

Esercizi Esercizi 2 2

Segmento

Base Lunghezza

0 219 600

1 2300 14

2 90 100

3 1327 580

4 1952 96