1 Cenni di gestione della memoria Unix-Linux
2 Organizzazione della Memoria Spazio logico dei processi A e B e memoria fisica Condivisione dell’area testo Process A Process B
3 Condivisione di File Two processes can share a mapped file. Un file mappato simultaneamente in due processi
4 System Call per la Gestione della Memoria s è un codice di errore a e addr sono indirizzi di memoria len è una lunghezza prot controlla la protezione flags bit vari fd è un descrittore di file offset è un offset all’interno di un file
5 Esempio di file mappato in memoria #include int main (void) { int fd; char *mem; int bytes_in_page; /* size pagina */ bytes_in_page = getpagesize(); fd = open(”nomeFile",O_RDWR); mem = mmap (0,bytes_in_page, \ PROT_READ | PROT_WRITE,MAP_SHARED,fd,0); strcpy(mem,”una stringa"); printf("%s\n", mem); … return 0; }
6 Paginazione in UNIX The core map in 4BSD. paginazione su domanda core map ha un elemento per ogni pagina fisica
7 Algoritmo di Sostituzione in UNIX (BSD) Eseguito dal page daemon Cerca di mantenere almeno lotsfree pagine libere Usa l’algoritmo Two-handed clock Una variante dell’algoritmo Clock Con allocazione globale Se non è possibile mantenere lotsfree pagine libere si fa lo swapping di qualche processo Si fa lo swap-out di processi idle da più tempo e in alternativa di processi grossi Swap-in se ci sono pagine libere a sufficienza Il processo viene scelto in base a vari parametri
8 Paginazione in Linux (1) Linux usa tabella delle pagine a tre livelli
9 Paginazione in Linux (2) Operation of the buddy algorithm. Algoritmo Buddy