La memoria es un recurso que el Sistemas Operativos debe administrar. La jerarquía de memoria va de registros y caché (rápidos, pequeños, caros) a memoria principal y disco (lentos, grandes, baratos).
Los primeros sistemas exponían la memoria física directamente: un programa podía sobrescribir al SO y era difícil ejecutar varios a la vez. Se usaron registros base y límite para dar a cada proceso su propio espacio de direcciones — la abstracción de memoria que equivale al proceso para la CPU.
Llevar procesos completos a disco y traerlos de vuelta. Genera huecos en memoria (fragmentación externa), que pueden compactarse. El espacio libre se administra con mapas de bits o listas ligadas usando algoritmos como first fit, next fit, best fit, worst fit y quick fit.
Idea (Fotheringham, 1961): cada programa tiene su propio espacio de direcciones, dividido en páginas, que no necesitan estar todas en memoria física. Cuando se accede a una página ausente ocurre un fallo de página y el SO la trae de disco.
| Campo | Uso |
|---|---|
| Número de marco | Dónde está la página en memoria física |
| Bit presente/ausente | ¿Está en memoria? |
| Protección | Lectura/escritura/ejecución |
| Bit modificado (dirty) | Si se escribió, debe guardarse en disco antes de desalojarla |
| Bit referenciado | Si se accedió recientemente |
| Caché deshabilitada | Para páginas mapeadas a dispositivos |
Cuando hay un fallo de página y no hay marcos libres, hay que desalojar una página:
| Algoritmo | Idea | Comentario |
|---|---|---|
| Óptimo (Belady) | Desalojar la página que se usará más tarde | No implementable; sirve de referencia |
| NRU | Clases según bits R y M; desalojar de la clase más baja | Simple, aceptable |
| FIFO | Desalojar la página más antigua | Puede quitar páginas muy usadas; sufre la anomalía de Belady |
| Segunda oportunidad | FIFO, pero si R = 1 se limpia y se mueve al final | Mejora a FIFO |
| Reloj | Segunda oportunidad con una lista circular | Muy usado en la práctica |
| LRU | Desalojar la menos usada recientemente | Excelente pero costoso de implementar exactamente |
| NFU / Envejecimiento | Aproxima LRU con contadores desplazados | Buena aproximación eficiente |
| Conjunto de trabajo | Desalojar páginas fuera del conjunto de trabajo | Costoso |
| WSClock | Conjunto de trabajo + reloj | Buena opción en la práctica |
fork sea barato (ver Sistemas Operativos/Llamadas al sistema).Varios espacios de direcciones independientes (segmentos) por proceso, de tamaño variable: código, datos, pila. Facilita compartir y proteger. MULTICS y el Intel x86 (modo protegido) combinaban segmentación con paginación.