In informatica, la memoria virtuale è una architettura di sistema capace di simulare uno spazio di memoria centrale maggiore di quello fisicamente presente; questo risultato si raggiunge utilizzando spazio di memoria secondaria su altri dispositivi, di solito le unità a disco. La memoria centrale fisicamente presente diventa quindi la parte effettivamente utilizzata di quella virtuale, più grande: questo stratagemma è utile in virtù del principio di località dell'esecuzione dei programmi. La memoria secondaria utilizzata a questo scopo è comunemente chiamata, in ambiente Posix, swap o spazio di swap (verbo inglese che significa "scambiare"), mentre, in ambiente Windows, è chiamata file di paging. Le operazioni di spostamento delle pagine dallo spazio di swap alla memoria fisica sono chiamate swapping.
In un sistema dotato di memoria virtuale, il processore e i programmi si riferiscono alla memoria centrale con indirizzi logici, virtuali, che vengono tradotti in indirizzi fisici reali da una unità apposita, la MMU o memory management unit che in genere è incorporata nei processori.
La MMU svolge i seguenti compiti:
- Traduce l'indirizzo logico in indirizzo fisico;
- Controlla che l'indirizzo fisico corrisponda a una zona di memoria fisicamente presente nella memoria centrale;
- Se invece la zona in questione è nello spazio di swap, la MMU solleva una eccezione di page fault e il processore si occupa di caricarla in memoria centrale, scartando una pagina già presente.
Questo meccanismo ha un prezzo in termini di prestazioni: la MMU impiega del tempo per tradurre l'indirizzo logico in indirizzo fisico, e ce ne vuole molto di più per caricare una zona di memoria dallo spazio di swap: in ultima analisi quindi, implementare una memoria virtuale significa sacrificare potenza di calcolo per poter eseguire un maggior numero di processi contemporanei.Tratto da it.wikipedia.org
Nessun commento:
Posta un commento