2011-11-13 26 views
5

Según tengo entendido, al leer varios artículos, asumí que el espacio de dirección del proceso (PAS) y la memoria virtual (VM) son los mismos. ¿Está mi entendimiento defectuoso? ¿Puede alguien por favor arrojar algo de luz sobre esto y aclararme? Estoy confundido.Espacio de dirección del proceso frente a la memoria virtual

Entiendo que el espacio de direcciones del proceso no tiene nada que ver con la memoria RAM o física.

Pero solo confundido sobre PAS y VM.

Respuesta

7

Primero:"memory" is not equal to "address space". El espacio de direcciones es el rango de direcciones posibles. Es decir. es 4 Gb para punteros de 32 bits y 16 Eb para punteros de 64 bits. Por otro lado, la memoria es ... bueno, memoria que puedes usar (al menos posiblemente). Entonces, apuesto a que estás preguntando si "memoria de proceso" es igual a "memoria virtual" o si "espacio de dirección de proceso" es igual a "espacio de dirección virtual".

Segundo: La memoria virtual es la única memoria que puede usar en el modo de usuario. No puedes acceder a la memoria física. La memoria física es para el modo kernel y los controladores. Las aplicaciones de modo de usuario solo funcionan con memoria virtual. Por lo tanto, toda la memoria es virtual en modo de usuario. No es necesario agregar "virtual". Es por defecto.

Por lo tanto, "Espacio de direcciones de proceso" = "Espacio de direcciones de proceso [virtual]" - es decir, el espacio de direcciones virtuales del proceso individual. Lo mismo aplica para "memoria": "Memoria de proceso" = "Memoria de proceso [virtual]".

Tercero: Ahora, el término "Memoria virtual" generalmente se refiere a "Memoria virtual del sistema" (cosa global), que es más que un solo proceso. Por otro lado, dado que el direccionamiento es específico del proceso, no existe el "Espacio de direcciones virtuales del sistema" (espacio global de direcciones de todos los procesos y kernel).

Por lo tanto, la respuesta es:

  1. "El espacio de direcciones de proceso" = "espacio de direcciones virtual" = "Espacio de direcciones"
  2. "Memoria Proceso" <> "memoria virtual"

Ejemplos

Por ejemplo, el límite típico para el espacio de direcciones de proceso es de 4 Gb (para aplicaciones de 32 bits). Sin embargo, un límite típico de la memoria virtual de proceso es de 2 Gb (que puede ampliarse hasta 3 Gb para máquinas de 32 bits o 4 Gb para máquinas de 64 bits).

Por otro lado, la memoria virtual es más grande que solo su proceso. Considere el caso cuando asigna memoria a través de la función CreateFileMapping. Puede crear, por ejemplo, un bloque de memoria virtual de 64 Gb. Eso está bien, aunque con 64 Gb> 2 Gb. Por supuesto, no puede usar todos los 64 Gb al mismo tiempo (porque el espacio de direcciones del proceso es de solo 4 Gb), pero puede hacerlo en fragmentos, por ejemplo, por 512 Mb.

Además, considere el caso al asignar el mismo bloque de memoria virtual a las ubicaciones de mupliple (varias direcciones).

En otras palabras, no existe una correspondencia uno a uno entre la memoria virtual y la dirección virtual.

Cuestiones relacionadas