La memoria virtuale è un concetto prezioso nell'architettura del computer che consente di eseguire programmi grandi e sofisticati su un computer anche se dispone di una quantità relativamente piccola di RAM. Un computer con memoria virtuale gestisce abilmente le esigenze contrastanti di più programmi all'interno di una quantità fissa di memoria fisica. Un PC con poca memoria può eseguire gli stessi programmi di uno con molta RAM, anche se più lentamente.
Indirizzi fisici e virtuali
Un computer accede al contenuto della sua RAM attraverso un sistema di indirizzi, che sono essenzialmente numeri che localizzano ogni byte. Poiché la quantità di memoria varia da PC a PC, determinare quale software funzionerà su un determinato computer diventa complicato. La memoria virtuale risolve questo problema trattando ogni computer come se avesse una grande quantità di RAM e ogni programma come se usasse esclusivamente il PC. Il sistema operativo, come Microsoft Windows o OS X di Apple, crea un insieme di indirizzi virtuali per ogni programma. Il sistema operativo traduce gli indirizzi virtuali in indirizzi fisici, adattando dinamicamente i programmi alla RAM non appena diventa disponibile.
Paging
La memoria virtuale suddivide i programmi in blocchi di dimensioni fisse chiamati pagine. Se un computer dispone di un'abbondante memoria fisica, il sistema operativo carica tutte le pagine di un programma nella RAM. In caso contrario, il sistema operativo si adatta il più possibile ed esegue le istruzioni in quelle pagine. Quando il computer ha finito con quelle pagine, carica il resto del programma nella RAM, forse sovrascrivendo le pagine precedenti. Poiché il sistema operativo gestisce automaticamente questi dettagli, ciò consente allo sviluppatore del software di concentrarsi sulle funzionalità del programma e di non preoccuparsi dei problemi di memoria.
Multiprogrammazione
La memoria virtuale con paging consente a un computer di eseguire molti programmi contemporaneamente, quasi indipendentemente dalla RAM disponibile. Questo vantaggio, chiamato multiprogrammazione, è una caratteristica chiave dei moderni sistemi operativi per PC, poiché ospitano molti programmi di utilità come driver di stampa, gestori di rete e scanner antivirus contemporaneamente alle applicazioni: browser Web, elaboratori di testi, e-mail e media Giocatori.
File di paging
Con la memoria virtuale, il computer scrive le pagine del programma che non sono state utilizzate di recente in un'area del disco rigido chiamata file di paging. Il file salva i dati contenuti nelle pagine; se il programma ne ha bisogno di nuovo, il sistema operativo lo ricarica quando la RAM diventa disponibile. Quando molti programmi competono per la RAM, l'atto di scambiare le pagine sul file può rallentare la velocità di elaborazione di un computer, poiché impiega più tempo a svolgere le faccende di gestione della memoria e meno tempo a svolgere un lavoro utile. Idealmente, un computer avrà abbastanza RAM per gestire le richieste di molti programmi, riducendo al minimo il tempo che il computer impiega a gestire le sue pagine.
Protezione della memoria
Un computer senza memoria virtuale può ancora eseguire molti programmi contemporaneamente, sebbene un programma possa modificare, accidentalmente o deliberatamente, i dati in un altro se i suoi indirizzi puntano al programma sbagliato. La memoria virtuale impedisce questa situazione perché un programma non "vede" mai i suoi indirizzi fisici. Il gestore della memoria virtuale protegge i dati in un programma dalle modifiche di un altro.