Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL...

125
1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche Università di Modena e Reggio Emilia http://weblab.ing.unimo.it/people/andreolini/didattica/sistemi-operativi

Transcript of Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL...

Page 1: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

1

Lezione 16MemoriaSistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015Dipartimento di Scienze Fisiche, Informatiche e MatematicheUniversità di Modena e Reggio Emiliahttp://weblab.ing.unimo.it/people/andreolini/didattica/sistemi-operativi

Page 2: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

2

Quote of the day(Meditate, gente, meditate...)

“Bad programmers worry about the code. Good programmers worry about data structures and their relationships. ”Linus Torvalds (1969-)ProgrammatoreAutore di Subsurface

Page 3: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

3

INTRODUZIONE

Page 4: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

4

Problema: separazione dei processi(Necessaria, altrimenti è possibile manomettere altre applicazioni)

Per poter eseguire, i processi hanno bisogno di memoria.La memoria assegnata ad un processo non deve poter essere accessibile ad altri (a meno che non lo si voglia esplicitamente).

Altrimenti, un'applicazione maliziosa potrebbecancellare (o, peggio, alterare) la sua memoria.

→ Serve un meccanismo per isolare la memoria di processi diversi.

Page 5: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

5

Problema: rappresentazione memoria(Preferibilmente contigua, altrimenti le strutture dati del kernel esplodono)

Il kernel deve annotarsi la memoria allocata ai processi.Se la memoria è allocata in tanti blocchi distanti fra loro, è più oneroso per il kernel tenerne traccia.

Liste con tantissimi elementi (lookup molto lento).È preferibile usare pochi blocchi contigui.

Ciò diventa sempre più difficile all'aumentare deiprocessi.

→ Serve un meccanismo per garantire blocchi contigui di memoria in presenza di più processi.

Page 6: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

6

Problema: separazione dei processi(Necessaria, altrimenti è possibile manomettere altre applicazioni)

Per poter eseguire, i processi hanno bisogno di memoria.La memoria assegnata ad un processo non deve poter essere accessibile ad altri (a meno che non lo si voglia esplicitamente).

Altrimenti, un'applicazione maliziosa potrebbecancellare (o, peggio, alterare) la sua memoria.

→ Serve un meccanismo per isolare la memoria di processi diversi.

Page 7: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

7

