La memoria principal de un ordenador, o memoria RAM, trabaja de una forma bastante peculiar que no muchos usuarios conocen. En este artículo podrás comprender cómo lo hace y cómo el sistema operativo la gestiona explicado de una manera sencilla.
Índice de contenidos
Cómo trabaja la memoria principal con el sistema operativo
Los ordenadores están compuestos por una jerarquía de memoria que trabaja en consonancia con el sistema operativo para mover toda la información que se necesita para ejecutar el software. Uno de los elementos clave de esa jerarquía de memoria es la denominada memoria RAM o memoria principal del sistema. Pero ¿sabrías decir cómo trabaja?
¿Para qué sirve la memoria principal?
La memoria principal es simplemente un espacio de almacenamiento intermedio entre la CPU y la memoria secundaria, es decir, los medios de almacenamiento masivo, como puede ser un disco duro. Por tanto, la memoria principal o RAM se va a encargar de cargar todo lo que la CPU necesita para «alimentarse» y ejecutar los programas: datos e instrucciones.
Estos datos e instrucciones se almacenan en forma de procesos, con unos espacios reservados para cada proceso con todas las instrucciones y los datos necesarios que se necesitan para ejecutar un programa determinado.
La idea de esta memoria es que la CPU no tenga que buscar la información en los medios secundarios, que son más lentos que la RAM en cuanto al acceso. Así se reduce la latencia y aumenta el rendimiento del equipo.
¿Qué son los accesos a memoria?
Se denomina acceso a memoria a cualquier acción de lectura o escritura en la memoria. Sin entrar en conceptos como el paginamiento, la segmentación, etc. Es así de simple, cualquier operación que lea o escriba una información se considera un acceso.
La memoria virtual
Para tener claro cómo trabaja la memoria principal también hay que tener claro el concepto de memoria virtual. Bien, una CPU puede direccionar X cantidad de memoria, es decir, X cantidad de direcciones posibles, y dentro de ese espacio de direccionamiento no solo existe la memoria RAM, sino que en teoría, los sistemas están diseñados para que los programadores dispongan de memoria casi infinita gracias a la memoria virtual.
Eso se consigue mediante una arquitectura que hace que la memoria RAM o principal y la memoria secundaria parezcan un mismo espacio de almacenamiento uniforme de cara al programador. O mejor dicho, que el espacio reservado en Windows a Pagefile.sys, o la SWAP o memoria de intercambio en sistemas tipo Unix, y la memoria RAM sean una prolongación aunque físicamente no sea así.
Desde el punto de vista del hardware, la CPU tendrá que traducir las direcciones reales de memoria a virtuales y viceversa, cuando quiera trabajar con los programas activos. Esto es lo que haría el TLB y MMU, aunque esto son otros temas…
Programas de gran tamaño
Cuando se desarrollan programas muy largos y pesados, estos consumirían gran cantidad de la memoria RAM disponible, y no dejaría cargar otros procesos o al menos no demasiados. Por eso se realiza lo que se conoce como overlay, es decir, dividir al programa en bloques de procesamiento que se irán moviendo desde o hacia la memoria RAM/memoria virtual.
Por ejemplo, imagina que un programa está compuesto por 5 módulos o bloques. Puede que el 1 y el 2 estén cargados en la RAM y el 3, 4 y 5 estén en la memoria secundaria, es decir, en ese Pagefile.sys o en la SWAP a la espera de que quede hueco en la RAM para subirlos a ella y que sean procesados por la CPU.
El Scheduler o planificador del kernel
El kernel del sistema operativo tiene una parte que se encarga de gestionar estos movimientos de procesos. Se denomina scheduler o planificador y permite dar prioridad a unos u otros procesos mediante un algoritmo para cargarlos o descargarlos de la memoria RAM según interese en cada momento.
¿Entonces por qué necesito más RAM?
Puedes pensar que si tienes aparentemente una memoria infinita, por qué necesitar memorias RAM cada vez más grandes. Pues bien, mientras mayor sea la memoria RAM, más procesos podrá albergar y más rápidamente entregará lo que necesita a la CPU, por lo que tendrá más rendimiento.
Sin embargo, una memoria RAM pequeña necesitaría pasar demasiados procesos a la memoria de intercambio, haciendo que sean más lentos. Además, cada software tiene sus propios requisitos de memoria para funcionar adecuadamente, por ese motivo, el equipo debería cumplir los requisitos mínimos para funcionar como se espera y de forma fluida.
¿Qué pasa si no cumplo los requisitos?
En principio, dependiendo del software que sea, incluso se podría ejecutar si no se cumplen los requisitos mínimos, aunque lo haría de forma pobre, haría que se sobrecargase el sistema, se degradaría el rendimiento, subiría la temperatura, y generaría otros problemas como bloqueos, etc.
Sin embargo, otros programas que ni siquiera se van a ejecutar si no se cumplen los requisitos mínimos especificados por su desarrollador. Esto ocurre en el caso de los más exigentes, como algunos videojuegos.
Antes de leer este artículo, ¿habrías imaginado que era así como trabajaba?