Estratto del documento

La memoria virtuale

In precedenza abbiamo visto come le cache forniscano un accesso veloce alle porzioni dei dati e del codice di un programma utilizzate più di recente. Allo stesso modo introduciamo la tecnica della memoria virtuale, con la quale utilizziamo la memoria principale come una cache per la memoria di massa.

Naturalmente, affinché diverse virtual machine possano condividere la stessa memoria, dobbiamo essere in grado di proteggerle una dall’altra, assicurando che ogni programma acceda in lettura ed in scrittura solo nelle porzioni di memoria principale che gli sono state assegnate. Non possiamo sapere però quali macchine virtuali condivideranno la stessa memoria quando le compiliamo, poiché esse cambiano dinamicamente durante l’esecuzione. A causa di questa interazione dinamica sarebbe opportuno compilare ogni programma nel rispettivo spazio di indirizzamento privato, nel quale viene poi fatta la traduzione da indirizzo virtuale ad indirizzo fisico che garantisce quella protezione di cui si parlava poco prima.

Sebbene cache e memoria virtuale condividano le stesse “idee”, a causa delle diverse origini storiche si è giunti all’utilizzo di una diversa terminologia. Ad esempio un blocco della cache nella memoria virtuale viene detto pagina e le miss nella cache sono dei page fault (“mancanza di pagina”).

Quando si utilizza la memoria virtuale, il processore genera degli indirizzi virtuali che vengono poi tradotti da una combinazione di hardware e software in un indirizzo fisico, con il quale poi accedere ad una specifica locazione nella memoria principale. Questo processo viene chiamato traduzione degli indirizzi o mappatura degli indirizzi.

Caricamento e rilocazione

La memoria virtuale semplifica anche la procedura di caricamento di un programma prima della sua esecuzione, fornendo un meccanismo di rilocazione. Questa mappa gli indirizzi virtuali nei corrispettivi indirizzi fisici prima ancora che questi vengano effettivamente utilizzati per accedere alla memoria principale.

Struttura degli indirizzi

In una memoria virtuale un indirizzo viene suddiviso in due parti:

  • Il numero della pagina; che verrà tradotto nel corrispettivo numero di pagina fisica
  • L’offset della pagina; la dimensione della pagina che durante la procedura di traduzione non viene cambiato

Non è necessario che il numero di pagine indirizzabili attraverso l'indirizzo virtuale corrisponda al numero di quelle indirizzabili attraverso l'indirizzo fisico: avere un numero di pagine virtuali maggiore di quelle fisiche è alla base della concezione che la memoria virtuale deve risultare illimitata all'utente o più in particolare al programmatore.

Nei sistemi di memoria virtuale molte scelte di progettazioni sono dovute dall’elevato costo di un miss (page fault).

Anteprima
Vedrai una selezione di 3 pagine su 8
La memoria virtuale - Architettura elaboratori Pag. 1 La memoria virtuale - Architettura elaboratori Pag. 2
Anteprima di 3 pagg. su 8.
Scarica il documento per vederlo tutto.
La memoria virtuale - Architettura elaboratori Pag. 6
1 su 8
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher ABsintio di informazioni apprese con la frequenza delle lezioni di Architettura degli elaboratori e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Roma La Sapienza o del prof Mei Alessandro.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community