¿Cómo se reparte la memoria?
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
/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