Bueno, no espero una respuesta más concisa que la disponible aquí.
Lo que entiendo sobre el sistema operativo de 32 bits es que la dirección se expresa en 32 bits, por lo que, como máximo, el sistema operativo podría usar 2^32 =4 GB de espacio de memoria
Lo máximo que el proceso puede dirigirse es de 4 GB. Estás potencialmente confundiendo la memoria con espacio de dirección . Un proceso puede tener más memoria que espacio de direcciones. Eso es perfectamente legal y bastante común en el procesamiento de video y otras aplicaciones que requieren mucha memoria. A un proceso se le pueden asignar docenas de GB de memoria e intercambiarlo dentro y fuera del espacio de direcciones a voluntad. Solo 2 GB pueden ir al usuario espacio de direcciones a la vez.
Si tiene un garaje para cuatro autos en su casa, todavía puede tener cincuenta autos. Simplemente no puedes guardarlos todos en tu garaje. Debe tener almacenamiento auxiliar en otro lugar para almacenar al menos 46 de ellos; qué autos guardas en tu garaje y cuáles en el estacionamiento al final de la calle depende de ti.
¿Significa esto que cualquier sistema operativo de 32 bits, ya sea Windows o Unix, si la máquina tiene RAM + archivo de página en el disco duro de más de 4 GB, por ejemplo, 8 GB de RAM y 20 GB de archivo de página, nunca habrá "memoria agotada"? /P>
Absolutamente no significa eso. ¡Un solo proceso podría usar más memoria que eso! Una vez más, la cantidad de memoria que usa un proceso no tiene casi ninguna relación con la cantidad de espacio de direcciones virtuales que usa un proceso. Al igual que la cantidad de autos que tiene en su garaje no tiene ninguna relación con la cantidad de autos que posee.
Además, dos procesos pueden compartir páginas de memoria no privadas . Si veinte procesos cargan la misma DLL, todos los procesos comparten las páginas de memoria para ese código. No comparten espacio de direcciones de memoria virtual , comparten memoria .
Mi punto, en caso de que no quede claro, es que debe dejar de pensar en la memoria y el espacio de direcciones como lo mismo, porque no son lo mismo en absoluto.
si esta máquina con sistema operativo de 32 bits tiene 2 GB de RAM y un archivo de página de 2 GB, aumentar el tamaño del archivo de página no mejorará el rendimiento. ¿Es esto cierto?
Tienes cincuenta autos y un garaje para cuatro autos, y un estacionamiento para 100 autos al final de la calle. Aumentas el tamaño del estacionamiento a 200 lugares. ¿Alguno de sus automóviles se vuelve más rápido como resultado de que ahora tiene 150 espacios de estacionamiento adicionales en lugar de 50 espacios de estacionamiento adicionales?
La respuesta de Ramesh es completamente incorrecta. ¡Un proceso no puede tener más memoria que espacio de direcciones, y simplemente porque no puede direccionarlo! Para usar más de 4 GB, el proceso necesita acceder a él por la dirección, como usar ponters en C/C++. Si supuestamente puede tener, por ejemplo, 10 GB de RAM, ¿cómo puede decirle al proceso que acceda a los datos ubicados en 5 GB, si sus punteros, en 32 bits, pueden alcanzar como máximo 4 GB? Es imposible. Toda su explicación está relacionada con el sistema operativo. Puede activar ciertos bloques de 4GB como máximo, de un pool de, digamos, 64GB. Por lo tanto, siempre hay un máximo de 4 GB al mismo tiempo, y cualquier proceso puede acceder a un máximo de 4 GB. Luego, para un proceso diferente, el SO puede activar un bloque diferente de 4 GB del grupo, pero el proceso nuevamente estará limitado a 4 GB. En realidad, aunque un puntero de 32 bits puede direccionar hasta 4 GB, el límite para un 32 -el proceso de bits es de 3GB.