77
La Memoria Virtuale La Memoria Virtuale

La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Embed Size (px)

Citation preview

Page 1: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

La Memoria VirtualeLa Memoria Virtuale

Page 2: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.2

La memoria virtualeLa memoria virtuale

Background

Paginazione su richiesta

CopyonWrite

Sostituzione delle pagine

Allocazione dei frame

Thrashing

File mappati in memoria

Allocazione di memoria del kernel

Altre considerazioni

Page 3: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.3

Background Background 1 1Memoria virtualeMemoria virtuale separazione della memoria logica dell’utente dalla memoria fisica

Solo parte del programma deve trovarsi in memoria per l’esecuzione

Lo spazio logico degli indirizzi può essere molto più grande dello spazio fisico

Porzioni di spazio fisico possono essere condivise da più processi

Creazione di nuovi processi più efficiente

La memoria virtuale può essere implementata per mezzo di:

Paginazione su richiesta

Segmentazione su richiesta

Page 4: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.4

Background Background 2 2

Da un esame dei programmi reali risulta che non è sempre necessaria la presenza in memoria dell’intero programma; per esempio…

Porzioni di codice relative a gestione di condizioni di errore insolite o percorsi nel flusso raramente seguiti

Array, liste e tabelle sovradimensionati rispetto all’utilizzo reale

Anche nei casi in cui tutto il programma deve risiedere completamente in memoria è possibile che non serva tutto in una volta

Page 5: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.5

Background Background 3 3

Vantaggi della presenza di “porzioni” di programmi in memoria:

I programmi non sono più vincolati alla quantità di memoria fisica disponibile

Poiché ogni programma impiega meno memoria fisica, aumenta il grado di multiprogrammazione e la produttività della CPU, senza aumentare il tempo di risposta o di turnaround

Per caricare/scaricare ogni programma in memoria è necessario un minor numero di operazioni di I/O Aumentano le prestazioni del sistema

Page 6: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.6

Background Background 4 4Separazione memoria virtuale/memoria fisica Memoria virtuale molto più ampia della memoria

fisica

Page 7: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.7

Programma DProgramma D

Memoria

0000x Programma A-1Programma A-1

Programma B-1Programma B-1

Programma A-2Programma A-2

Programma A-3Programma A-3

Programma B-2Programma B-2

Swap

Background Background 5 5

Page 8: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.8

Programma DProgramma D

Memoria

0000x Programma A-2Programma A-2

Programma B-1Programma B-1

Programma A-1Programma A-1

Programma A-3Programma A-3

Programma B-2Programma B-2

Swap

Background Background 5 5

Page 9: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.9

Background Background 6 6L’espressione spazio degli indirizzi spazio degli indirizzi virtualivirtuali si riferisce alla collocazione dei processi in memoria dal punto di vista logico

Il processo inizia in corrispondenza dell’indirizzo logico 00 e si estende alla memoria contigua fino all’indirizzo MaxMax

Lo heap ospita la memoria allocata dinamicamente (cresce verso indirizzi alti)

Lo stack serve per conservare i parametri locali ai vari sottoprogrammi e cresce (verso il basso) a causa delle ripetute chiamate di funzione Spazio degli

indirizzi virtuali

Page 10: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.10

Background Background 7 7Il “buco” che separa lo heap dalla pila è parte dello spazio degli indirizzi virtuali del processo, ma si richiede l’allocazione di pagine fisiche solo se viene progressivamente “riempito”

Uno spazio virtuale contenente buchi si definisce sparsosparso Utile non solo per le possibili espansioni di heap e

stack ma anche per il collegamento dinamico di librerie (o codice condiviso) durante l’esecuzione del programma

Page 11: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.11

Background Background 8 8

La memoria virtuale facilita la condivisione di file e memoria, mediante condivisione delle pagine fisiche

Le librerie di sistema sono condivisibili mediante mappaturamappatura

Ogni processo vede le librerie come parte del proprio spazio di indirizzi virtuali, ma le pagine che le ospitano effettivamente nella memoria fisica accessibili in sola lettura sono in condivisione fra tutti i processi che utilizzano le librerie

