
La memoria virtuale permette al processore di fare accesso a uno spazio di indirizzamento molto maggiore di quello in realtà presente nella memoria principale. Questo metodo mira ad occupare memoria principale solo con i moduli che si prevede debbano essere usati maggiormente, mentre gli altri sono ospitati in memoria secondaria. La memoria virtuale crea dinamicamente gli indirizzi fisici al quale fare riferimento a partire dagli indirizzi logici richiesti dal processore. Questa conversione avviene attraverso la Memory Management Unit (MMU). Per ogni indirizzo, quindi, la MMU verifica la posizione del dato a cui il processore fa richiesta e se esso si trova in memoria principale restituisce il dato, altrimenti chiede all’OS di trasportarlo in essa (page fault). Vista la località degli indirizzi è meglio dividere la memoria in blocchi (pagine) in modo da velocizzare le operazioni. Quando una pagina non viene trovata in memoria principale viene interamente copiata dalla memoria secondaria. La conversione da indirizzi logici a fisici utilizza la Memory Address Table (MAT). Parte della MAT è molto spesso allocata in una memoria cache (TLB). L’uso della memoria virtuale rende i programmi indipendenti l’uno dall’altro, fa si’ che i programmi vedano una memoria con t di accesso minori, permette un uso della memoria efficiente in ambienti multiutenti. I contro sono tempi esorbitanti di accesso in caso di page fault (devono quindi essere molto rari), sono applicabili solo meccanismi di write back.