Gestión de Memoria Sistemas Operativos Distribuidos
Unidad V - Ciclo 09/2 UVM – Campus Hispano Prof. L. Manuel Cruz G.
GESTION DE MEMORIA Reparto de memoria Los programas suelen acaparar toda la que pueden. Hace falta gestionarla:
– Ver qué partes están libres y cuales ocupadas. – Asignar y revocar memoria. – Paginar/Swapping: llevar cosas sin usar a disco y traer cosas a memoria.
Swapping Cuando falta memoria: • • •
Se usa el disco. Hay intercambio de procesos entre memoria y disco. Los PCB se mantienen.
Pero. . . • •
Prácticamente no se usa => la memoria es barata. Se suele “paginar” (swapping con “trozos”, no con procesos).
Implicaciones • • •
Un nuevo estado “swapped-out” para los procesos. Otro scheduler (“swapper”) para decidir quién está en memoria. Una sección de disco: área de swap.
En la prehistoria • •
Memoria cara: se reparte entre todos los procesos. Muchos procesos pasan a disco “enteros”
Hoy • •
Memoria barata: gestión más simple. Se hace swapping.
Monoprogramación • • •
Un proceso usa toda la memoria. Cada proceso lleva pegado el SO. Sólo un proceso a la vez. _
2
•
El procesador esta parado mientras se hace E/S.
Multiprogramación •
Se ejecutan otros procesos mientras hacemos E/S. => varios procesos en memoria. Imprescindible para Time sharing. Aprovecha más la CPU. )
• •
Modelización Se puede estudiar, pero. . .
– El modelo no representa la situación del sistema. – Depende de la carga real que pongamos en el sistema. – Mejor medir empíricamente las propiedades que interesen. Intuitivamente: Más memoria => más procesos => mayor uso de CPU. )
)
Particiones fijas • •
Dividimos en trozos la memoria en arranque. Asignamos los trozos a procesos.
Alternativas • •
Varias colas: desaprovecho memoria. Una cola: o FIFO: puedo desaprovechar memoria. o otra: puedo penalizar a determinados procesos.
Carga y protección El Compilador y el SO han de cooperar. • •
Hay que saber dónde están las direcciones y reajustarlas. Protección: o Bits extra de “contexto” en la memoria. o Segmentos: base +límite. +
3
Fragmentación Interna dentro de los fragmentos. Externa fragmentos inútiles. Podemos usar compactación.
Memoria Virtual ¿Qué es esto? • • • •
Procesos más grandes que la memoria disponible Más procesos que los que caben en memoria. Automatización de overlays. Utilizamos disco como una memoria muy lenta. _
Paginación La forma actual de implementar memoria virtual. Conceptos • • • • •
Espacio virtual de direcciones. Memoria virtual=>memoria física Páginas => marcos de página Tabla de páginas Paginación
Intercambiamos páginas, no procesos.
Algoritmos de reemplazamiento Óptimo NRU FIFO 2da oportunidad Clock LRU NFU Aging
La que tarde más en usarse. Utilizando los bits R y M. Ordenadas según llegada FIFO con reciclado. Implementación eficiente de la 2da oportunidad. Menos recientemente usada: matrices. . . No usada recientemente. (Sumar R a contadores) Envejecimiento. (Sumas y desplazamientos con R)
Detalles prácticos
4
Una política simple y eficaz. Paging-ahead. -
Page clustering.
Más importante reducir el número de fallos que el tiempo en procesarlos. Aunque si los hay, a lo mejor falta memoria. . . _
Segmentación •
Un proceso tiene segmentos.
•
Dirección: desplazamiento: protección
•
Una tabla o registros para los descriptores.
•
Se puede combinar con la paginación (MULTICS, Intel)
Visión del programador Espacios de direcciones M. Virtual. > M. física Protección Código = datos Crecimiento Compartición Objetivo Fragmentación
PAGINACIÓN No 1 Si Si No Si Espacio lineal de direcciones Interna
SEGMENTACIÓN Si varios Si Si Si Si Visión del usuario, protección Externa
Detalle práctico Puede usarse la segmentación para compartir páginas => reducir fragmentación interna. )
No se usa ¿Por qué?
5