Memory Management es la función del OS de asignar y liberar memoria a procesos de forma eficiente, protegiendo el aislamiento entre procesos y maximizando el uso de RAM limitada.
Direcciones
- Dirección lógica (virtual): generada por la CPU, espacio de direcciones del proceso.
- Dirección física: dirección real en RAM.
El MMU (Memory Management Unit) traduce virtual → physical usando page tables.
Paging
Memoria dividida en:
- Frames: bloques físicos de RAM (típicamente 4KB).
- Pages: bloques virtuales del proceso.
Page table: mapea cada página virtual a un frame físico.
Traducción de Direcciones
Virtual address → page number + offset
Page number → index en page table → frame number
Physical address = frame number × frame_size + offset
TLB (Translation Lookaside Buffer)
Cache de traducciones recientes dentro del MMU. Si la traducción está en TLB (TLB hit), es instantáneo. Si no (TLB miss), se consulta la page table en memoria.
Page Replacement
Cuando no hay frames libres, el OS debe elegir una página para reemplazar:
| Algoritmo | Estrategia | Ventaja |
|---|---|---|
| FIFO | Reemplaza la más antigua | Simple |
| LRU | Reemplaza la menos usada recientemente | Cerca de óptimo |
| Clock | Approximación a LRU | Eficiente |
| Optimal | Reemplaza la usada más lejos en el futuro | Teórico |
Thrashing
Ocurre cuando el working set de un proceso no cabe en memoria: el sistema pasa más tiempo swapping páginas que ejecutando código.
Solución: reducir grado de multiprogramación o usar working set model.
Aplicaciones
- Sistemas operativos — memory management, virtual memory
- Contenedores — cgroups, memory limits
- Enseñanza — base para virtual memory y paging
Trayectoria de Práctica
- Investiga traducción de direcciones: calcula dirección física desde virtual con page table.
- Investiga TLB: ¿por qué reduce el overhead de page table walks?
- Investiga LRU vs Clock: trade-offs.
- ¿Qué causa thrashing? ¿Cómo lo detecta el OS?
- Investiga memory-mapped files: ¿cómo mapean archivos a espacio virtual?