Mediante la condivisione delle pagine in fase di creazione, i nuovi processi possono essere generati più rapidamente

Page 12: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.12

Paginazione su richiesta Paginazione su richiesta 1 1Swapper pigroSwapper pigro Si sposta una pagina in memoria solo quando è necessaria:

Occorrono meno operazioni di I/O

Viene impiegata meno memoria

Si ha una risposta più veloce

Si possono gestire più utenti

Richiesta di una pagina si fa un riferimento alla pagina

Riferimento non valido abortabort

Pagina non in memoria trasferimento in trasferimento in memoriamemoria

Il modulo del SO che si occupa della paginazione su richiesta è il pagerpager

Page 13: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.13

Paginazione su richiesta Paginazione su richiesta 2 2

Swapper tradizionale in un Swapper tradizionale in un sistema paginato con sistema paginato con avvicendamento: trasferimento di avvicendamento: trasferimento di una memoria paginata nello una memoria paginata nello spazio contiguo di un discospazio contiguo di un disco

Lo swapper pigro utilizza un criterio di avvicendamento relativamente a singole pagine… non a processi che non si attiva se non in caso di necessità

Page 14: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.14

Paginazione su richiesta Paginazione su richiesta 3 3

Quando un processo deve essere eseguito, il pager ipotizza quali pagine del processo saranno utilizzate prima che il processo venga nuovamente scaricato dalla memoria Anziché caricare tutto il processo, il pager

trasferisce in memoria solo le pagine che ritiene necessarie

Occorre un meccanismo per distinguere le pagine presenti in memoria da quelle residenti su disco

Utilizzo opportuno del bit di validitàbit di validità presente nella tabella delle pagine

Page 15: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.15

Bit di validità Bit di validità 1 1

Bit di validità: vv pagina in memoria

i i pagina non valida o non residente in memoria

Inizialmente il bit di validità viene posto ad “i” per tutte le pagine

In fase di traduzione degli indirizzi, se il bit di validità vale “i”

si verifica un page faultpage fault

vvvvvv

vvii

iiii

….

#Frame bit di validità

tabella delle pagine

Page 16: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.16

Istantanea di una tabella delle pagine con pagine non allocate in memoria principale

Bit di validità Bit di validità 2 2

L’elemento della tabella delle pagine potrebbe contenere l’indirizzo per reperire la pagina su disco

Page 17: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.17

Page fault Page fault 1 1

Il primo riferimento ad una pagina causa una traptrap al sistema operativo page faultpage fault

Il SO consulta una tabella interna delle pagine (conservata con il PCB) per decidere se si tratta di…

riferimento non valido abort

pagina non in memoria

Nel secondo caso…Seleziona un frame vuoto

Sposta la pagina nel frame

Aggiorna le tabelle delle pagine (bit di validità vv)

Riavvia l’istruzione che era stata interrotta

Page 18: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.18

Page fault Page fault 3 3

Fasi di gestione di un’eccezione di pagina mancante

Page 19: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.19

Paginazione puraPaginazione pura

È possibile avviare l’esecuzione di un processo senza pagine in memoria

Quando il SO carica nel contatore di programma l’indirizzo della prima istruzione del processo, si verifica un page fault

Il processo continua la propria esecuzione, provocando page fault, fino ad ottenere il caricamento in memoria di tutte le pagine “necessarie”

Page 20: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.20

Prestazioni della paginazione su Prestazioni della paginazione su richiestarichiesta

Page Fault Rate:Page Fault Rate: 0 p 1

se p0 non si hanno page fault

se p1, ciascun riferimento è un fault

Tempo medio di accesso (EAT): EAT = EAT = (1(1p)p)t[accesso_alla_memoria] t[accesso_alla_memoria]

pp(t[servizio_page_fault] (t[servizio_page_fault]

t[swap_out_pagina] t[swap_out_pagina] t[swap_in_pagina] t[swap_in_pagina]

t[riavvio_del_processo])t[riavvio_del_processo])Il 50% delle volte che una pagina viene rimpiazzata ha subito delle modifiche e deve essere sottoposta a swap out

