Memoria virtuale
La memoria virtuale è un modo di gestire la memoria che è una tendenza recente della tecnologia utilizzata nei computer. L'hardware (la parte fisica del computer, come la CPU o la scheda grafica) esegue il software. Questo software avrà bisogno della memoria del computer per funzionare, e fare quello che deve fare. La maggior parte dei computer in uso oggi possono fare più di una cosa alla volta, eseguono più di un'applicazione. Questo è noto come multiprocessing.
In questo caso, tutti i programmi o le applicazioni che sono in esecuzione sul computer alla volta ne condividono le risorse. Un computer non ha più processori o memoria principale (RAM) solo perché vi girano più programmi.
La memoria virtuale è l'idea che l'applicazione vede un blocco di memoria di una determinata dimensione. L'applicazione può utilizzare questa memoria come meglio crede. Questo blocco di memoria è virtuale nel senso che proviene da parti diverse. Alcune di esse possono trovarsi nella memoria principale del computer, ma alcune possono anche essere su disco. La CPU ha una parte speciale, chiamata Unità Logica Aritmetica che fa alcune delle traduzioni tra la memoria dell'applicazione e le risorse di sistema. Anche i sistemi operativi moderni fanno una parte di questo lavoro.
Quando un programma cerca di accedere ad un blocco di memoria che non è nella memoria di sistema, quel programma viene fermato e il blocco viene caricato nella memoria di sistema. Ciò che si trovava in quella parte della memoria di sistema viene scritto su disco. Questo è di solito chiamato paging.
Alcuni sistemi informatici, come i sistemi embedded, non utilizzano la memoria virtuale, perché hanno bisogno di un tempo di risposta molto veloce, o che rimanga sempre lo stesso. Uno dei problemi è che con la memoria virtuale è difficile prevedere il tempo di risposta. Un'applicazione che utilizza una parte di memoria che deve essere caricata da disco avrà un tempo di risposta diverso da quello che non lo ha. Pertanto, il concetto di memoria virtuale non è utilizzato nei sistemi embedded.
Il programma pensa di avere una vasta gamma di indirizzi contigui; ma in realtà le parti che sta usando attualmente sono sparse nella memoria principale, e le parti inattive sono salvate in un file su disco.
Domande e risposte
D: Che cos'è la memoria virtuale?
R: La memoria virtuale è un modo di gestire la memoria del computer che consente alle applicazioni di accedere a un blocco di memoria di una determinata dimensione. Questo blocco di memoria può provenire da parti diverse, come la memoria principale o il disco.
D: Come funziona la memoria virtuale?
R: La memoria virtuale funziona consentendo all'Unità Logico Aritmetica della CPU di effettuare traduzioni tra le risorse dell'applicazione e quelle del sistema. Anche i moderni sistemi operativi svolgono una parte di questo lavoro. Quando un'applicazione cerca di accedere a un blocco di memoria che non si trova nella memoria di sistema, viene fermata e il blocco viene caricato nella memoria di sistema.
D: Quali sono alcuni esempi di computer che non utilizzano la Memoria virtuale?
R: I sistemi embedded sono un esempio di computer che non utilizzano la Memoria virtuale perché hanno bisogno di tempi di risposta rapidi o sempre uguali. È difficile prevedere i tempi di risposta con la Memoria virtuale, quindi non viene utilizzata nei sistemi embedded.
D: Che cos'è la multielaborazione?
R: La multielaborazione è quando un computer può fare più cose contemporaneamente, eseguendo più applicazioni contemporaneamente che condividono le sue risorse.
D: Cosa succede quando un'applicazione cerca di accedere a un blocco di memoria non presente nella memoria di sistema?
R: Quando un'applicazione tenta di accedere a un blocco di Memoria non presente nella Memoria di sistema, viene fermata e il blocco viene caricato nella Memoria di sistema.
D: Che cos'è il paging?
R: Il paging si riferisce a ciò che accade quando ciò che si trovava in quella parte della Memoria di sistema deve essere riscritto su disco a causa di un'applicazione che accede ad un'altra parte non memorizzata in origine.