Problema: caricamento applicazioni(Il caricamento dell'intera applicazione è inefficiente)

Per poter eseguire, i processi hanno bisogno di essere caricati in memoria.Una strategia naive è quella di caricare l'intera applicazione in memoria prima di avviarla.

Alcune applicazioni (Firefox, Libreoffice) sono enormi.Alcune applicazioni (emacs) sono usate al10%-20% del loro potenziale. Si finisce per caricarecodice che non sarà mai eseguito.

→ Serve un meccanismo per poter caricare solo ciò che serve (codice, dati) di una applicazione.

Page 8: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

8

Problema: caching(Il caricamento dei dati da disco è lento ed inefficiente; va minimizzato)

Le unità di memorizzazione di massa possono essere molto lente.Il caricamento dei dati da tali unità deve essere fatto solo se necessario.

L'eventuale rilettura di un dato già letto va evitatacome la peste.Il processo lento di scrittura non va avviato per ognisingolo byte.

→ Servono meccanismi di caching e buffering per limitare le interazioni con dischi lenti.

Page 9: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

9

Le idee vincenti 1/2(Facili a dirsi, difficili a farsi)

Dare ad ogni processo l'illusione di essere l'unico in memoria centrale.

→ Spariscono di colpo tutte le preoccupazioni legatealla sovrapposizione di partizioni.

Partizionare in blocchi piccoli le unità di memoria assegnabili ai processi.

→ Si riduce di molto la frammentazione esterna.

Page 10: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

10

Le idee vincenti 2/2(Facili a dirsi, difficili a farsi)

Usare più schemi di indirizzi di memoria.Schema virtuale: usato dal processore per:

creare zone di memoria contigue sparisce la→frammentazione esterna.associare l'indirizzo di memoria a RAM o disco

implementazione efficiente dello swap.→Schema fisico: usato per accedere al chip RAM.È necessario mappare lo schema virtuale nello schema fisico in maniera efficiente.

Page 11: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

11

Supporto hardware nelle CPU Intel(Implementa le idee summenzionate)

Segmentazione (dall'8086).Suddivisione della memoria di un processo in aree peril codice, i dati, lo stack. Ciascun blocco ha il proprio intervallo di indirizzi e permessi di accesso.

Paginazione (dall'80386).Visione della memoria di un processo per blocchettidi dimensione piccola (4KB). Ciascun blocco ha ilproprio intervallo di indirizzi e permessi di accesso.

→ Su questi due supporti per schemi di inidirizzi si fonda il sottosistema di memoria virtuale dei moderni SO.

Page 12: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

12

Schemi degli indirizzi(Logici, lineari, fisici)

Indirizzo logico: generato dalla CPU, dato in pasto all'unità di segmentazione.Indirizzo lineare: prodotto dell'unità di segmentazione, viene dato in pasto alla unità di paginazione.Indirizzo fisico: prodotto dell'unità di paginazione, viene usato per accedere al dato.

jmp 0058:FFEC

Unità disegmentazione

0058:FFEC 0x9121C Unità dipaginazione

0x4000021C

CPU

NorthBridge

RAM

logico lineare fisico

Page 13: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

13

GESTIONE MEMORIA KERNEL

Page 14: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

14

Buddy system(Un allocatore a potenze di due)

Il kernel gestisce la memoria fisica libera mediante un allocatore a potenze di due.

Nei processori più recenti, tale area di memoria ègestita da più allocatori, ciascuno per ogni CPU.Per semplicità, si propone la versione su singola CPU.

In un allocatore a potenze di due, le richieste di memoria sono soddisfatte, per l'appunto, a potenze di due.

4KB, 8KB, 16KB, 32KB, …Richiesta di 11KB: soddisfatta con un blocco di 16KB.

Page 15: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

15

Rappresentazione ad albero(I nodi sono aree di memoria libera e fisicamente contigua)

I frame fisici sono organizzati in un albero. Ciascun nodo è un blocco di memoria fisica contigua.Si supponga di dover servire una richiesta di 21KB. Come opera l'allocatore?

256KB

128KB 128KB

64KB 64KB

32KB 32KB

Page 16: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

16

Un esempio di uso(Costruzione ricorsiva dell'albero)

Inizialmente è presente un solo nodo (di 256KB per semplicità).Viene ricevuta la richiesta di 21KB.

256KB

Page 17: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

17

Un esempio di uso(Costruzione ricorsiva dell'albero)

L'allocatore considera l'unico blocco foglia da 256KB.La dimensione del blocco libero è maggiore del doppio di 21KB.L'allocatore spacca a metà il blocco, creando due blocchi da 128KB.I due blocchi da 128KB si chiamano compari (buddy).

256KB

128KB 128KB

Page 18: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

18

Un esempio di uso(Costruzione ricorsiva dell'albero)

L'allocatore considera il primo blocco foglia da 128KB.La dimensione del blocco libero è maggiore del doppio di 21KB.L'allocatore spacca a metà il blocco, creando due blocchi da 64KB.

256KB

128KB 128KB

64KB 64KB

Page 19: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

19

Un esempio di uso(Costruzione ricorsiva dell'albero)

L'allocatore considera il primo blocco foglia da 64KB.La dimensione del blocco libero è maggiore del doppio di 21KB.L'allocatore spacca a metà il blocco, creando due blocchi da 32KB.

256KB

128KB 128KB

64KB 64KB

32KB 32KB

Page 20: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

20

Un esempio di uso(Assegnazione di un blocco)

L'allocatore considera il primo blocco foglia da 32KB.La dimensione del blocco libero è:

maggiore di 21KB.minore di 42KB.

→ Non si può spezzare ulteriormente. Si associa un blocco da 32KB.

256KB

128KB 128KB

64KB 64KB

32KB 32KB

Page 21: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

21

Un esempio di uso(Fusione di blocchi liberi adiacenti)

Quando il blocco è restituito l'allocatore prova a fondere il blocco liberato con il suo vicino (coalescing).

256KB

128KB 128KB

64KB 64KB

32KB 32KB

Coalescing

Page 22: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

22

Un esempio di uso(Fusione di blocchi liberi adiacenti)

Se ci riesce (ossia, se il compare è libero) l'allocatore prova a fondere compari contigui sempre più grandi.

256KB

128KB 128KB

64KB 64KB

Coalescing

Page 23: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

23

Cenni implementativi(Buddy system in Linux)

In Linux, l'albero è implementato tramite la struttura dati seguente:

struct free_area.$LINUX/include/mm.h.

L'elemento i contiene blocchi di 2i frame fisici (detti di ordine i).

012345689

order free_area

1011

Page 24: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

24

Allocazione e rilascio di frame fisici(Tramite funzioni molto semplici)

L'allocazione ed il rilascio di frame fisici avviene tramite le funzioni già viste (e parte integrante dell'allocatore buddy):

alloc_pages().free_pages().

Page 25: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

25

Organizzazione dell'allocatore(Per “lastre” di “oggetti”; si allarga e si accorcia come una fisarmonica)

Uno SLAB è un insieme di pagine logiche associate a frame fisici contigui.Uno o più SLAB contigui formano una cache.Ciascuna cache è un contenitore di oggetti.Un oggetto è un'area di memoria di una specifica dimensione.

Struttura dati, buffer.Una cache contiene solo oggetti di un dato tipo.Implementazione: in due file.

$LINUX/mm/slab.c, $LINUX/mm/slab-common.c.

Page 26: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

26

Architettura dello SLAB(Un'immagine vale più di 1000 parole)

Oggetti Cache SLAB

Oggettida 3KB

Oggettida 7KB

Uno SLAB(gruppo dipaginecontiguefisicamente)Padding

Page 27: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

27

Stati di uno SLAB(Pieno, vuoto, parzialmente vuoto)

Pieno.Tutti i suoi oggetti sono marcati in uso.

Vuoto.Tutti i suoi oggetti sono marcati liberi.

Parzialmente vuoto.I primi oggetti sono marcati in uso, i rimanentisono marcati liberi.

Tutti gli oggetti in un dato stato sono mantenuti vicini si riduce la frammentazione esterna.→

Page 28: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

28

Creazione cache(“Formatta” lo spazio di memoria fisico)

Una cache è creata in fase di inizializzazione.Boot del kernel, caricamento di un modulo.

Operazioni svolte:Prenotazione memoria logica.Associazione con frame fisici contigui.Suddivisione di una cache in SLAB.Creazione degli oggetti liberi all'interno degli SLAB.Padding fra oggetti.

Funzione kmem_cache_create().

Page 29: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

29

Esempio di creazione cache(Inode cache di EXT4)

Un esempio di kmem_cache_create() è preso dal codice di EXT4 per la creazione delle strutture dati relative agli inode.Si usa una cache di struct ext4_inode_info.

File $LINUX/fs/ext4/super.c.Funzione init_inodecache().

Page 30: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

30

Recupero di un elemento dalla cache(Semplicissimo)

La funzione kmem_cache_alloc() individua un oggetto libero dalla cache e lo ritorna all'utente.Dopo l'uso, l'oggetto può essere restituito alla cache con la funzione kmem_cache_free().

Page 31: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

31

Individuazione di un oggetto libero 1/2(L'allocatore mantiene aggiornati diversi puntatori)

L'allocatore SLAB gestisce diversi puntatori per motivi di efficienza

puntatore allo SLAB parzialmente vuoto.puntatore al primo SLAB vuoto.puntatore al primo oggetto libero all'interno di unoSLAB.

Page 32: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

32

Individuazione di un oggetto libero 2/2(L'allocatore mantiene aggiornati diversi puntatori)

Quando il kernel richiede una struttura dati, l'allocatore cerca di fornire il primo oggetto libero all'interno dello SLAB parzialmente vuoto.Se non esistono SLAB parzialmente vuoti, si fornisce il primo oggetto libero del primo SLAB vuoto.Se non esiste uno SLAB vuoto, l'allocatore ne crea uno (cache grow) e lo appende in fondo alla cache.

Page 33: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

33

Gestione dimensione cache(L'allocatore mantiene aggiornati diversi puntatori)

La dimensione di una cache è gestita in maniera trasparente all'utente e dinamica attraverso due funzioni.

kmem_cache_grow(): aggiunge uno SLAB ad unacache esistente.kmem_cache_shrink(): rimuove uno SLAB dauna cache esistente.

La memoria è presa/restituita dall'/all'allocatore buddy.

Page 34: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

34

Distruzione cache(Rilascia la memoria prenotata)

La funzione kmem_cache_destroy() distrugge le strutture dati di gestione della cache e ritorna le pagine all'allocatore buddy.

Page 35: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

35

Vantaggi dell'allocatore SLAB(Diversi)

L'allocatore SLAB non soffre del problema della frammentazione interna (la memoria viene ritornata “su misura”).Gli oggetti sono preallocati in fase di creazione degli SLAB; le funzioni di allocazione e deallocazione della memoria sono velocissime.

Page 36: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

36

Svantaggi dell'allocatore SLAB(Uno, ma particolarmente fastidioso)

L'allocatore SLAB richiede una struttura dati ben precisa su cui costruire la cache.Che succede se un utente vuole allocare un buffer generico di n byte (n potenza di due)?

Page 37: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

37

kmalloc(), kfree()(La soluzione al problema precedente)

Il kernel mette a disposizione un allocatore di buffer generici con sintassi molto simile a quella dell'allocatore della libreria del C.

void *malloc(size_t size): ritorna un bufferin grado di contenere l'allocazione richiesta.void free(const void *objp): distrugge ilbuffer.

Tali funzioni sono implementate tramite diverse cache di buffer a potenze di due crescenti.

Page 38: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

38

Quante cache esistono nel sistema?(È possibile scoprirlo con alcuni semplici comandi)

Il file /proc/slabinfo contiene l'elenco delle cache attivate dal kernel, con statistiche sull'uso.Il primo campo di ogni riga è il nome della cache.

Notate le cache di nome kmalloc-8, kmalloc-16, …È da queste cache che kmalloc() pesca gli oggettiper soddisfare le allocazioni di buffer generici.

Page 39: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

39

Memoria consumata dal kernel(Il comando free -w)

Il comando free mostra il consumo di memoria di kernel e applicazioni.In particolare, per il kernel si è interessati ai due campi seguenti.

Buffers: memoria dedicata ai buffer dati mantenutinelle cache del sistema di I/O.

Cached: memoria usata dall'allocatore SLAB.La vista di default di free presenta la somma di “buffers” e “cached”. L'opzione -w separa i due contributi.

free -w

Page 40: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

40

Esercizi (3 min.)

1. Si usi il comando dd per far leggere tanti dati da uno dei dischi rigidi. Nel frattempo si monitori l'andamento dei campi “buffers” e “cached”. Che cosa succede?

Page 41: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

42

Esercizi (3 min.)

2. Si interrompa il comando dd appena dato e lo si lanci nuovamente.

Come variano i campi “buffers” e “cached”?

Page 42: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

44

Esercizi (3 min.)

3. Si usi il comando seguente da amministratore per pulire tutte le cache di sistema:

echo 3 > /proc/sys/vm/drop_cachesCome variano i campi “buffers” e “cached”?

Page 43: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

46

MEMORIA VIRTUALE

Page 44: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

47

Memoria virtuale(Una estensione del concetto di paginazione)

Il meccanismo di memoria virtuale è una estensione della tecnica di paginazione.L'idea di base è quella di legare una pagina:

ad un frame fisico (paginazione base).oppure ad un blocco di un file (novità).oppure ad un blocco del disco (novità).

In tal modo:alcune porzioni della memoria di un processo sonocaricate in memoria, mentre altre no.alcune porzioni della memoria di un processopossono essere inserite in swap, mentre altre no.

Page 45: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

48

Schema di memoria virtuale(Un diagramma vale più di 1000 parole)

pagina 0

pagina 1

pagina 2

...

pagina n

Memoriavirtuale

Mappa dimemoria

Memoriafisica

Unità dimemorizzazione

secondaria

Page 46: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

49

Spazio di indirizzamento lineare(Di un processo)

Ad ogni processo è associato uno spazio degli indirizzi (o spazio di indirizzamento) lineare.

Sequenza di indirizzi lineari adisposizione del processo.Organizzato per aree di memoriacontigue (dette segmenti), con leporzioni del processo (codice, dati,stack).Gestito in maniera pigra (solo ciòche serve effettivamente è caricatoin memoria).

Codice

Dati statici

Stack

Heap

0

Max

Page 47: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

50

Spazio di indirizzamento – x86

Segmento di testo (ELF)Immagine binaria del codice (ad es., /bin/ls) 0x08048000 (128MB)

0x00000000

Segmento datiVariabili statiche inizializzate dal programmatore.

Esempio: static char *var = “value”;

Segmento BSSVariabili statiche non inizializzate, riempite di zeri.

Esempio: static char *username;

end_codestart_data

end_data

Random brk offset (LASR)

Heap start_brkbrkprogram break

Segmento mappe di memoriaMappature su file: ad es. /lib/libc.so

Mappature anonime

Random mmap offset (LASR)Stack

Random stack offset (LASR)

Kernel0xc0000000 (3GB)

Delle mappe dimemoria se neparla più avantiin questa lezione

I “segmenti” non sonoquelli Intel! Nel gergodel kernel, il segmentoè un'area di memorialineare contigua.

0xffffffff (4GB)LASR: Linear AddressSpace Randomization(per rendere i bufferoverflow più difficili)

mmap_base

Page 48: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

51

Il descrittore di memoria in Linux(Rappresenta lo spazio di indirizzamento)

Il campo mm della task_struct di ciascun processo utente contiene un puntatore al descrittore di memoria che rappresenta lo spazio di indirizzamento di un processo.Esso è definito mediante la seguente struttura:

struct mm_struct.File $LINUX/include/mm_types.h.

Page 49: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

52

Alcuni campi importanti di mm_struct(Puntatori agli indirizzi lineari delle aree; si confronti slide 15)

start_stack: indirizzo iniziale dello stack.mmap_base: indirizzo iniziale dell'area mmap.start_brk, brk: inizio e fine dell'heap.start_data, end_data: inizio e fine del segmento dati.start_code, end_code: inizio e fine del segmento testo.

task_struct(/bin/ls)

Descrittore diprocesso

mm_struct

Descrittore dimemoria

mm

Stack

Segmento mappe di memoria

Heap

Segmento BSS

Segmento dati

Segmento di testo

start_stack

mmap_base

brkstart_brk

end_data

start_data

end_code

start_code

Page 50: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

53

Rappresentazione aree di memoria(Ciascuna è descritta da una struttura dati)

I campi ora visti sono semplicemente indirizzi lineari iniziali “notevoli”.In Linux, ognuna delle aree viste (codice, dati, stack, mappa) è rappresentata da una opportuna struttura dati:

struct vm_area_struct.File $LINUX/include/linux/mm_types.h.

Le aree di un processo in esecuzione sono visibili con il comando pmap PID.

Page 51: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

54

Indirizzi iniziali e finali dell'area(Memorizzati in due campi opportuni di vm_area_struct)

Gli indirizzi iniziali e finali dell'area di memoria sono memorizzati in due campi della struttura vm_area_struct.

vm_start: indirizzo iniziale dell'area.vm_end: indirizzo successivo a quello finale dell'area.

Page 52: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

55

Mappatura di memoria(Di file o di frame fisici; gestita in maniera pigra)

Le aree di memoria sono gestite in maniera pigra tramite una mappatura di memoria (memory map).Le singole pagine dell'area puntano:

ad un blocco di disco (4KB).ad un frame fisico (4KB).ad un blocco di una partizione di swap (4KB).a nulla (non sono state ancora mappate).

L'associazione avviene nel momento in cui la CPU genera un indirizzo lineare nella pagina e vi accede.

Page 53: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

56

Legame area memoria file su disco↔(La vm_area_struct ha un campo puntatore alla struct file)

Se l'area di memoria lineare è associata al contenuto di un file su disco, l'area si dice supportata da file (file-backed).Il campo vm_file di vm_area_struct è un puntatore alla struct file rappresentante il file mappato.

Page 54: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

57

Trasporto dei blocchi in memoria(Struct vm_operations_struct)

Le operazioni di mappatura del file variano da file system a file system.Si definisce una vm_operations_struct con i puntatori alle funzioni di gestione:

creazione mappa, distruzione mappa, fault, ...Il campo vm_ops di vm_area_struct contiene un puntatore alla struttura appropriata per il file system ospitante il file da mappare.

vm_area→vm_ops→fault() è invocata del pagefault handler.

Page 55: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

58

Legame area memoria frame fisico↔(La vm_area_struct ha un campo puntatore alla struct anon_vma)

Se l'area di memoria lineare è associata a frame fisici, l'area si dice anonima (anonymous).Il campo anon_vma di vm_area_struct è un puntatore alla struct anon_vma rappresentante il frame fisico mappato.

Page 56: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

59

I permessi di accesso(Lettura, scrittura, esecuzione)

Ciascuna area di memoria ha permessi di accessoVM_READ: in lettura.VM_WRITE: in scrittura.VM_EXEC: in esecuzione.

File $LINUX/include/linux/mm.h.I permessi sono contenuti nel campo vm_flags della vm_area_struct e sono usati dal kernel per verificare la correttezza delle operazioni richieste dagli utenti.

Page 57: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

60

Collegamento delle aree di memoria(Storicamente, tramite liste doppiamente collegate)

Storicamente, le vm_area_struct sono sempre state collegate con una lista doppia.

Campi vm_next, vm_prev.Problema: l'individuazione dell'area contenentel'indirizzo richiede una scansione lineare dell'interalista terribilmente inefficiente.→

Oggi tali liste sono usate durante la fase di costruzione dello spazio d indirizzamento del processo (creazione, esecuzione).

Page 58: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

61

Collegamento delle aree di memoria(Oggi, tramite alberi rosso-neri ordinati per indirizzo lineare iniziale dell'area)

Oggi si usano alberi rosso-neri ordinati per indirizzo lineare iniziale dell'area di memoria.

Lookup logaritmico nel numero di aree di memoria!A ciascun nodo di un albero rosso-nero è associata una struct rb_node che permette di risalire al nodo padre ed ai nodi figli.La vm_area_struct contiene un campo, vm_rb, di tipo struct rb_node per l'inserimento nell'albero.La radice dell'albero rosso-nero è contenuta nel nodo mm_rb del descrittore di memoria del processo (mm_struct).

Page 59: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

62

Schema del collegamento(vm_area_struct collegata all'albero rosso-nero)

structrb_node

structrb_node

structrb_node

structrb_node

structrb_node

structrb_node

struct vm_area_struct {

struct rb_node vm_rb;

};

Page 60: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

63

Schema delle aree di memoriavm_area_struct

VM_READ | VM_WRITE | VM_GROWS_DOWN

vm_area_structVM_READ | VM_EXEC

vm_area_structVM_READ | VM_EXEC

vm_area_structVM_READ | VM_WRITE

vm_area_structVM_READ | VM_WRITE

vm_area_structVM_READ | VM_EXEC

mm_structtask_struct/bin/ls

struct file/bin/ls

struct file/lib/ld.so

struct file/lib/libc.so

Stack(anonimo)

Memory map(supportato

da file)

Heap(anonimo)

BSS(anonimo)

Dati(supportato

da file)

vm_area_structVM_READ | VM_WRITE

Testo(supportato

da file)

vm_start

vm_end

vm_file

vm_filevm_next

vm_next

vm_next

vm_next

vm_next

vm_next

vm_file

vm_file

mmmmap

Page 61: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

64

Esercizi (3 min.)

4. Si apra il browser chromium. Si stampino le mappe di memoria create dal kernel per caricare l'applicazione.

Page 62: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

66

PAGINAZIONE SU RICHIESTA

Page 63: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

67

Definizione(Demand paging)

Il meccanismo di paginazione su richiesta (demand paging) fa uso della rappresentazione delle aree di memoria per gestire in maniera pigra lo spazio di indirizzamento di un processo.Sforzo congiunto di:

hardware (page fault, bit di accesso).kernel (gestione delle aree di memoria).librerie di sistema (caricamento del programma,creazione di aree di memoria).

Page 64: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

68

Uno schema con gli attori principali(Chi collabora al demand paging?)

A0

B1

C2

D3

E4

F5

G6

H7

Spazio diindirizzamento

lineare4 v

Tabelladelle pagine

i6 v

ii

9 vii

01234567

Spazio diindirizzamento

fisico

C

F89

10

Unità dimemorizzazione

secondaria

A B

C DC D

E F

Page 65: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

69

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

i

Spazio diindirizzamento

fisico

Frame libero

Unità dimemorizzazione

secondaria

Page 66: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

70

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

i

Spazio diindirizzamento

fisico

Frame libero

Unità dimemorizzazione

secondariaDall'indirizzo M viene estratto il riferimento alla tabella delle pagine.

Page 67: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

71

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

i

Spazio diindirizzamento

fisico

Frame libero

Unità dimemorizzazione

secondariaIl riferimento è invalido.Viene invocato il gestoredel page fault.

Page 68: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

72

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

i

Spazio diindirizzamento

fisico

Frame libero

Unità dimemorizzazione

secondariaSe l'indirizzo è illegale per il processo, lo si termina con il segnale 11 (segmentation fault).

X

Page 69: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

73

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

i

Spazio diindirizzamento

fisico

Frame libero

Unità dimemorizzazione

secondaria

Se l'indirizzo è mappato su un blocco del disco, si individuano la posizione del blocco ed un frame fisico libero in memoria.

A

Page 70: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

74

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

i

Spazio diindirizzamento

fisico

Frame libero

Unità dimemorizzazione

secondariaIl blocco del disco viene trasferito nel frame libero.

A

Page 71: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

75

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

v

Spazio diindirizzamento

fisico

Blocco disco

Unità dimemorizzazione

secondariaDopo il trasferimento si aggiorna il bit di validità nell'elemento della tabella delle pagine.

A

Page 72: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

76

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

v

Spazio diindirizzamento

fisico

Blocco disco

Unità dimemorizzazione

secondariaIl processore esegue di nuovo l'istruzione. Questa volta l'indirizzo contiene il dato richiesto.

A

Page 73: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

77

Resident Set, Virtual Memory Set(Come misurarla?)

Resident Set. È l'insieme di pagine cui è associato un frame fisico. La sua dimensione (Resident Set Size, RSS) misura il consumo effettivo di memoria fisica di un processo.Virtual Memory Set. È l'insieme delle pagine componenti lo spazio di indirizzamento di un processo. La sua dimensione (Virtual Memory Set Size, VMSS) misura la grandezza dello spazio di indirizzamento del processo.

Page 74: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

78

Esercizi (5 min.)

5. Si apra il browser chromium. Si stampino le mappe di memoria create dal kernel per caricare l'applicazione. Si cerchi di individuare la dimensione delle seguenti aree:

spazio di indirizzamento virtuale (VSZ).porzione dello spazio virtuale caricata in memoriacentrale (RSS).

Page 75: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

80

Problema: ripetizione di alcune aree(Tipicamente, il codice delle librerie)

Alcune aree di memoria sono presenti identiche in ogni processo.

Classico esempio: aree di testo delle librerie.Ogni processo che parte dovrebbe, in linea di principio, avere una copia di queste aree.

→ Enorme consumo di spazio.Un esempio (esagerato).

la macchina ha 200 processi attivi.ognuno vuole tutti i 1.7MB di testo della libreria del C.

→ Consumo complessivo: 200*1.7MB=340MB.

Page 76: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

81

Soluzione: condivisione delle pagine(I processi hanno aree di memoria distinte che puntano agli stessi frame fisici)

Il kernel implementa un meccanismo di condivisione delle pagine fra più processi.Ad esempio, per tutti i processi dotati di un'area per il testo della libreria del C:

il kernel crea un'area di memoria.il kernel fa condividere gli stessi frame fisici caricati inmemoria la prima volta.

Il risparmio di memoria è enorme.N utenti della libreria, una sola istanza in memoria.

La condivisione funziona in sola lettura.Che succede se un processo modifica l'area?

Page 77: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

82

Schema di condivisione(Più processi usano la stessa memoria fisica)

Stack

Testo/lib/libc.so

Heap

Dati statici

Codice

ProcessoP1

Stack

Testo/lib/libc.so

Heap

Dati statici

Codice

ProcessoP2

Frame testo/lib/libc.so

Frame testo/lib/libc.so

Frame testo/lib/libc.so

Memoriafisica

Page 78: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

83

Problema: scrittura su aree condivise(Non si vuole propagare la modifica a tutti i processi!)

Cosa succede se, nello schema precedente, un processo modifica il contenuto della memoria?È di vitale importanza impedire che la modifica si propaghi a tutti i processi!Altrimenti, un processo potrebbe facilmente distruggere lo spazio di indirizzamento di un altro.

Page 79: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

84

Problema: esecuzione di un programma(Distrugge la mappatura creata da fork())

Cosa succede se, dopo una fork(), il processo figlio esegue un programma diverso con la chiamata di sistema execve()?Le mappe di memoria create da fork() (codice, dati, stack) sarebbero da rifare integralmente da zero!Si può migliorare questa inefficienza?

Page 80: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

85

Soluzione: condivisione delle pagine(I processi hanno aree di memoria distinte che puntano agli stessi frame fisici)

Il kernel implementa un meccanismo di condivisione delle pagine fra più processi.Ad esempio, per tutti i processi dotati di un'area per il testo della libreria del C:

alloca un nuovo frame fisico.copia nel nuovo frame fisico il contenuto del framecondiviso.associa la pagina al nuovo frame fisico.

Il COW risolve l'inefficienza fork()/exec()e isola la memoria dei processi.

Page 81: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

86

Schema di COW(Prima della modifica da parte di P1)

ProcessoP1

ProcessoP2

Memoriafisica

A

B

C

Page 82: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

87

Schema di COW(Dopo la modifica da parte di P1)

ProcessoP1

ProcessoP2

Memoriafisica

A

B

C

Copia C

Page 83: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

88

SOSTITUZIONE DELLE PAGINE

Page 84: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

89

Overcommit della memoria(Simile all'overbooking dei biglietti aerei)

Un'ipotesi fatta da molti SO moderni è la seguente: un programma non userà mai tutta la memoria che alloca.

→ Il SO alloca tutta la memoria virtuale (lineare) possibile, anche se:

è un quantitativo osceno.non è utilizzata tutta subito.

Il SO sovrassegna la memoria (overcommit).Concetto analogo a quello di “overbooking” delle prenotazioni aeree.

Page 85: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

90

Problema: pressione di memoria(Contrariamente all'ipotesi fatta, i processi iniziano ad usare tutta la memoria)

Cosa succede se i processi cominciano ad usare tutta la memoria prenotata?

→ I frame fisici a disposizione della macchina si esauriscono.

→ Non esistono più frame liberi a disposizione. → Il SO non riesce a fornire la memoria fisica

sovraprenotata dall'allocazione virtuale. → Diventa fondamentale liberare memoria fisica.

Che fare?

Page 86: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

91

Possibili soluzioni(Convincono molto poco)

Uccisione del processo che ha provato ad usare la memoria sovraprenotata.

Abbassa il grado di multiprogrammazione.Si rischia di perdere interamente il lavoro svolto finoradal processo.

Swap-out dell'intero processo che ha provato ad usare la memoria sovraprenotata.

Abbassa il grado di multiprogrammazione.Rallenta di molto l'esecuzione del processo.

Page 87: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

92

Sostituzione delle pagine(Un approccio chirurgico al problema)

La soluzione vincente è quella di effettuare una sostituzione di pagina.Si sceglie una pagina (detta vittima).Si distrugge l'associazione pagina frame della ↔vittima (ricavando un frame fisico libero).Si associa il frame fisico libero alla pagina riferita dal processo.

Page 88: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

93

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

i

Spazio diindirizzamento

fisico

Occupato

Occupato

Occupato

Occupato

Unità dimemorizzazione

secondaria

Page 89: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

94

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

i

Spazio diindirizzamento

fisico

Unità dimemorizzazione

secondariaDall'indirizzo M viene estratto il riferimento alla tabella delle pagine.

Occupato

Occupato

Occupato

Occupato

Page 90: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

95

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

i

Spazio diindirizzamento

fisico

Unità dimemorizzazione

secondaria

Il riferimento è invalido.Viene invocato il gestoredel page fault. Si supponga di non avere alcun frame libero.

Occupato

Occupato

Occupato

Occupato

Page 91: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

96

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

i

Spazio diindirizzamento

fisico

Unità dimemorizzazione

secondariaSe l'indirizzo è illegale per il processo, lo si termina con il segnale 11 (segmentation fault).

XOccupato

Occupato

Occupato

Occupato

Page 92: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

97

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

i

Spazio diindirizzamento

fisico

Occupato

Occupato

Occupato

Unità dimemorizzazione

secondariaIl gestore del page fault prova a recuperare un frame libero. Non ne esiste uno.

Occupato

Page 93: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

98

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

i

Spazio diindirizzamento

fisico

Occupato

Occupato

Occupato

Unità dimemorizzazione

secondariaIl gestore del page fault seleziona una pagina vittima.

Vittima

Page 94: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

99

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

i

Spazio diindirizzamento

fisico

Unità dimemorizzazione

secondariaLa pagina vittima è sincronizzata su disco.

AOccupato

Occupato

Occupato

Vittima

Page 95: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

100

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

i

Spazio diindirizzamento

fisico

Unità dimemorizzazione

secondariaSi aggiorna la tabella delle pagine del processo che si è visto scippare il frame fisico.

Occupato

Occupato

Occupato

Libero

Tabella dellepagine

i

Page 96: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

101

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

i

Spazio diindirizzamento

fisico

Unità dimemorizzazione

secondaria

Se necessario, si aggiorna il frame fisico libero con il contenuto di un blocco dal disco (ad es., mappatura su file).

B

Occupato

Occupato

Occupato

Libero

Page 97: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

102

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

v

Spazio diindirizzamento

fisico

Unità dimemorizzazione

secondaria

Dopo il trasferimento si aggiorna il bit di validità nell'elemento della tabella delle pagine del processo richiedente.

Occupato

Occupato

Occupato

Occupato

Page 98: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

103

Scenario d'uso(Una demo vale più di 1000 parole)

Spazio diindirizzamento

lineare processo

load M

Spazio diindirizzamentolineare kernel

CodiceCodice

Tabella dellepagine

v

Spazio diindirizzamento

fisico

Unità dimemorizzazione

secondariaIl processore esegue di nuovo l'istruzione. Questa volta l'indirizzo contiene il dato richiesto.

Occupato

Occupato

Occupato

Occupato

Page 99: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

104

ALLOCAZIONE MEMORIA: HEAP

Page 100: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

105

Allocazione mediante heap(Primitiva)

Il modo più semplice di allocare memoria in maniera dinamica consiste nell'innalzare il program break.In Linux (come in tutti i sistemi UNIX), il program break è gestibile con due chiamate di sistema:

sbrk(). brk().

Page 101: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

106

sbrk()(Incrementa il program break e ritorna il suo valore precedente)

La chiamata di sistema sbrk() consente di incrementare e decrementare il valore attuale del program break di un offset specifico.

Si fornisce come argomento un intero (l'incremento).Viene ritornato il valore del program breakalla modifica (tutto OK) oppure -1 (errore).man sbrk per tutti i dettagli.

Esempio d'uso: sorgente sbrk.c contenuto nell'archivio 16-esempi.tar.gz.

Page 102: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

107

brk()(Imposta il program break ad un indirizzo)

La chiamata di sistema brk() imposta il program break ad un indirizzo lineare specifico.

Si fornisce come argomento un void * all'indirizzolineare.Viene ritornato 0 (tutto OK) o -1 (errore).

Esempio d'uso: sorgente brk.c contenuto nell'archivio 16-esempi.tar.gz.

Page 103: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

108

sbrk() vs. brk()(Un confronto fra le due chiamate di sistema)

La chiamata sbrk() è indubbiamente più versatile di brk().

→ brk() viene usata raramente nelle applicazioni.Tuttavia, brk() è usata nelle librerie di sistema come la funzione di gestione basso livello.

→ sbrk() è implementata tramite brk(). → malloc() è implementata tramite brk().

Page 104: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

109

Esercizi (5 min.)

6. Modificare il sorgente del programma sbrk.c in modo tale da scrivere la lettera 'A' otto byte dopo il vecchio indirizzo iniziale dell'heap.

Page 105: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

111

Esercizi (3 min.)

7. Modificare il sorgente del programma sbrk.c in modo tale da scrivere la lettera 'A' trentadue byte dopo il vecchio indirizzo iniziale dell'heap.

Qual è il risultato atteso?Che cosa succede in realtà?

Page 106: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

112

Soluzioni

7. Si studi il sorgente del programma sbrk_write_offarea.c, contenuto nell'archivio16-soluzioni.tar.gz.

Ci si aspetterebbe un “segmentation fault”, poiché si sta scrivendo fuori area.Invece, il programma esce correttamente.

Page 107: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

113

Esercizi (3 min.)

8. Individuare l'offset minimo a partire dal quale la scrittura di un carattere provoca il segmentation fault.

Che cosa si deduce?

Page 108: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

115

Esercizi (5 min.)9. Modificare il sorgente del programma sbrk.c

in modo tale da:allocare 16 byte mediante modifica al program break.deallocare i 16 byte appena allocati mediantemodifica al program break.scrivere la lettera 'A' 8 byte dopo il vecchio indirizzoiniziale dell'heap.

Qual è il risultato atteso?Che cosa succede in realtà?

Page 109: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

117

Esercizi (5 min.)10. Modificare il sorgente del programma sbrk.c in modo tale da:

allocare 16 byte mediante modifica al program break.scrivere la lettera 'A' 8 byte dopo il vecchio indirizzoiniziale dell'heap.deallocare i 16 byte appena allocati mediantemodifica al program break.scrivere la lettera 'A' 8 byte dopo il vecchio indirizzoiniziale dell'heap.

Qual è il risultato atteso?Che cosa succede in realtà?

Page 110: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

119

Scoperte(Che cosa si è imparato da questi esperimenti?)

Le chiamate brk() e sbrk() provocano allocazioni per pagine.Scrivere fuori area non implica la ricezione di un segmentation fault.Una volta liberata l'area di memoria virtuale (tramite diminuzione del program break) i frame fisici sono restituiti al kernel.

→ Se si prova a scrivere su tale area, si ottiene unsegmentation fault.

Page 111: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

120

ALLOCAZIONE MEMORIA: MALLOC

Page 112: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

121

L'allocatore della libreria del C(Usa il program break e le mappature di memoria)

L'allocatore standard della libreria del C usa due funzioni di libreria.

malloc(): prenotazione di aree lineari di memoria.free(): restituzione di aree lineari di memoria.

Allocazioni piccole: si gestisce una lista di blocchi liberi all'interno dell'heap.Allocazioni grandi: si crea una nuova mappa di memoria anonima.La soglia fra le due allocazioni è posta a 128KB.

Page 113: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

122

Esempio di allocazione piccola(Gestione lista blocchi liberi nell'heap)

L'esempio malloc-small.c contenuto nell'archivio 16-esempi.tar.gz mostra l'uso di malloc() per una quantità piccola di memoria (16B). Osservazioni:

dopo la malloc() il program break cresce di 132KB.l'indirizzo iniziale dell'area è 16B dopo il vecchioprogram break.dopo la free() il program break non vienemodificato.

Page 114: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

123

Esempio di allocazione media(Gestione lista blocchi liberi nell'heap)

L'esempio malloc-average.c contenuto nell'archivio 16-esempi.tar.gz mostra l'uso di malloc() per una quantità piccola di memoria (4KB). Osservazioni:

dopo la malloc() il program break cresce di 136KB(i 128KB di espansione iniziale, più 4KB richiesti, più4KB per uso interno).l'indirizzo iniziale dell'area è 16B dopo il vecchioprogram break.dopo la free() il program break viene abbassatodi 4KB.

Page 115: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

124

Esempio di allocazione grande(Mappatura anonima di memoria)

L'esempio malloc-big.c contenuto nell'archivio 16-esempi.tar.gz mostra l'uso di malloc() per una quantità piccola di memoria (256KB). Osservazioni:

il program break rimane inalterato.L'l'indirizzo iniziale dell'area sembra essere dentro lazona delle mappature di memoria.

Page 116: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

125

Lista dei blocchi liberi nell'heap(Per allocazioni <128KB)

Per allocazioni <128KB, malloc() usa l'heap e mantiene una lista doppiamente collegata di aree libere.L'invocazione di malloc() provoca, come prima cosa, la ricerca di un blocco libero sufficientemente grande nella lista.Nel caso in cui sia trovato un blocco disponibile, viene ritornato quello.

Page 117: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

126

Il blocco di controllo(Per allocazioni <128KB)

Se nella lista non è trovato alcun blocco di memoria di dimensioni sufficienti, viene allocato un nuovo blocco di memoria.Viene allocato anche un blocco di controllo contenente informazioni di stato sulla memoria appena allocata (ad esempio, la quantità).

Informazionidi controllo

Memoria ad uso dellafunzione invocante

Indirizzo ritornatoda malloc()

Blocco dicontrollo

Memoriaallocata

16 byte

Page 118: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

127

Restituzione del blocco alla lista(Per allocazioni <128KB)

Quando la memoria è liberata tramite free() il blocco allocato è reinserito nella lista.I primi byte del blocco (ora libero) sono usati per memorizzare i collegamenti all'elemento libero successivo e precedente.

Informazionidi controllo

Bloccolibero

Blocco dicontrollo

Memorialibera

Puntatoreal blocco

liberoprecedente

Puntatoreal blocco

liberosuccessivo

Al blocco liberoprecedente

Al blocco liberosuccessivo

Page 119: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

128

MISURAZIONE

Page 120: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

129

Misurazione del demand paging(Quante risorse sta consumando?)

Il comando vmstat fornisce informazioni specifiche sulle prestazioni del gestore della memoria virtuale.

swpd, free, buff, cache: già visti con free.bi, bo: blocchi trasferiti da e verso il disco(attività di disco legata alla paginazione).si, so: swap-in, swap-out (paginazione dovuta alloswapping).r, b: processi in stato di esecuzione o di attesa di I/O(ingorgo dovuto a sovraccarico di CPU e/o disco).us, sy, ni, wa: consumo risorse CPU.

Page 121: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

130

Misurazione dei page fault(Quanto è intensa l'attività di paginazione?)

Il comando sar fornisce informazioni specifiche sull'attività di page fault.

sar -B 1: misura l'attività di page fault ognisecondo.

Campi interessanti.majflt/s: numero di major fault al secondo.fault/s: numero di major+minor fault al secondo.

Page 122: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

131

Major e minor page fault(Fault Indirizzo valido virtualmente ma pagina non presente fisicamente→

Major Carica da disco; Minor Alloca un frame)→ →Major (page) fault. L'indirizzo virtuale è valido ed è associato ad un blocco su disco non ancora caricato.

Il kernel trova un frame libero (con le buone o con lecattive) e ci carica dentro il blocco di disco associato.

Minor (page) fault. L'indirizzo virtuale è valido ed è associato ad un'area di memoria virtuale non ancora modificata.

Il kernel trova un frame libero (con le buone o con lecattive) e lo associa al blocco virtuale corrispondente.

Page 123: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

132

Esercizi (5 min.)

11. Distruggere tutte le cache, se possibile.Eseguire il seguente comando:

lowriterIn un altro terminale, monitorare l'attività di paginazione.Quali fault si riscontrano all'inizio?

Page 124: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

133

Soluzioni

11. Si riscontrano major fault per la lettura del programma e delle librerie condivise da disco.

Page 125: Lezione 16 Memoria - weblab.ing.unimore.it file1 Lezione 16 Memoria Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche

134

That's all, folks!(https://www.youtube.com/watch?v=gAj8jLe_shQ)