Gestión de Memoria

Administración y Optimización de Memoria

Explora los mecanismos fundamentales que permiten la gestión eficiente de la memoria en sistemas modernos

4
Niveles de Memoria
64KB
Tamaño de Página
8
Algoritmos de Reemplazo

¿Qué es la Gestión de Memoria?

Concepto Fundamental

La gestión de memoria es el proceso mediante el cual el sistema operativo controla y coordina el uso de la memoria principal (RAM) del computador, optimizando la asignación y liberación de espacios de memoria para los programas en ejecución.

Importancia

Una gestión eficiente de memoria permite ejecutar múltiples programas simultáneamente, maximiza el rendimiento del sistema, previene conflictos entre procesos y garantiza la estabilidad del sistema operativo.

Jerarquía de Memoria

Registros de CPU

Velocidad: Inmediata Capacidad: Bytes Costo: Muy Alto

Los registros más rápidos del procesador, acceso instantáneo

Memoria Caché

Velocidad: < 1ns Capacidad: KB-MB Costo: Alto

Memoria ultra-rápida que almacena datos frecuentemente utilizados

Memoria Principal (RAM)

Velocidad: 10-100ns Capacidad: GB Costo: Medio

Memoria principal donde se cargan los programas en ejecución

Almacenamiento Secundario

Velocidad: ms Capacidad: TB Costo: Bajo

Discos duros, SSD y otros dispositivos de almacenamiento permanente

Tipos de Gestión de Memoria

Memoria Física

Partición Fija: División estática de la memoria en bloques de tamaño fijo
Partición Variable: Asignación dinámica según las necesidades del proceso
Compactación: Reorganización para eliminar fragmentación externa

Memoria Virtual

Paginación: División de memoria en páginas de tamaño fijo
Segmentación: División lógica según la estructura del programa
Paginación Segmentada: Combinación de ambas técnicas

Protección

Límites de Base: Definición de rangos de memoria válidos
Bits de Protección: Control de permisos de lectura/escritura/ejecución
Aislamiento: Separación entre espacios de procesos

Optimización

Localidad Temporal: Datos usados recientemente tienden a usarse de nuevo
Localidad Espacial: Datos cercanos tienden a usarse juntos
Prefetching: Carga anticipada de datos probables

Sistema de Paginación

La paginación es una técnica de gestión de memoria que divide tanto la memoria física como la virtual en bloques de tamaño fijo llamados páginas, permitiendo una asignación más eficiente y flexible.

Tabla de Páginas

Estructura que mapea páginas virtuales a marcos de página físicos

Número de Página Virtual

Índice que identifica cada página en el espacio virtual del proceso

Marco de Página Físico

Dirección real en memoria física donde se encuentra la página

Bit de Validez

Indica si la página está actualmente en memoria física

Bits de Protección

Definen permisos de lectura, escritura y ejecución

Algoritmos de Reemplazo de Páginas

Cuando la memoria física se llena, el sistema debe decidir qué páginas reemplazar para hacer espacio a nuevas páginas. Los algoritmos de reemplazo determinan esta selección.

Algoritmo Descripción Complejidad Eficiencia
FIFO Reemplaza la página que llegó primero (First In, First Out) O(1) Baja
LRU Reemplaza la página usada menos recientemente O(1) con hardware Alta
Óptimo Reemplaza la página que no se usará por más tiempo Teórico Máxima
Clock Aproximación de LRU usando bit de referencia O(n) Media-Alta
LFU Reemplaza la página usada con menor frecuencia O(log n) Media
MFU Reemplaza la página usada con mayor frecuencia O(log n) Baja
Random Selecciona una página aleatoriamente para reemplazar O(1) Variable
Second Chance FIFO modificado que da una segunda oportunidad O(n) Media

Fragmentación de Memoria

Fragmentación Externa

Definición: Espacios libres de memoria que no pueden utilizarse porque están divididos en fragmentos demasiado pequeños.

Características:

  • Ocurre en asignación variable
  • Memoria total disponible pero no contigua
  • Reduce eficiencia del sistema

Soluciones:

Compactación: Reorganizar memoria para juntar espacios libres
Paginación: Elimina fragmentación externa por completo

Fragmentación Interna

Definición: Memoria desperdiciada dentro de una unidad de asignación porque el proceso no utiliza todo el espacio asignado.

Características:

  • Ocurre en asignación fija
  • Espacio asignado pero no utilizado
  • Promedio: 50% del bloque

Soluciones:

Particiones Múltiples: Diferentes tamaños de partición
Segmentación: Asignación según necesidades reales

Técnicas Modernas de Gestión

Copy-on-Write (COW)

Técnica que permite compartir páginas entre procesos hasta que uno de ellos modifica el contenido, momento en el que se crea una copia.

fork() + COW = eficiencia Beneficio: Reduce uso de memoria y mejora rendimiento en creación de procesos.

Memoria Compartida

Permite que múltiples procesos accedan a la misma región de memoria física, facilitando la comunicación entre procesos.

shm_open() + mmap() Beneficio: Comunicación rápida y eficiente entre procesos relacionados.

NUMA (Non-Uniform Memory Access)

Arquitectura donde el tiempo de acceso a memoria depende de la ubicación relativa del procesador y la memoria.

numactl --cpubind=0 Beneficio: Optimiza rendimiento en sistemas multiprocesador.

Ballooning

Técnica de virtualización que permite al hipervisor reclamar memoria de máquinas virtuales cuando es necesario.

VMware Tools + ballooning Beneficio: Gestión dinámica de memoria en entornos virtualizados.

Huge Pages

Uso de páginas de mayor tamaño (2MB, 1GB) para reducir la sobrecarga de la tabla de páginas en aplicaciones que manejan grandes cantidades de memoria.

echo 20 > /proc/sys/vm/nr_hugepages Beneficio: Mejora rendimiento en aplicaciones intensivas en memoria.

Memory Compression

Compresión de páginas en memoria antes de intercambiarlas al disco, reduciendo la necesidad de I/O.

zswap + lz4 Beneficio: Reduce latencia y mejora responsividad del sistema.