1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it 3 giugno 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia License. http://creativecommons.org/licenses/by-sa/2.5/it/. Immagini tratte da [2] e da Wikipedia. 1
545 Lezione XXXII: Gestione della memoria
546 Working set Il working set è costituito dall insieme usate negli ultimi k riferimenti a memoria w(k, t) è la dimensione del working set all istante t
547 Prepaging Invece di caricare tutte le pagine solo quando servono (lazy paging) può essere conveniente caricare in anticipo un certo numero di pagine (prepaging). Se le pagine precaricate sono in numero vicino al massimo working set, i si riducono di molto Si modella il working set un 1 negli n bit alti dei contatori di aging wsclock: clock in cui per ogni pagina si tiene conto se fa parte del working set o no
548 Simulazione LRU tramite aging Alternativamente è possibile mantenere un contatore per pagina che si incrementa ad ogni tick: la pagina vittima è quella con il contatore piú basso
549 Allocazione locale e globale
550 Page Fault Frequency In un algoritmo globale, il numero di frame allocati ad un processo può essere mantenuto in proporzione alla frequenza dei (quali pagine rimpiazzare è una decisione indipendente)
551 Anomalia di Belady Con alcuni algoritmi (p.es. FIFO), aumentare il numero dei page frame a disposizione peggiora il numero dei
552 Riassunto
553 Vantaggi pagine piccole Minore frammentazione interna Piú adattabili alle dimensioni dei programmi Riduzione spazio di memoria inutilizzato Svantaggi Grosse tabelle Piú accessi a disco
554 ottimale Sia d la dimensione media di un processo, p la dimensione della pagina ed e la dimensione di una entry nella tabella della pagine. tabella d p e Frammentazione interna media p 2 La somma di questi due fattori di overhead è minima per p = 2d e d = 1MB, e = 8B p = 4KB
555 Page size
556 La memoria virtuale vista finora è monodimensionale Avere piú spazi di indirizzi distinti può essere vantaggioso in presenza di aree che crescono separatamente durante l esecuzione Es. Compilatore che usa aree per Testo sorgente Symbol table Tabella delle costanti intere e floating point Albero di parsing Stack per le chiamate di procedura del compilatore stesso
557
558 Si fornisce alla macchina un insieme di spazi di indirizzi logici indipendenti detti segmenti I segmenti hanno dimensioni diverse e possono cambiare senza interferire gli uni con gli altri L utente definisce i segmenti ma non li gestisce Semplifica le operazioni di linking (Segmento, offset) per indicizzare i moduli I segmenti sono indipendenti Facilita la condivisione di librerie (shared libraries)
559
560
561 nel Pentium Supporto per: segmentazione pura, pura, segmentazione paginata Pure paging: tutti i processi hanno un unico segmento di 4GB Due tipi di tabelle di sistema contengono i descrittori dei segmenti: GDT comune a tutti i processi una LDT per processo Per poter accedere ad un descrittore di segmento è necessario che il suo selettore sia contenuto in uno dei 6 segment register
562 Descrittore di segmento Contiene tutte le informazioni relative ad un segmento Occupa 8 byte Una volta selezionato il suo contenuto è copiato nei registri del processore per accelerarne l accesso
563 Calcolo indirizzo segmentato I campi di interesse per il calcolo dell indirizzo fisico a partire da un indirizzo logico costituito dalla copia < selector, offset > sono: Base di 32 bit che indica l indirizzo di partenza del segmento Limit di 20 bit che indica la dimensione massima in byte se Gbit=0, in pagine di 4Kbyte se Gbit=1
564 segmentata Nel caso di, predisposta dal kernel, l indirizzo di 32 bit cosí generato deve essere ulteriormente trasformato passando attraverso la tabella Poiché però le pagine hanno dimensione 4K ed i segmenti 4GB dovremmo avere tabelle di 1M di elementi, per evitare questo problema si usa una tabella a due livelli
565 a due livelli
566 Bibliografia Dijkstra, E. W. My recollections of operating systems design. http://www.cs.utexas.edu/users/ewd/ewd13xx/ EWD1303.PDF, 2001. EWD-1303. Tanenbaum, A., and Woodhull, A. Operating Systems Design and Implementation, III ed. Prentice Hall, 2006.