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