•Gestione trap al SO•Context switch•Verifica richiesta di pagina lecita•Reperimento pagina su disco

Page 21: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.21

Esempio di paginazione su Esempio di paginazione su richiestarichiesta

Tempo di accesso alla memoria pari a 200 sec

Tempo medio di servizio dei page fault pari a 8 msec 8000000 sec

EAT = (1p)200 p(8000000)

200 7999800p (in sec)

Nota:Nota: Se un accesso su 1000 causa un page fault, EAT8.2 sec con la paginazione su richiesta l’accesso in memoria viene rallentato di un fattore 40

Se si desidera un rallentamento inferiore al 10%:

p < 0.00000025

si può avere un page fault ogni 399990 accessi alla memoria

Page 22: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.22

Copy-on-Write Copy-on-Write 1 1Il processo di copiatura su scritturacopiatura su scrittura, CopyCopyononWriteWrite, COWCOW, permette alla coppia di processi padrefiglio di condividere, inizialmente, le stesse pagine di memoria

Se uno dei due processi modifica una pagina condivisa, e solo in quel caso, viene creata una copia della pagina

La tecnica COW garantisce una modalità di creazione dei processi più efficiente, grazie alla copia delle sole pagine (condivise) modificate

L’allocazione delle nuove pagine per effetto di un’operazione di copia avviene mediante una tecnica nota come azzeramento su richiestaazzeramento su richiesta

Prima dell’allocazione, il contenuto delle pagine viene azzerato

Page 23: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.23

Copy-on-Write Copy-on-Write 2 2

Prima della modifica della pagina C da parte del processo1

Page 24: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.24

Copy-on-Write Copy-on-Write 3 3

Dopo la modifica della pagina C da parte del processo1

page Copy_C

Dopo la modifica della pagina C da parte del processo1

Page 25: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.25

Sostituzione di paginaSostituzione di pagina si trova una pagina in memoria che non risulti attualmente utilizzata e si sposta sul disco

Scelta di un algoritmo di selezione

Prestazioni: è richiesto un metodo che produca il minimo numero di page fault

La stessa pagina può essere riportata in memoria più volte

Cosa accade quando non ci sono frame Cosa accade quando non ci sono frame liberi ?liberi ?

Page 26: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.26

Sostituzione delle pagine Sostituzione delle pagine 1 1

La sovraallocazione della memoria si verifica quando è richiesta più memoria di quella effettivamente disponibile

Si previene la sovraallocazione delle pagine modificando le routine di servizio del page fault, includendo la sostituzione delle pagine

Si impiega un bit di modifica (dirtydirty ) per ridurre il sovraccarico dei trasferimenti di pagine: solo le pagine modificate vengono riscritte sul disco

La sostituzione delle pagine completa la separazione fra memoria logica e memoria fisica una grande memoria virtuale può essere fornita ad un sistema con poca memoria fisica

Page 27: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.27

Sostituzione delle pagine Sostituzione delle pagine 2 2

Page 28: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.28

1. Individuazione della pagina richiesta su disco

2. Individuazione di un frame libero:

A. Se esiste un frame libero, viene utilizzato

B. Altrimenti viene utilizzato un algoritmo di sostituzione per selezionare un frame vittimavittima

C. La pagina vittima viene scritta sul disco; le tabelle delle pagine e dei frame vengono modificate conformemente

3. Lettura della pagina richiesta nel frame appena liberato; modifica delle tabelle delle pagine e dei frame

4. Riavvio del processo utente

Sostituzione delle pagine Sostituzione delle pagine 3 3

Page 29: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.29

Sostituzione delle pagine Sostituzione delle pagine 4 4

Page 30: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.30

Algoritmi di sostituzione delle Algoritmi di sostituzione delle pagine pagine 1 1

Richiesta:Richiesta: minimizzare la frequenza di page fault

Si valutano gli algoritmi eseguendoli su una particolare stringa di riferimenti a memoria (reference stringreference string ) e contando il numero di page fault su tale stringa

In tutti gli esempi seguenti, la reference string è:

1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 51, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

Page 31: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.31

