Gestión de memoria en sistemas operativos
1. Memoria física vs memoria virtual #
- La memoria física es la RAM instalada en el sistema.
- La memoria virtual es un espacio de direcciones lógico que el sistema operativo asigna a cada proceso.
👉 Ventajas de la memoria virtual:
- Cada programa cree que tiene su propio espacio de memoria continuo.
- Aumenta la seguridad: un proceso no puede leer la memoria de otro.
- Permite usar más memoria que la RAM física, gracias a la paginación en disco.
2. Paginación y swap #
- La memoria se divide en páginas (bloques típicos de 4 KB).
- Si la RAM se llena, el sistema operativo mueve páginas poco usadas al disco (swap en Linux, archivo de paginación en Windows).
- Desventaja: el acceso al disco es miles de veces más lento que a la RAM → el sistema puede ir muy lento si depende demasiado de swap.
👉 Por eso tener suficiente RAM física es crucial.
3. TLB (Translation Lookaside Buffer) #
- Acceder a memoria virtual implica traducir direcciones virtuales a físicas mediante la MMU (Memory Management Unit).
- Para acelerar este proceso, existe una caché especial: TLB.
- Guarda las traducciones más recientes → mejora muchísimo el rendimiento.
4. Huge Pages / Large Pages #
-
Normalmente, las páginas son de 4 KB.
-
Algunos sistemas permiten usar páginas más grandes (2 MB o 1 GB).
-
Ventajas:
- Menos entradas en la TLB → menos fallos de TLB.
- Mejor rendimiento en aplicaciones pesadas (bases de datos, virtualización, IA).
5. NUMA (Non-Uniform Memory Access) #
- En servidores multiprocesador, cada CPU puede tener su propio bloque de memoria.
- Acceder a la RAM local es más rápido que a la RAM de otra CPU.
- El sistema operativo debe optimizar la colocación de procesos y datos para minimizar accesos lejanos.
👉 Ejemplo: en un servidor con 2 sockets de CPU, conviene que un proceso use la RAM del mismo socket donde se ejecuta.
Resumen del tema
Conceptos clave #
- Memoria Virtual y MMU: abstracción que proporciona aislamiento de memoria por proceso y traducción de direcciones virtuales a físicas mediante la Unidad de Gestión de Memoria.
- Paginación y Swap: división en marcos de 4 KB; volcado a almacenamiento secundario (swap / archivo de paginación) cuando la RAM física se satura.
- TLB (Translation Lookaside Buffer): caché de hardware que acelera la traducción de tablas de páginas reduciendo accesos repetitivos a RAM.
- Huge Pages: páginas de memoria de 2 MB o 1 GB para reducir la sobrecarga de TLB en bases de datos y máquinas virtuales.
- Arquitectura NUMA (Non-Uniform Memory Access): en servidores multi-socket, la latencia depende de si la memoria accedida está conectada al bus local de la CPU o a un nodo remoto.
Qué debes recordar #
La memoria virtual aísla los procesos y la TLB acelera la traducción de direcciones; el exceso de swap en disco penaliza drásticamente el rendimiento del sistema.