2011-07-07 25 views
12

Mi è stato chiesto in un'intervista se la memoria virtuale è infinita? Ho risposto dicendo che non è infinito. Quindi l'intervistatore ha chiesto spiegazioni e quello che ho suggerito è che in Windows abbiamo un modo manuale per configurare la memoria virtuale entro un certo limite.La memoria virtuale è infinita?

Mi piacerebbe sapere se la memoria virtuale è davvero infinita?

risposta

24

Prima di tutto, dimentica l'idea che la memoria virtuale è limitata dalla dimensione dei puntatori sulla tua macchina.

I limiti di memoria virtuale non corrispondono a quelli relativi allo spazio. È possibile indirizzare più memoria virtuale di quanto non sia disponibile nello spazio degli indirizzi basato su puntatore usando il paging.

  • limiti superiori di memoria virtuale sono impostati dal sistema operativo : per esempio, su Windows a 32 bit il limite è di 16 TB, e a 64 bit di Windows il limite è 256TB.
  • La memoria virtuale è inoltre fisicamente limitata dallo spazio disponibile su disco .

Per una panoramica eccellente, che affronta varie idee sbagliate, vedere il seguente:

http://blogs.msdn.com/b/ericlippert/archive/2009/06/08/out-of-memory-does-not-refer-to-physical-memory.aspx

+0

Sì @stusmith penso che tu abbia ragione Puoi occupare più memoria virtuale di quella disponibile nel tuo puntatore, ed è un'idea completa di usare la memoria virtuale. –

+0

La memoria virtuale non è esattamente limitata dallo spazio su disco, ma può essere allocata ma non mappata, la cosiddetta "memoria virtuale riservata". Vedere https://msdn.microsoft.com/en-us/library/windows/desktop/aa366887(v=vs.85).aspx e MEM_RESERVE per la spiegazione. –

3

Se nient'altro allora la memoria virtuale sarà limitata dalla quantità di spazio disponibile sul disco, questo è purtroppo tutt'altro che infinito.

0

La memoria virtuale è la somma della RAM e lo spazio disponibile su disco rigido nella maggior parte dei casi. Poiché la somma è un numero numerabile, non può essere infinito.

+0

'La memoria virtuale è la somma di RAM e di spazio disponibile su disco rigido nella maggior parte cases' sbagliato. RAM è memoria fisica, non virtuale – Raoul

+0

@raoul: non ho detto ram è memoria virtuale. – Donotalo

+0

hai detto chiaramente "La memoria virtuale è la somma della RAM e lo spazio disponibile su disco rigido nella maggior parte dei casi". – Raoul

2

Per lo meno, la dimensione della memoria virtuale è limitata dalla dimensione dei puntatori su una determinata piattaforma (a meno che non contenga puntatori vicini/lontani e modello di memoria non piatto). Ad esempio, non è possibile indirizzare più di 2^32 (4 GB) di memoria utilizzando un singolo puntatore a 32 bit.

In pratica, la memoria virtuale deve essere sottoposta a backup con qualcosa alla fine - come un file di paging su disco - quindi la dimensione dello storage impone un limite più pratico.

+0

Scusa, è sbagliato. Cerca "PAE" (estensione dell'indirizzo fisico) per esempio. – stusmith

+1

@stusmith: un kernel Linux abilitato per PAE richiede che la CPU supporti anche PAE. Quindi, è limitato dall'architettura del computer, giusto? –

+2

@logic_max: Sì, ma un chip Intel a 32 bit è in grado di supportare PAE. Forse un modo migliore di metterlo è: è il valore più basso di [supporto chip, limite OS, spazio disco]. Di solito quel valore più basso è lo spazio su disco. – stusmith

0

Avevi ragione a dire, no, non è infinito. La memoria virtuale indirizzabile è limitata dallo spazio degli indirizzi dell'architettura. Per ulteriori informazioni vedi virtual memory.

0

La dimensione della memoria virtuale è limitata dallo schema di indirizzamento del sistema informatico e dalla quantità di memoria secondaria disponibile e non dal numero effettivo di posizioni di memoria principale.

Ad esempio: - Anche se si dispone di 20 TB di memoria secondaria, ciò non significa che la memoria virtuale possa essere di 20 TB. È limitato dall'architettura del tuo computer.

Problemi correlati