Grafico del numero di page fault rispetto al numero di frame

Algoritmi di sostituzione delle Algoritmi di sostituzione delle pagine pagine 2 2

Page 32: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.32

Stringa dei riferimenti: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

3 frame (3 pagine per ciascun processo possono trovarsi contemporaneamente in memoria)

4 frame

Algoritmo FIFO Anomalia di BeladyAnomalia di Belady

più frame più page fault

Algoritmo First–In–First–Out (FIFO)Algoritmo First–In–First–Out (FIFO)

1

2

3

1

2

3

4

1

2

5

3

4

9 page fault

1

2

3

1

2

3

5

1

2

4

5 10 page fault

44 3

Page 33: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.33

Curva dei page fault Curva dei page fault per sostituzione FIFOper sostituzione FIFO

Anomalia di Anomalia di BeladyBelady

15 15 faultfault

Sostituzione delle pagine FIFOSostituzione delle pagine FIFO

Page 34: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.34

Algoritmo ottimoAlgoritmo ottimo

Sostituire la pagina che non verrà usata per il periodo di tempo più lungo

Esempio:Esempio: 4 frame, con stringa dei riferimenti

1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5

Come si può conoscere l’identità della pagina?

Di solo interesse teorico: viene impiegato per misurare le prestazioni (comparative) degli algoritmi con valenza pratica

1

2

3

4

6 page fault

4 5

Page 35: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.35

Sostituzione delle pagine ottimaSostituzione delle pagine ottima

9 9 faultfault

Page 36: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.36

Stringa dei riferimenti:

1, 2, 3, 4, 1, 2, 55, 1, 2, 33, 44, 55

Implementazione con contatoreImplementazione con contatore

Ciascuna pagina ha un contatore; ogni volta che si fa riferimento alla pagina si copia l’orologio nel contatore

Quando si deve rimuovere una pagina, si analizzano i contatori per scegliere quale pagina cambiare

Algoritmo LeastAlgoritmo LeastRecentlyRecentlyUsed Used (LRU) (LRU)

55

2

4

3

1

2

3

4

1

2

55

4

1

2

5

33

1

2

44

3

Page 37: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.37

Sostituzione delle pagine LRUSostituzione delle pagine LRU

12 12 faultfault

Page 38: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.38

Algoritmo LRU (Cont.)Algoritmo LRU (Cont.) Implementazione con stackImplementazione con stack si mantiene uno stack di numeri di pagina in forma di lista doppiamente concatenata:

Pagina referenziata:

Si sposta in cima allo stack

È necessario al più aggiornare 6 puntatori

Non è necessario fare ricerche per la scelta

Utilizzo dello stack per registrare i riferimenti alle pagine più recenti

Page 39: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.39

Algoritmi di approssimazione a LRU Algoritmi di approssimazione a LRU 1 1

Bit di riferimentoBit di riferimentoA ciascuna pagina si associa un bit, inizialmente 0

Quando si fa riferimento alla pagina si pone il bit a 1

Si rimpiazza la pagina il cui bit di riferimento vale 0 (se esiste)

Tuttavia… non si conosce l’ordine di accesso alle pagine

Alternativamente…Registrazione dei bit di riferimento ad intervalli regolari (100 msec) in un registro a scorrimento

pi con registro di scorrimento 11000100 acceduta più recentemente di pj con valore 01100101

La pagina LRU è quella cui corrisponde l’intero unsigned più piccolo

Page 40: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.40

Algoritmi di approssimazione a LRU Algoritmi di approssimazione a LRU 2 2

Seconda ChanceSeconda ChanceAlgoritmo di base: FIFO

È necessario un bit di riferimento

Quando la pagina riceve una seconda chance il bit di riferimento viene azzerato ed il tempo di arrivo viene aggiornato al tempo attuale

Se la pagina da rimpiazzare (in ordine di clock) ha il bit di riferimento 1, allora:

Si pone il bit di riferimento a 0

Si lascia la pagina in memoria

Si rimpiazza la pagina successiva (in ordine di clock), in base alle stesse regole

Page 41: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.41

