1. Cos'è la Memoria Virtuale?
La memoria virtuale è una tecnica che consente l'esecuzione di programmi che non sono interamente contenuti nella memoria RAM fisica. Essa realizza una separazione tra lo spazio degli indirizzi logici a disposizione del processo e la memoria fisica sottostante, permettendo di eseguire applicazioni più grandi della RAM disponibile sfruttando lo spazio di archiviazione di massa (spazio di swap o file di paginazione).
2. Demand Paging e Page Fault
Il meccanismo più comune per implementare la memoria virtuale è il Demand Paging (paginazione a richiesta):
- Caricamento su richiesta: Le pagine di un processo vengono caricate in memoria RAM solo nel momento esatto in cui vengono effettivamente richieste dall'esecuzione, anziché tutte insieme all'avvio.
- Bit di Validità/Invalidità: All'interno della tabella delle pagine, un apposito flag indica se la pagina si trova attualmente in RAM (valida) oppure solo su disco (invalida).
- Page Fault (Interruzione di pagina): Se la CPU tenta di accedere a una pagina il cui bit di validità è impostato su "invalido", l'hardware genera un'eccezione (trap). Il sistema operativo interviene bloccando temporaneamente il processo, cercando la pagina sul disco di swap e caricandola in un frame libero della RAM, aggiornando infine la tabella delle pagine.
3. Simulatore Interattivo: Gestione di un Page Fault
Seleziona una pagina virtuale per simulare il comportamento della MMU e l'eventuale attivazione di un Page Fault con caricamento da disco.