¿Alguien puede aclararme cuál es la diferencia entre la memoria virtual y el espacio de intercambio ?
¿Y por qué decimos que para una máquina de 32 bits la memoria virtual máxima accesible es solo de 4 GB?
operating-system
terminology
algo-geeks
fuente
fuente
Respuestas:
Hay una excelente explantación de memoria virtual en superusuario .
En pocas palabras, la memoria virtual es una combinación de RAM y espacio en disco que pueden usar los procesos en ejecución.
El espacio de intercambio es la parte de la memoria virtual que se encuentra en el disco duro, que se utiliza cuando la RAM está llena.
En cuanto a por qué la CPU de 32 bits está limitada a la memoria virtual de 4 GB, se aborda bien aquí :
fuente
Existe cierta confusión con respecto al término memoria virtual, y en realidad se refiere a los siguientes dos conceptos muy diferentes
El espacio de intercambio, OTOH, es el nombre de la parte del disco que se usa para almacenar páginas de RAM adicionales cuando no está en uso.
Una conclusión importante a tener en cuenta es que lo primero es posible de manera transparente debido al soporte de hardware y sistema operativo del segundo.
Para entender mejor todo esto, debe considerar cómo la "memoria virtual" (como en la definición 2) es compatible con la CPU y el sistema operativo.
Suponga que tiene un puntero de 32 bits (los puntos de 64 bits son similares, pero usan mecanismos ligeramente diferentes). Una vez que se ha habilitado la "Memoria virtual", el procesador considera que este puntero se compone de tres partes.
Ahora, cuando la CPU intenta acceder al contenido de un puntero, primero consulta la tabla Page Directory , una tabla que consta de 1024 entradas (en la arquitectura X86, cuya ubicación apunta el registro CR3). La entrada del directorio de páginas de 10 bits es un índice en esta tabla, que apunta a la ubicación física de la tabla de páginas . Esta, a su vez, es otra tabla de 1024 entradas, cada una de las cuales es un puntero en la memoria física y varios bits de control importantes. (Volveremos a esto más tarde). Una vez que se ha encontrado una página, los últimos 12 bits se utilizan para encontrar una dirección dentro de esa página.
Hay muchos más detalles (TLB, páginas grandes, PAE, selectores, protección de página) pero la breve explicación anterior captura la esencia de las cosas.
Al usar este mecanismo de traducción, un sistema operativo puede usar un conjunto diferente de páginas físicas para cada proceso, lo que le da a cada proceso la ilusión de tener toda la memoria para sí mismo (ya que cada proceso obtiene su propio directorio de páginas)
Además de esta memoria virtual, el sistema operativo también puede agregar el concepto de paginación . Uno de los bits de control discutidos anteriormente permite especificar si una entrada está "Presente". Si no está presente, un intento de acceder a esa entrada resultaría en una excepción de error de página . El sistema operativo puede capturar esta excepción y actuar en consecuencia. Los sistemas operativos que admiten el intercambio / paginación pueden decidir cargar una página desde el espacio de intercambio , arreglar las tablas de traducción y luego emitir el acceso a la memoria nuevamente.
Aquí es donde se combinan los dos términos, un sistema operativo que admita memoria virtual y paginación puede dar a los procesos la ilusión de tener más memoria de la que realmente está presente al paginar (intercambiar) páginas dentro y fuera del área de intercambio.
En cuanto a su última pregunta (¿Por qué se dice que la CPU de 32 bits está limitada a 4 GB de memoria virtual?). Esto se refiere a la "memoria virtual" de la definición 2 y es un resultado inmediato del tamaño del puntero. Si la CPU solo puede usar punteros de 32 bits, solo tiene 32 bits para expresar diferentes direcciones, esto le da 2 ^ 32 = 4GB de memoria direccionable.
Espero que esto aclare un poco las cosas.
fuente
En mi humilde opinión, es terriblemente engañoso utilizar el concepto de espacio de intercambio como equivalente a la memoria virtual. VM es un concepto mucho más general que el espacio de intercambio. Entre otras cosas, VM permite que los procesos hagan referencia a direcciones virtuales durante la ejecución, que se traducen a direcciones físicas con el soporte de hardware y tablas de páginas. Por lo tanto, los procesos no se preocupan por cuánta memoria física tiene el sistema, o dónde residen realmente la instrucción o los datos en la jerarquía de la memoria física. VM permite este mapeo. El elemento referenciado (instrucción o datos) puede residir en L1, L2 o RAM, o finalmente en el disco, en cuyo caso se carga en la memoria principal.
El espacio de intercambio es solo un lugar en la memoria secundaria donde se almacenan las páginas cuando están inactivas. Si no hay suficiente RAM, el sistema operativo puede decidir intercambiar páginas de un proceso para dejar espacio para otras páginas de proceso. El procesador nunca ejecuta instrucciones ni lee / escribe datos directamente desde el espacio de intercambio.
Tenga en cuenta que sería posible tener espacio de intercambio en un sistema sin VM. Es decir, los procesos que acceden directamente a direcciones físicas, aún podrían tener partes en el disco.
fuente
Aunque el hilo es bastante antiguo y ya ha sido respondido. Todavía me gustaría compartir este enlace ya que esta es la explicación más simple que he encontrado hasta ahora. El siguiente enlace tiene diagramas para una mejor visualización.
diferencia-entre-memoria-virtual-y-memoria-de-intercambio
fuente
"Memoria virtual" es un término genérico. En Windows, se llama paginación o paginación. En Linux, se llama Swap.
fuente