Algoritmo di sostituzione delle pagine Seconda Algoritmo di sostituzione delle pagine Seconda ChanceChance

Page 42: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.42

Algoritmi di approssimazione a LRU Algoritmi di approssimazione a LRU 3 3

Seconda Chance miglioratoSeconda Chance miglioratoSi considera la coppia (bit_riferimento, bit_modifica)

Si ottengono quattro classi(0,0), non recentemente usata né modificata

(0,1), non usata recentemente ma modificata

(1,0), usata recentemente, ma non modificata

(1,1), usata recentemente e modificata

Si sostituisce la prima pagina che si trova nella classe minima non vuota

La coda circolare deve essere scandita più volte prima di reperire la pagina da sostituire

Page 43: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.43

Algoritmi con conteggioAlgoritmi con conteggio

Si tiene un contatore del numero di riferimenti che sono stati fatti a ciascuna pagina

Algoritmo LFUAlgoritmo LFU (Least Frequently UsedLeast Frequently Used ): si rimpiazza la pagina col valore più basso del contatore

Algoritmo MFUAlgoritmo MFU (Most Frequently UsedMost Frequently Used ): è basato sulla assunzione che la pagina col valore più basso del contatore è stata spostata recentemente in memoria e quindi deve ancora essere impiegata

L’implementazione è molto costosa; le prestazioni (rispetto all’algoritmo ottimo) scadenti

Page 44: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.44

Qualche trucco… Qualche trucco… 1 1Si mantiene sempre un pool di frame liberi:

Quando si verifica un page fault, si seleziona un frame vittima, ma prima di trascriverlo in memoria secondaria, si procede alla copia della pagina richiesta in un frame del pool

Il processo può essere riattivato rapidamente, senza attendere la fine dell’operazione di salvataggio del frame vittima sulla memoria di massa

Alternativamente:Quando si verifica un page fault, prima di accedere alla memoria di massa, si controlla se la pagina richiesta è ancora presente nel pool dei frame liberi

Non è necessaria nessuna operazione di I/O

Page 45: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.45

Qualche trucco… Qualche trucco… 2 2

Ogni volta che il dispositivo di paginazione è inattivo:

Si sceglie una pagina modificata, la si salva su disco e si reimposta il relativo bit di modifica

Aumenta la probabilità che, al momento della selezione di una vittima, questa non abbia subito modifiche e non debba essere trascritta su disco

Page 46: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.46

Allocazione dei frameAllocazione dei frameCiascun processo richiede un numero minimo di pagine fisiche

Il numero minimo di frame necessari per ogni processo è definito dall’architettura, il massimo dalla disponibilità di memoria

EsempioEsempio nell’IBM 370 l’istruzione MVCMVC (da memoria a memoria) può utilizzare fino a 6 frame:

L’istruzione occupa 6 byte, quindi può dividersi su 2 pagine

2 pagine per gestire fromfrom

2 pagine per gestire toto

Si hanno due schemi principali di allocazione:Allocazione uniformeAllocazione uniforme

Allocazione proporzionaleAllocazione proporzionale

Page 47: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.47

Allocazione staticaAllocazione statica

Allocazione uniformeAllocazione uniforme Per esempio, se si hanno a disposizione 100 frame per 5 processi, si assegnano 20 pagine a ciascun processo

Allocazione proporzionaleAllocazione proporzionale Si allocano frame sulla base della dimensione del processo

si = dimensione del processo pi (in frame)

S si

m = numero complessivo dei frame

ai allocazione per il processo pi (si/S)m

ESEMPIOESEMPIO

m 64

s110

s2127

a1(10/137)645

a2(127/137)6459

Page 48: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.48

Allocazione con prioritàAllocazione con priorità

Si impiega uno schema di allocazione proporzionale in base alla priorità piuttosto che alla dimensione

Se il processo Pi genera un page fault…

Si seleziona per la sostituzione uno dei suoi frame

Si seleziona per la sostituzione un frame di un processo con valore di priorità più basso

Page 49: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.49

Allocazione locale e allocazione Allocazione locale e allocazione globaleglobale

