Argomenti più comuni esame di: Sistemi operativi (Ingegneria informatica ed elettronica)
MMU
La parte del SO che gestisce la memoria ha compiti:
- Tenere traccia di quali parti di memoria sono in uso e quali non lo sono.
- Allocare la memoria ai processi che la necessitano e deallocarla.
- Gestire lo swapping tra la memoria principale e il disco quando la memoria principale non è sufficientemente grande per mantenere tutti i processi.
Algoritmi del page fault (ottimo, FIFO… tutti tranne clock)
In qualsiasi computer, ogni programma può produrre indirizzi di memoria. Questi indirizzi generati dal programma sono detti indirizzi virtuali e formano lo spazio di indirizzamento virtuale. Nei computer senza memoria virtuale, l'indirizzo virtuale viene messo direttamente sul bus di memoria. Quando viene utilizzata la memoria virtuale, gli indirizzi virtuali non vengono mandati direttamente sul bus di memoria, ma vengono inviati alla Memory Management Unit (MMU), un chip che mappa gli indirizzi virtuali sugli indirizzi della memoria fisica.
Funzionamento della memoria virtuale
La memoria fisica è divisa in blocchi di dimensione fissa (detti frame) e si suddivide la memoria logica in blocchi di pari dimensione (dette pagine). I trasferimenti fra la memoria e il disco avvengono sempre per unità di pagina. Quando si deve eseguire un processo, si caricano le sue pagine nei frame disponibili. Alcune pagine virtuali quindi non avranno corrispondenza in memoria fisica e negli attuali circuiti hardware un bit presente/assente è utilizzato per indicare se la pagina è mappata sulla memoria fisica oppure no.
Se una pagina non mappata in memoria fisica viene richiesta, la MMU genera un interrupt della CPU al SO chiamato PAGE FAULT, dopo il quale il SO sceglie un frame di pagina poco utilizzato e salva il suo contenuto su disco, quindi recupera la pagina referenziata e la alloca nel frame appena liberato (fetching della pagina), cambia la mappa e riparte con l'istruzione bloccata.
Descrizione dettagliata del funzionamento
Supponiamo che l’indirizzo virtuale sia di 16 bit e sia diviso in due parti. 4 bit rappresentano il numero di pagina, che serve come indice nella tabella delle pagine così da ottenere l’indirizzo fisico, mentre gli altri 12 rappresentano l’offset che deve essere sommato all’indirizzo di base per trovare l’indirizzo corretto in memoria fisica e che viene inviato all’unità di memoria.
- Se il bit presente/assente è 0 viene causata una eccezione.
- Se il bit presente/assente è 1 il numero del frame trovato nella tabella delle pagine viene copiato nei 3 bit di ordine alto del registro di output con i 12 bit dell'offset (copiati senza modifiche dall'indirizzo virtuale).
- Il contenuto del registro di output viene messo sul bus di memoria come indirizzo di memoria fisica.
Il modello descritto è semplice, vi sono però dei problemi: la tabella delle pagine può essere molto grande, il mapping (da virtuale a fisico) può diventare complesso.
-
Sistemi Operativi I - Virtualizzazione della memoria
-
Sistemi operativi: domande base esame con soluzioni
-
Sistemi Operativi I - Virtualizzazione del processore & Virtualizzazione della memoria
-
Sistemi Operativi I - Teoria Completa