¿Qué pasará si utilizamos más de 4GB de memoria en un sistema de 32 bits? ¿Podrá el sistema utilizar más de 4GB? ¿En qué condiciones puede un sistema tener más de 4GB de memoria?


Estos posts que describen la diferencia entre memoria física y virtual son excelentes, pero no acaban de responder a la pregunta.

Cuando la memoria virtual está llena, el sistema operativo matará el proceso. Tan simple como eso.


El agotamiento de la memoria física, por otro lado, es una historia mucho más complicada. La mayoría de los sistemas operativos intentarán "intercambiar" páginas de memoria al disco cuando la memoria física esté llena. *Los sistemas NIX suelen tener una partición de disco separada para utilizarla como espacio de intercambio, mientras que Windows utiliza un gigantesco archivo binario llamado "archivo de páginas". Cuando el sistema operativo intercambia, escribe una o más páginas de memoria en el disco basándose en la probabilidad de que se utilicen (esto es un gran tema de CS por sí mismo: ver Algoritmos de caché en Wikipedia), y luego da la(s) página(s) que se libera(n) al proceso solicitante. Si un proceso necesita datos en una página intercambiada y la memoria física todavía está agotada, el sistema operativo debe encontrar otra página para intercambiar para que pueda intercambiar la página deseada de nuevo.
(Si no hay espacio de intercambio, ya sea porque también está lleno o porque nunca existió para empezar, el sistema operativo simplemente mata el proceso.)


El problema con el intercambio es que la E/S del disco es extremadamente lenta en comparación con la E/S de la memoria, por lo que cualquier proceso de memoria intensiva que exceda la memoria normalmente se ralentizará a un ritmo lento. En la mayoría de los casos, el tiempo de ejecución esperado de tales procesos se disparará, y merece más la pena matarlo, reescribirlo para hacerlo más eficiente en cuanto a memoria y reiniciarlo que dejarlo continuar.

En la era moderna de la computación, el intercambio se ve cada vez más como una práctica obsoleta, porque con las expectativas modernas para el tiempo de procesamiento de incluso los cálculos más intensivos de la CPU y la memoria, el intercambio significa la muerte, y el proceso también puede haber estrellado.
El usuario final de hoy en día (es decir. Y aquellos que se preocupan por cosas como el almacenamiento de datos ya estarán prestando mucha atención a qué datos se escriben en el disco y cuándo, y qué se queda en la memoria.

Esto da lugar a algo que he llamado el Dilema del Usuario Moderno de Linux (ya que la configuración de una partición de intercambio es a menudo una parte explícita de las instrucciones de instalación de Linux): demasiada RAM para esperar intercambiar, pero demasiado espacio en el disco para preocuparse por el espacio perdido por el intercambio. (Definitivamente consideraría esto un "problema del primer mundo" :p)

Dato divertido:
Los fans del editor de texto vi solían decir que un editor rival, EMACS, significaba "Eight Megs And Constantly Swapping". Esto se decía cuando 8 MB se consideraba una cantidad extravagante de memoria para un editor, y su propósito era burlarse de lo innecesariamente intensivo en memoria que era.