SISTEMI OPERATIVI Gestione della memoria in UNIX
Transcript
SISTEMI OPERATIVI Gestione della memoria in UNIX
Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria Elettronica SISTEMI OPERATIVI http://www.diee.unica.it/~giacinto/SisOp A.A. 2002/2003 Docente: Prof. Ing. Giorgio Giacinto GESTIONE DELLA MEMORIA IN UNIX Gestione della memoria in UNIX Primi sistemi Partizionamento variabile senza VM Implementazioni attuali Memoria Virtuale Paginata Due schemi separati per la gestione della memoria Sistema di paginazione (processi utente) Allocatore di memoria per il kernel © 2003 Giorgio Giacinto 2 Organizzazione della memoria in UNIX Kernel Mai paginato su memoria di massa Mappa della memoria fisica (core map) Mai paginata su memoria di massa Page frame Ciascun frame può essere libero o contenere o o o o Segmento testo Segmento dati Pagina di stack Pagina della tabelle delle pagine © 2003 Giorgio Giacinto 3 La core map in 4BSD © 2003 Giorgio Giacinto 4 Strutture dati per il sistema di paginazione © 2003 Giorgio Giacinto 5 Strutture dati per il sistema di paginazione © 2003 Giorgio Giacinto 6 Algoritmo di rimpiazzamento di pagina E’ il demone di pagina con PID = 2 (pageout) Attivato periodicamente (ogni 250 ms) per controllare che ci sia un numero sufficiente di pagine fisiche libere o Parametro lostfree (circa memoria) Se è necessario liberare spazio, inizia trasferimento pagine su disco Algoritmo di sostituzione “global scope” “Orologio a due lancette” © 2003 Giorgio Giacinto 7 Orologio a due lancette La lancetta “anteriore” scorre le pagine e pone a 0 il reference bit Successivamente le pagine sono scandite dalla lancetta “posteriore” le pagine con reference bit = 0 sono inserite in una lista per essere scaricate o Significa che la pagina non è stata richiesta nell’intervallo fra la scansione delle due lancette Parametri scanrate handspread © 2003 Giorgio Giacinto 8 Swapping Introdotto in UNIX prima della paginazione Fa parte dello scheduling Unica modalità per liberare memoria Nei sistemi moderni Swap quando la frequenza di paginazione è troppo alta o Vengono scaricati i processi inattivi per più di 20s o Se non esistono, si esaminano i 4 processi più grandi e si elimina quello in memoria da più tempo Periodicamente si controllano i processi su disco che sono pronti per l’esecuzione © 2003 Giorgio Giacinto 9 Allocatore di memoria per il kernel Il kernel durante l’esecuzione genera e distrugge con frequenza tabelle, buffer, ecc. Occupano spazio di memoria di dimensione inferiore alla pagina Per questo motivo, gestione separata da altri processi La memoria è gestita con una modifica della tecnica del buddy system Le partizioni vengono create dinamicamente ripetutamente a metà i blocchi liberi dividendo o Si alloca la partizione più piccola che contiene l’oggetto da allocare E’ un compromesso fra partizioni fisse e variabili © 2003 Giorgio Giacinto 10