Gestión de Memoria en Sistemas Operativos

Conceptos fundamentales sobre administración de memoria física y virtual

Introducción a la Gestión de Memoria

¿Qué es la gestión de memoria?

La gestión de memoria es el proceso mediante el cual el sistema operativo controla y coordina el uso de la memoria principal (RAM) entre los procesos en ejecución.

Objetivos principales:

  • Asignación y liberación: Gestionar qué proceso tiene acceso a qué parte de la memoria
  • Protección: Evitar que un proceso interfiera con la memoria de otro
  • Optimización: Minimizar fragmentación y maximizar rendimiento

Jerarquía de Memoria

  1. Registros de CPU: Más rápidos pero de capacidad limitada
  2. Caché: Memoria pequeña y rápida cerca del procesador
  3. Memoria principal (RAM): Almacenamiento temporal de programas en ejecución
  4. Almacenamiento secundario (HDD/SSD): Persistente pero más lento
  5. Almacenamiento terciario (cintas, nube): Para backups y archivos poco accedidos

Ejemplo: Cuando abres un programa, se carga de disco (secundario) a RAM (principal) y partes usadas frecuentemente se copian a caché.

Métodos de Asignación de Memoria

Memoria Contigua

  • Definición: Cada proceso recibe un bloque continuo de memoria
  • Ventajas: Simple y rápida implementación
  • Desventajas: Fragmentación (interna y externa)

Memoria No Contigua

  • Definición: Proceso puede estar en bloques no consecutivos
  • Ventajas: Mejor aprovechamiento del espacio
  • Desventajas: Mayor complejidad de gestión

Técnicas Específicas

1. Particionamiento Fijo

  • Memoria dividida en particiones de tamaño fijo
  • Problema: Fragmentación interna si el proceso no usa toda la partición

2. Particionamiento Dinámico

  • Particiones creadas según necesidades del proceso
  • Problema: Fragmentación externa con el tiempo

3. Paginación

  • Memoria dividida en páginas de tamaño fijo
  • Permite asignación no contigua eficiente
  • Usa tablas de páginas para mapeo lógico-físico

4. Segmentación

  • Divide memoria en segmentos lógicos (código, datos, pila)
  • Ventaja: Coincide con la visión del programador

Problemas de Gestión de Memoria

Fragmentación

Fragmentación Interna

Espacio no utilizado dentro de una partición asignada

Ejemplo: Asignar 1MB a un proceso que solo usa 700KB

Fragmentación Externa

Espacio libre dividido en bloques pequeños no contiguos

Ejemplo: 10MB libres totales, pero en bloques de 1MB dispersos

Contención de Memoria

Cuando múltiples procesos compiten por recursos limitados

Solución: Algoritmos de planificación y swapping

Thrashing

Cuando el sistema pasa más tiempo intercambiando páginas que ejecutando procesos

Causa: Sobrecarga de memoria virtual

Memoria Virtual

Concepto de Memoria Virtual

Técnica que permite ejecutar programas más grandes que la memoria física disponible, usando almacenamiento secundario como extensión.

Componentes clave:

  • Espacio de direcciones virtuales: Rango de direcciones que el proceso puede usar
  • Espacio de direcciones físicas: Direcciones reales en RAM
  • Tablas de páginas: Mapean direcciones virtuales a físicas

Ventajas de la Memoria Virtual

  • Permite ejecutar programas más grandes que la RAM física
  • Facilita la multiprogramación (múltiples procesos en memoria)
  • Simplifica la programación (cada proceso ve su propio espacio de direcciones)
  • Permite compartir memoria entre procesos

Desventajas

  • Overhead por gestión de tablas de páginas
  • Riesgo de thrashing si se usa excesivamente
  • Acceso a disco más lento que a RAM

Algoritmos de Reemplazo de Páginas

Algoritmo Descripción Ventajas Desventajas
FIFO (First In, First Out) Reemplaza la página más antigua Simple de implementar Puede eliminar páginas usadas frecuentemente
LRU (Least Recently Used) Reemplaza la página menos usada recientemente Buen rendimiento en general Requiere hardware especializado para implementación eficiente
Óptimo Reemplaza la página que no se usará por más tiempo Mejor rendimiento teórico Imposible de implementar (requiere conocimiento futuro)

Técnicas Avanzadas

Paginación bajo Demanda

Las páginas se cargan a memoria solo cuando son referenciadas

Ventaja: Reduce la cantidad de memoria usada

Ejemplo: Un programa de 1GB solo carga las páginas que necesita en un momento dado

Swapping

Intercambia procesos completos entre RAM y disco cuando no hay suficiente memoria

Uso típico: En sistemas con mucha multiprogramación

Memoria Compartida

Múltiples procesos acceden a la misma región de memoria

Ventaja: Comunicación interprocesos eficiente

Ejemplo: Bibliotecas compartidas en sistemas Unix

Glosario

Términos Básicos

  • RAM: Memoria principal de acceso aleatorio
  • Fragmentación: Espacio de memoria no utilizado eficientemente
  • Page Fault: Cuando un proceso referencia una página no en RAM

Técnicas

  • Paginación: División en bloques de tamaño fijo
  • Segmentación: División en bloques lógicos variables
  • MMU (Memory Management Unit): Hardware que traduce direcciones virtuales a físicas

Problemas

  • Thrashing: Degradación por exceso de paginación
  • Belady's Anomaly: Más frames pueden causar más page faults
  • Working Set: Páginas que un proceso usa activamente