Sostituzione globaleglobale il processo seleziona il frame da sostituire dall’insieme di tutti i frame; il processo può selezionare un frame di un altro processo Un processo non può controllare la propria frequenza

di page fault

Sostituzione localelocale ciascun processo seleziona i frame solo dal proprio insieme di frame allocati Non rende disponibili a processi che ne facciano

richiesta pagine di altri processi scarsamente utilizzate

La sostituzione globale garantisce maggior throughput Più utilizzata nei SO più diffusi

Page 50: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.50

Thrashing Thrashing 1 1

Se un processo non ha abbastanza pagine fisiche a disposizione, la frequenza di page fault è molto alta

Basso impiego della CPU

Il SO crede di dover aumentare il grado di multiprogrammazione

si aggiunge un altro processo al sistema!

ThrashingThrashing un processo è costantemente occupato a spostare pagine dal disco alla memoria e viceversa

Page 51: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.51

Thrashing Thrashing 2 2

La paginazione degenera trashing

Page 52: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.52

Paginazione su richiesta e Paginazione su richiesta e thrashingthrashing

Perché la paginazione su richiesta funziona?

Modello di località:Modello di località:

Una località è un insieme di pagine che vengono accedute insieme che sono contemporaneamente in uso attivo

Il processo passa da una località ad un’altra

Le località possono essere sovrapposte

Perché avviene il thrashing?

(dim. località) > dim. memoria totale

Page 53: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.53

Località in una sequenza di riferimenti a Località in una sequenza di riferimenti a memoriamemoria

Le località hanno una connotazione spaziotemporale

EsempioEsempioQuando viene invocato un sottoprogramma, si definisce una nuova località: vengono fatti riferimenti alle sue istruzioni, alle sue variabili locali ed a un sottoinsieme delle variabili globaliQuando il sottoprogramma termina, il processo lascia la località corrispondenteLe località sono definite dalla struttura del programma e dei dati

Page 54: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.54

Modello workingModello workingset set 1 1

finestra di working–set un numero fissato di riferimenti a pagina

Esempio:Esempio: 10.000 istruzioni

WSSi (workingset del processo Pi ) numero di pagine referenziate nel più recente (varia col tempo):

se è troppo piccolo non comprende tutta la località

se è troppo grande comprenderà più località

se comprende l’intero programma

D WSSi numero totale di pagine richieste

se D m (numero totale dei frame) Thrashing

Politica:Politica: se D m, occorre sospendere un processo

Page 55: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.55

Modello workingModello workingset set 2 2

Page 56: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.56

Come stabilire lo workingCome stabilire lo workingset?set?

Problema:Problema: la finestra del workingset è “mobile”, con riferimenti che entrano ed escono dal workingset

Si approssima con un interrupt del timer e un bit di riferimento

Esempio:Esempio: 10.000

Il timer emette un interrupt ogni 5000 unità di tempo

Si tengono in memoria 2 bit per ogni pagina

Quando si ha un interrupt del timer, si copiano i valori di tutti i bit di riferimento e si pongono a 0

Se uno dei bit in memoria è 1 pagina nel workingset

Questo approccio non è completamente accurato

MiglioramentoMiglioramento: 10 bit e interrupt ogni 1000 unità di tempo

Page 57: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.57

Frequenza di page faultFrequenza di page fault

Si stabilisce una frequenza di page fault “accettabile”

Se la frequenza effettiva è troppo bassa, il processo rilascia dei frame

Se la frequenza è troppo elevata, il processo acquisisce nuovi frame

Page 58: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.58

File mappati in memoria File mappati in memoria 1 1

L’I/O su file mappati in memoria fa sì che si tratti l’I/O su file come un normale accesso alla memoria

Si realizza associando un blocco del disco ad una o più pagine residenti in memoria

L’accesso iniziale al file avviene tramite una normale richiesta di paginazione

Una porzione del file, pari ad una pagina, viene caricata dal sistema in una pagina fisica

Ogni successiva lettura e scrittura del file viene gestita come un accesso ordinario alla memoria

Page 59: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.59

File mappati in memoria File mappati in memoria 2 2Semplifica l’accesso a file perché ne permette la manipolazione attraverso la memoria invece di appesantire il sistema con system call read() e write()

