Técnicas de gestión de memoria
El sistema operativo necesita administrar eficientemente la memoria RAM para que varios procesos puedan ejecutarse sin interferir. 👉 Para ello, se utilizan diferentes técnicas de gestión.
1. Paginación #
- La memoria se divide en bloques del mismo tamaño llamados páginas.
- El disco también se divide en bloques del mismo tamaño llamados marcos.
- Un proceso se carga en memoria como un conjunto de páginas que pueden estar en cualquier marco (no necesariamente contiguos).
✅ Ventajas: evita la fragmentación externa y permite aprovechar mejor la memoria. ❌ Desventaja: puede causar fragmentación interna (espacio desperdiciado dentro de las páginas).
👉 Ejemplo: si una página es de 4 KB y el proceso necesita 10 KB → usará 3 páginas (12 KB), sobrando 2 KB.
2. Segmentación #
-
La memoria se divide en segmentos de distintos tamaños, según la estructura lógica del programa:
- Segmento de código.
- Segmento de datos.
- Segmento de pila (stack).
✅ Ventajas: se ajusta mejor a la organización real de los programas. ❌ Desventaja: puede generar fragmentación externa (huecos libres pequeños entre segmentos).
👉 Ejemplo: un programa ocupa 2 KB de código, 5 KB de datos y 3 KB de pila → se crean tres segmentos distintos en memoria.
3. Swapping #
- Cuando no hay suficiente RAM, el SO saca procesos completos de la memoria y los guarda temporalmente en disco.
- Cuando el proceso necesita ejecutarse de nuevo, se vuelve a cargar a la RAM.
✅ Ventaja: permite ejecutar más procesos de los que cabrían en RAM. ❌ Desventaja: es lento, porque el disco es mucho más despacio que la memoria.
👉 Ejemplo: si tu PC tiene 4 GB de RAM y abres muchas apps, el SO mueve procesos inactivos al disco (archivo de intercambio).
4. Comparación rápida #
| Técnica | Cómo funciona | Ventajas | Desventajas |
|---|---|---|---|
| Paginación | Memoria en páginas fijas | Simple, evita fragmentación externa | Fragmentación interna |
| Segmentación | Memoria en bloques lógicos | Se ajusta a programas reales | Fragmentación externa |
| Swapping | Procesos pasan de RAM ↔ Disco | Permite más procesos | Muy lento |
Resumen del tema
Conceptos clave #
- Paginación: división de la memoria física en marcos (frames) y lógica en páginas de tamaño fijo (típicamente 4 KB); elimina la fragmentación externa, pero puede generar fragmentación interna en la última página.
- Segmentación: división de la memoria en bloques lógicos de longitud variable (código, datos, stack); refleja la estructura modular del programa, pero genera fragmentación externa al dejar huecos no contiguos.
- Mecanismo de Swapping: transferencia de la imagen completa de procesos inactivos desde la RAM hacia la partición/archivo de intercambio en disco secundario para liberar memoria física.
- Tablas de Traducción: tablas de páginas gestionadas por hardware a través de la MMU con apoyo de la TLB (Translation Lookaside Buffer).
Qué debes recordar #
La paginación divide la memoria en bloques de tamaño fijo eliminando la fragmentación externa, mientras que la segmentación utiliza bloques lógicos de tamaño variable.