2011-07-07 18 views
12

Me han preguntado en una entrevista si la memoria virtual es infinita. Respondí diciendo que no es infinito. Luego, el entrevistador preguntó la explicación y lo que sugerí fue que en Windows tenemos una forma manual de configurar la memoria virtual hasta cierto límite.¿La memoria virtual es infinita?

Me gustaría saber si la memoria virtual es realmente infinito?

Respuesta

24

Antes que nada, olvide la idea de que la memoria virtual está limitada por el tamaño de los punteros de su máquina.

Los límites de la memoria virtual no son lo mismo que el espacio de direcciones. Puede direccionar más memoria virtual de la disponible en su espacio de direcciones basado en puntero usando paginación.

  • límites superiores de memoria virtual son fijados por el OS : por ejemplo, en Windows de 32 bits el límite es de 16 TB, y en 64 bits de Windows el límite es de 256 TB.
  • de memoria virtual también está limitada físicamente por el espacio disponible en el disco .

Para una excelente revisión, que aborda varios conceptos erróneos, consulte los siguientes:

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

+0

Sí @stusmith Creo que tiene razón. Puede abordar más memoria virtual de la que está disponible en su puntero, y es una idea completa del uso de la memoria virtual. –

+0

La memoria virtual no está exactamente limitada por el espacio en disco, puede asignarse pero no asignarse, lo que se denomina "memoria virtual reservada". Consulte https://msdn.microsoft.com/en-us/library/windows/desktop/aa366887(v=vs.85).aspx y MEM_RESERVE para obtener una explicación. –

3

Si nada más, entonces la memoria virtual va a estar limitado por la cantidad de espacio disponible en disco, esto es tristemente lejos de infinito.

0

La memoria virtual es la suma de la memoria RAM y espacio en disco duro disponible en la mayoría de los casos. Como la sumatoria es un número contable, no puede ser infinito.

+0

'La memoria virtual es la suma de la memoria RAM y espacio en disco duro disponible en la mayoría cases' incorrecto. RAM es memoria física, no virtual – Raoul

+0

@raoul: no dije RAM es memoria virtual. – Donotalo

+0

usted dijo claramente 'La memoria virtual es la suma de la RAM y el espacio disponible en el disco duro en la mayoría de los casos". – Raoul

2

Por lo menos, el tamaño de la memoria virtual está limitado por el tamaño de los punteros en una plataforma determinada (a menos que tenga punteros cercanos/lejanos y un modelo de memoria no plana). Por ejemplo, no puede direccionar más de 2^32 (4GB) de memoria usando un solo puntero de 32 bits.

En la práctica, la memoria virtual se debe respaldar con algo eventualmente, como un archivo de paginación en el disco, por lo que el tamaño del almacenamiento impone un límite más práctico.

+0

Lo siento, eso es simplemente incorrecto. Busque "PAE" (extensión de dirección física) por ejemplo. – stusmith

+1

@stusmith: Un kernel Linux habilitado para PAE requiere que la CPU también sea compatible con PAE. Entonces, está limitado por la arquitectura de la computadora, ¿verdad? –

+2

@logic_max: Sí, pero un chip Intel de 32 bits es capaz de soportar PAE. Quizás una mejor forma de expresarlo es: es el valor más bajo de [compatibilidad con chips, límite de OS, espacio en disco]. Por lo general, el valor más bajo es el espacio en disco. – stusmith

0

Tenías razón decir, no, no es infinita. La memoria virtual direccionable está limitada por el espacio de direcciones de la arquitectura. Para obtener más información, consulte virtual memory.

0

El tamaño del almacenamiento virtual está limitado por el esquema de direccionamiento del sistema de la computadora y por la cantidad de memoria secundaria disponible y no por el número real de ubicaciones de la memoria principal.

Por ejemplo: - Incluso si tenía 20 TB de memoria secundaria, no significa que la memoria virtual puede ser de 20TB. Está restringido por la arquitectura de tu computadora.

Cuestiones relacionadas