El Mapa de la RAM

Cómo Linux reparte la memoria entre todos los programas.

¿Cómo se reparte la memoria?

Analogía: La RAM es como un estacionamiento gigante. Cada programa necesita un espacio. El sistema operativo es el empleado que asigna los espacios y se asegura de que nadie invada el lugar de otro.

Cuando abres un programa, Linux le asigna un bloque de memoria. Pero no le da memoria física directamente: usa un truco llamado memoria virtual para que cada programa crea que tiene toda la RAM para sí solo.

Paginación: Dividir para conquistar

Linux divide la memoria en bloques pequeños llamados páginas (normalmente de 4 KB). Cuando un programa necesita memoria, recibe varias páginas.

Memoria dividida en páginas

Cada página = 4 KB de espacio

Tabla de páginas

Un mapa que traduce dirección virtual → física

# Ver el tamaño de página de tu sistema
getconf PAGE_SIZE

# Resultado típico: 4096 (bytes) = 4 KB

Segmentación: Organizar por tipo

Mientras la paginación divide la memoria en bloques iguales, la segmentación la organiza por tipo de contenido:

Segmento de Código

Las instrucciones del programa

Segmento de Datos

Variables y constantes

Segmento de Pila

Llamadas a funciones

Espiando la memoria en Linux

Linux expone toda la información de la memoria a través de archivos virtuales:

# Ver el estado completo de la memoria
cat /proc/meminfo

# Ver resumen en formato legible
free -h

# Ver estadísticas de memoria virtual
vmstat

# Ver la memoria de un proceso específico (ej. PID 1)
cat /proc/1/maps | head -20
Dato Linux: El archivo /proc/meminfo no existe en el disco. Es un archivo virtual que el kernel genera en tiempo real cada vez que lo lees.

Laboratorio Vivo

# 1. ¿Cuánta RAM tiene tu sistema?
free -h

# 2. ¿Cuánto ocupa el kernel?
cat /proc/meminfo | grep -i "kernel"

# 3. Tamaño de la página de memoria
getconf PAGE_SIZE

# 4. Ver el mapa de memoria de un proceso
cat /proc/self/maps

# 5. Estadísticas de uso
vmstat 1 5

Galería de Videos

Paginación y Segmentación
Memoria en Linux

Referencias Bibliográficas

  • Silberschatz, A. (2018). Operating System Concepts, 10th Ed. Wiley.
  • Kerrisk, M. (2010). The Linux Programming Interface. No Starch Press.
  • Kernel.org. Memory Management Documentation. Ver docs