Page 60: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.60

File mappati in memoria File mappati in memoria 3 3Permette a più processi di mappare contemporaneamente lo stesso file, garantendo la condivisione di pagine di memoria

Page 61: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.61

Allocazione di memoria del kernelAllocazione di memoria del kernel

Il kernel, per allocare la propria memoria, attinge ad una riserva di memoria libera diversa dalla lista usata per soddisfare i processi utente

Il kernel richiede memoria per strutture dati dalle dimensioni variabili

Parti della memoria del kernel devono essere contigue

Page 62: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.62

Sistema buddy Sistema buddy 1 1

Utilizza un segmento di dimensione fissa per l’allocazione della memoria, composto da pagine fisicamente contigue

La memoria viene allocata attraverso un allocatoreallocatorepotenzapotenzadidi22

Alloca memoria in unità di dimensioni pari a potenze del 2

La quantità richiesta viene arrotondata alla più piccola potenza del 2 che la contiene

Quando si richiede meno memoria di quella disponibile, il segmento corrente viene diviso in due segmenti gemelli di identica dimensione

Il procedimento continua fino ad ottenere il segmento minimale per l’allocazione richiesta

Page 63: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.63

Sistema buddy Sistema buddy 2 2

Page 64: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.64

Sistema buddy Sistema buddy 3 3

Offre il vantaggio di poter congiungere rapidamente buddy adiacenti a formare segmenti di memoria contigua più lunghi (tecnica nota come coaleshingcoaleshing fusionefusione)

L’arrotondamento della dimensione del blocco alla potenza del due più piccola che lo contiene può generare frammentazione interna

Page 65: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.65

Allocazione a lastre Allocazione a lastre 1 1Una lastralastra è composta da una o più pagine fisicamente contigue

Una cachecache consiste di una o più lastre

Vi è una sola cache per ciascuna categoria di strutture dati del kernel:

Una cache dedicata ai PCB, una ai descrittori di file, una ai semafori, etc.

Quando si crea una cache, un certo numero di oggetti, inizialmente dichiarati “liberi”, viene assegnato alla cache

Quando una struttura dati del kernel deve essere allocata, si sceglie dalla cache opportuna un qualunque oggetto libero e lo si marca come “in uso”

Page 66: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.66

Allocazione a lastre Allocazione a lastre 2 2Si annulla lo spreco di memoria derivante dalla frammentazione

Le richieste di memoria vengono soddisfatte rapidamente

Page 67: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.67

Altre considerazioniAltre considerazioni Prepaging Prepaging

Per ridurre il gran numero di page fault necessari allo startup del processo in regime di paginazione pura…

PrepagingPrepaging

Si portano in memoria tutte o alcune delle pagine necessarie al processo, prima che vengano referenziate; ad esempio, si può memorizzare il workingset al momento della sospensione per I/O per poi riprendere tutte le pagine che gli appartengono

Tuttavia… se le pagine precaricate non vengono utilizzate, si spreca I/O e memoria

Page 68: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.68

Prepaging (Cont.)Prepaging (Cont.)

Si assuma di utilizzare una percentuale a delle s pagine prepaginate

Il costo di sa page fault evitati è maggiore o minore del costo di prepaginazione di s(1a) pagine precaricate ma non utilizzate?

Per a vicino a zero il prepaging “perde”

Page 69: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.69

Dimensione delle pagineDimensione delle pagine

Criteri per la determinazione della dimensione dimensione delle paginedelle pagine:

frammentazione

località (si riduce l’I/O totale) pagine di piccole dimensioni

dimensione della tabella delle pagine

sovraccarico (overhead) di I/O pagine di grandi dimensioni

Page 70: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.70

TLB Reach TLB Reach TLB ReachTLB Reach : quantità di memoria accessibile via TLB, (dim. TLB)(dim. pagina)

Idealmente, il workingset di ogni processo dovrebbe essere contenuto nel TLB

Altrimenti il numero di page fault diviene proibitivo

Aumentare la dimensione delle pagine

