
Sé que la memoria virtual es un archivo de paginación que usa la computadora para almacenar una parte de la RAM en el disco duro para un proceso en ejecución. Pero, ¿qué tan diferente es el espacio de direcciones virtuales? ¿Es la RAM, el disco duro o ambos?
Respuesta1
El espacio de direcciones virtuales es lo que ve un programa individual cuando se ejecuta. Dependiendo de cómo se haya configurado el programa, este espacio de direcciones será tan grande como el máximo que admita el sistema operativo.
El núcleo del sistema operativo es entonces responsable de asignar direcciones en el vas a la memoria física, ya sea RAM o archivos de páginas del sistema.
Con este diseño, los propios programas desconocen los recursos y las direcciones reales, y pueden operar como si tuvieran toda la memoria del sistema para ellos, o al menos la memoria máxima que un solo proceso puede usar.
En pocas palabras, un programa funciona con VAS y el sistema operativo se encarga de asignar VAS al almacenamiento real para que sea invisible para el programa en ejecución. El programa en ejecución solo ve su VAS.
Respuesta2
El espacio de direcciones virtuales es una limitación en el tamaño de la memoria que puede abordar un programa.
Esto está limitado en el límite exterior por el estilo de los punteros: un puntero puro de 32 bits puede, en teoría, abordar 4 GB de espacio virtual. El límite real depende del diseño del sistema operativo, ya que utiliza una parte importante del espacio de direcciones.junto ael espacio del usuario.
En Win32, la configuración predeterminada es permitir un espacio de direcciones virtuales de 2 GB como espacio de usuario.
Un puntero de 64 bits puede abordar muchas más cosas; en la práctica, normalmente se permiten 48 bits y hay muchos detalles sobreesta respuesta de superusuario.
En teoría, alguien podría construir una computadora física con suficiente RAM para que esos 2 GB de espacio de usuario pudieran asignarse directamente a la memoria física (probablemente necesitando al menos 3 GB de física), de modo que tendría procesos de 32 bits donde la memoria virtual no fuera muy virtual.
Respuesta3
El espacio de direcciones virtuales es lo que ve el proceso. Por ejemplo, su correo electrónico se encuentra en una bandeja de entrada de, digamos, 25 GB de tamaño. Ese es su espacio de direcciones virtuales.
El espacio de direcciones virtuales sirve para distinguir el hecho de que no todos los espacios de direcciones virtuales corresponden a unfísicoespacio de dirección. Digamos que tienes 20 usuarios de correo electrónico con 25 GB de espacio en la bandeja de entrada. Pero sólo tienes 100 GB de espacio en disco en tu servidor. Bueno, puedes tomar correos electrónicos antiguos y archivarlos y solo conservar los recientes en tu servidor porque la gente generalmente solo revisa el correo electrónico más reciente.
Archivar el correo electrónico desde el servidor en, digamos, una unidad de cinta es similar a que la computadora transfiera partes de la RAM al disco. Cuando alguien va a ver un correo electrónico antiguo, simplemente "pagina" el correo electrónico antiguo desde la cinta a su servidor. El usuario del correo electrónico nunca notará la diferencia.
De la misma manera, cada proceso en su máquina tieneXespacio de direcciones virtuales, aunque tenga menos X * number of processes
memoria física.
La memoria virtual es exactamente eso. Espacio de direcciones virtuales. Pero la memoria virtual es sólo el espacio de direcciones virtuales que estás utilizando.