¿Por qué y cómo cambia el sistema operativo si se usa toda la memoria RAM?

Comencemos con el escenario en el que tenemos un programa que es más grande que la RAM disponible.

Digamos que la RAM es de 64 KB y el tamaño del programa es de aproximadamente … 500 KB.

Ahora para evaluar todo el programa (estoy hablando de un ejecutable aquí, donde el código fuente ya se ha convertido en código de ensamblaje, con todos los elementos de enlace y carga necesarios para ejecutar el programa en la RAM), el programa debe ser presente en la RAM.

Pero el problema es que el programa es mucho más grande que la RAM. ¿Entonces? ¿Solución? Cargue el programa en partes del HDD, evalúe en partes, almacene el resultado, luego cargue la siguiente parte del HDD, evalúelo, etc., hasta que se ejecute todo el programa. En este ejemplo, se deben cargar 500 KB de programa en aproximadamente … 500/64 ~ 8 partes.

1] Esto se llama SWAP. Cuando no hay suficiente espacio en la RAM para ejecutar todo el programa, el sistema operativo debe realizar repetidamente llamadas al HDD para cargar partes posteriores del programa en la RAM para que la CPU lo ejecute. (Aquí el HDD funciona como memoria virtual … es decir, al programador se le da la ilusión como si tuviera cantidades ilimitadas de RAM para ejecutar su programa … El HDD es tan grande que puede considerarse ilimitado).

2] Sin embargo, eso es solo una parte de la historia.

En el entorno multitarea de hoy, el sistema operativo mantiene partes de muchos programas en la RAM en todo momento, para que la CPU pueda recorrer muchos programas sin problemas. Aquí me refiero principalmente a los servicios en segundo plano del sistema operativo y a un escenario en el que tiene un navegador, un reproductor multimedia, un documento de Word, etc. Todo abierto al mismo tiempo.

Para esto, es mejor cargar pequeños servicios en su totalidad y programas más grandes en partes, para que la experiencia general pueda ser mejor en el hardware ya mejor.

La memoria se asigna (de acuerdo con la unidad de administración de memoria, MMU de la CPU) en un espacio más grande que la memoria física, y el sistema operativo mantiene la ejecución hasta que una unidad del espacio (la página solicitada) se introduce en la RAM. En el proceso, las páginas utilizadas menos recientemente se expulsan a la partición de intercambio, para hacer espacio. Dado que implica latencia hacia y desde un periférico de E / S, tiende a ralentizar las cosas y no es deseable (en comparación con tener suficiente DDR3).

En general, desea considerar la ‘memoria virtual’ y su implementación en diseños de CPU de interés. Luego hay que considerar un aspecto del sistema operativo (bastante diferente en iOS y entre las compilaciones de Android, que en su mayoría no tienen partición de intercambio).

More Interesting

¿Por qué no se puede considerar o utilizar HBM como sucesor de RAM DDR?

¿Por qué la Mac Pro 2017 usa RAM DDR3? ¿No se supone que DDR4 es mejor? ¿Por qué los iMacs menos costosos usan DDR3 pero el Mac Pro no?

¿No es cierto que si NO estamos especialmente interesados ​​en los juegos, una computadora para juegos es probablemente una pérdida de dinero ya que 8 GB de RAM con Linux MATE es perfectamente adecuada y si uno agrega un SSD rápido incluso con KDE, Gnome, Unity?

¿Cuánto FPS obtendría en Minecraft con 8GB de RAM, A8 7140 y una Radeon R5?

¿Por qué la RAM tiene un precio tan alto en los últimos meses?

¿Por qué se pierde el contenido de RAM cuando la computadora está apagada?

¿Por qué las compañías de teléfonos inteligentes comprometen la batería de respaldo cuando aumentan la velocidad del procesador y la RAM y viceversa?

¿La memoria RAM es interna?

¿Qué debo priorizar en un presupuesto para una computadora portátil para juegos (CPU / GPU / RAM / SSD)?

¿Cómo es posible alcanzar 32 GB de RAM de uso?

Se supone que mi teléfono tiene un ram de 3 gb, pero solo puedo obtener 1.4 gb de él. ¿Por qué?

¿Qué sucede si borro la RAM de mi teléfono Android?

Para computadoras / PC / Android, ¿no hay otra solución tecnológica que no sea simplemente un salto en las especificaciones (RAM, VRAM y procesadores)?

¿Por qué mi espacio de almacenamiento dinámico 'max' en Java es de solo 3.7GB cuando mi computadora tiene 16GB de RAM?

¿Cuál es la RAM DDR más rápida disponible?