Potrebbe portare ad un incremento della frammentazione, dato che non tutte le applicazioni richiedono pagine grandi

Prevedere pagine di diverse dimensioni

Permette l’utilizzo di pagine grandi alle applicazioni che lo richiedono, senza aumento della frammentazione

Page 71: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.71

Struttura dei programmiStruttura dei programmi

int data[128][128];

Ciascuna riga viene memorizzata in una pagina

Programma 1Programma 1

for (j=0; j<128; j++) for (i=0; i<128; i++) data[i][j] = 0;

128128 16384 page fault

Programma 2Programma 2

for (i=0; i<128; i++) for (j=0; j<128; j++) data[i][j] = 0;

128 page fault

Page 72: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.72

Interlock di I/OInterlock di I/O

Talvolta, occorre permettere ad alcune pagine di rimanere bloccatebloccate in memoria

Esempio:Esempio: Le pagine utilizzate per copiare un file da un device di I/O devono essere bloccate, per non essere selezionate come vittime da un algoritmo di sostituzione

Page 73: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.73

EsempioEsempio: Windows XP : Windows XP 1 1

Impiega la paginazione su richiesta via clustering

Con il clustering si gestiscono le assenze di pagina caricando in memoria non solo la pagina richiesta, ma più pagine ad essa adiacenti

Alla sua creazione, un processo riceve le dimensioni minima e massima del workingset (50-345)

Il workingset minimo è il minimo numero di pagine caricate in memoria per un processo (assegnazione garantita dal SO)

Ad un processo possono essere assegnate al più tante pagine fisiche quanto vale la dimensione del suo workingset massimo

Page 74: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.74

EsempioEsempio: Windows XP : Windows XP 2 2

Quando la quantità di memoria libera nel sistema scende sotto una data soglia, si effettua un procedimento di ridimensionamento automatico del workingset, per riportare la quantità di memoria libera a livelli “accettabili”

Si rimuovono le pagine di quei processi che ne possiedono in eccesso (rispetto alla dimensione) del minimo workingset

Page 75: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.75

Esercizio 1Esercizio 1Facendo riferimento ad un ambiente di gestione della memoria virtuale con paginazione su richiesta, si consideri un processo caratterizzato dalla seguente stringa di riferimenti a pagina:

1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 61 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6 Si illustri il comportamento dell’algoritmo LRU nel caso in cui al processo siano assegnati 4 blocchi fisici, supponendo un regime iniziale di paginazione pura

Come supporto alla trasformazione degli indirizzi viene usato un TLB: l’accesso alla memoria centrale richiede 200sec, la ricerca nella tabella associativa 20sec; si calcoli il tempo medio di accesso ai dati supponendo un hit ratio del 75% e che la pagina acceduta sia attualmente presente in memoria

Page 76: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.76

Esercizio 2Esercizio 2Supponendo che lo spazio degli indirizzi virtuali sia costituito da otto pagine, mentre la memoria fisica può allocarne effettivamente quattro, si stabilisca quanti page fault hanno luogo utilizzando una strategia di sostituzione LRU, relativamente alla stringa di riferimenti alle pagine

0 2 1 3 4 6 3 7 4 7 3 3 5 5 3 1 1 1 1 7 2 3 4 1

Page 77: La Memoria Virtuale Sistemi Operativi a.a. 2007-08 9.2 La memoria virtuale Background Paginazione su richiesta Copy on Write Sostituzione delle pagine

Sistemi Operativi a.a. 2007-089.77

Esercizio 3Esercizio 3Si consideri il seguente frammento di programma in linguaggio C:

Si supponga che un intero occupi una parola (2 byte) e si calcoli il numero di page fault generati dal programma se si possono allocare, in ogni momento…

…2 pagine contenenti 100 parole per ognuno dei vettori a e b…3 pagine contenenti 100 parole per ognuno dei vettori a e b…2 pagine contenenti 500 parole per ognuno dei vettori a e b

Si utilizzi la strategia FIFO; si assuma infine che il codice e la variabile i siano collocati in un’altra pagina e che nessun accesso a tali entità provochi un page fault; La memoria è inizialmente vuota