Ir al contenido

Conjunto residente, working set, limpieza y control de carga

🎯 Al terminar podrás

  1. Clasificar una política como fija o variable y local o global, y explicar por qué fija + global es imposible.
  2. Calcular el working set W(t, Δ) de una cadena para un Δ dado y su tamaño promedio.
  3. Describir cómo PFF y VSWS aproximan el working set, y cuál es el punto débil de PFF.
  4. Diagnosticar thrashing a partir de síntomas y proponer qué hacer (y qué no sirve).

Antes necesitas: Reemplazo de páginas · Localidad

  • Laboratorio sube la escalera: resuelto → completa → solo → variante
  • Debate elige una alternativa para el escenario y defiéndela
  • Detective escribe tu hipótesis del bug antes de abrir el diagnóstico

Con menos frames por proceso caben más procesos en RAM, así que hay más probabilidad de tener alguno listo. Pero si un proceso tiene muy pocos frames, la tasa de fallos se dispara. Pasado cierto punto, darle más frames casi no mejora nada, por la localidad.

tasa defallosmarcos asignados al proceso →≈ working setNpocos marcos:los fallos se disparanmás marcos ya casi no ayudaForma cualitativa: N = todas las páginas del proceso.

Cómo leerlo: a la izquierda, con muy pocos marcos, el proceso no alcanza a tener su zona de trabajo y falla todo el tiempo. Cuando los marcos cubren su working set, la curva se aplana: dar más ya casi no baja los fallos. Por eso conviene darle a cada proceso lo justo para su working set y usar el resto para otros.

AsignaciónIdeaProblema
Fijanúmero fijo de frames por proceso, decidido al crearlo (según el tipo de proceso o lo que pida)si es poco hay muchos fallos; si es mucho, caben pocos procesos
Variableel número de frames cambia durante la vida del procesohay que medir el comportamiento: overhead del SO
  • Local: la víctima sale del mismo proceso que causó el fallo.
  • Global: la víctima puede ser cualquier página no bloqueada de la memoria.
localglobalAA*AAAABBBBBBBBBBA tiene un falloAAAAAABA*BBBBBBBBA tiene un fallola víctima es de A: A sigue con 3, B con 5la víctima es de B: A pasa a 4, B baja a 4Recuadro rojo: la víctima. A* es la página nueva que pidió A.

Cómo leerlo: arriba, la RAM antes del fallo (3 marcos de A, 5 de B); abajo, después. Con reemplazo local, A se reemplaza a sí mismo y los tamaños no cambian. Con global, A le quita un marco a B: A crece y B se achica. Ejemplo propio.

Reemplazo localReemplazo global
Asignación fijael número de frames no cambia y la víctima sale de las páginas del propio procesoimposible: si se le quita una página a otro, el tamaño ya no sería fijo
Asignación variablese reevalúa cada cierto tiempo cuántos frames darle; la víctima sale de los propiosla más fácil y la más usada (por ejemplo, en muchos UNIX): el proceso que falla crece, otro pierde un frame

Variable + global es simple, pero no tiene forma de saber a quién le conviene quitarle un frame: puede quitárselo a un proceso que lo necesitaba. Se compensa con page buffering: la página quitada queda un tiempo en una lista y se recupera barato.

Variable + local necesita una estrategia para decidir cuántos frames dar. Ahí entra el working set.

Definición (Denning): W(t,Δ)W(t, \Delta) es el conjunto de páginas referenciadas en las últimas Δ referencias (unidades de tiempo virtual), mirando hacia atrás desde el instante t.

Propiedades:

  • W(t,Δ+1)⊇W(t,Δ)W(t, \Delta + 1) \supseteq W(t, \Delta): una ventana más grande nunca tiene menos páginas.
  • 1≤∣W(t,Δ)∣≤min⁡(Δ,N)1 \le |W(t,\Delta)| \le \min(\Delta, N), donde N es el número de páginas del proceso.
  • Su tamaño sube durante las transiciones entre fases de localidad (las páginas viejas siguen en la ventana mientras llegan las nuevas) y baja cuando el proceso se estabiliza.

Ejemplo de Stallings (fig. 8.19). Cadena 24 15 18 23 24 17 18 24 18 17 17 15 24 17 24 18. Working set después de cada referencia, para cuatro tamaños de ventana (calculado):

refΔ = 2Δ = 3Δ = 4Δ = 5
2424242424
1524 1524 1524 1524 15
1815 1824 15 1824 15 1824 15 18
2318 2315 18 2324 15 18 2324 15 18 23
2423 2418 23 2415 18 23 2424 15 18 23
1724 1723 24 1718 23 24 1715 18 23 24 17
1817 1824 17 1823 24 17 1818 23 24 17
2418 2417 18 2424 17 1823 24 17 18
1824 1818 2417 18 2424 17 18
1718 1724 18 1718 24 1717 18 24
171718 1724 18 1718 24 17
1517 1517 1518 17 1524 18 17 15
2415 2417 15 2417 15 2418 17 15 24
1724 1715 24 1717 15 2417 15 24
2417 2424 1715 24 1717 15 24
1824 1817 24 1824 17 1815 24 17 18

Tamaño promedio: 1.88 · 2.56 · 3.06 · 3.38. Con Δ más grande, el working set crece, pero cada vez menos.

1.88Δ = 22.56Δ = 33.06Δ = 43.38Δ = 5+0.68+0.50+0.32Cadena de Stallings fig. 8.19 (valores de la tabla de arriba): crece, pero cada vez menos.

Cómo leerlo: cada barra es el tamaño promedio del working set para una ventana Δ. Los números verdes son lo que se gana al agrandar Δ en 1: cada vez menos. Es la misma forma de la curva «marcos vs fallos»: pasado el working set, más memoria aporta poco.

Peldaño 2 · Complétalofaltan pasos clave: llénalos tú

Complétalo: working set con Δ = 3 para la cadena 1 2 1 3 2 4 4 1

t12345678
ref12132441
W(t, 3)11 21 21 2 3????

Recuerda: se miran las últimas 3 referencias (incluida la actual) y se quitan los repetidos.

Comparar
t5678
últimas 31 3 23 2 42 4 44 4 1
W(t, 3)1 2 32 3 42 41 4

Tamaños: 1, 2, 2, 3, 3, 3, 2, 2, así que el promedio es 18 / 8 = 2.25. Fíjate en t = 7: la referencia repetida (4 4) achica el working set.

t = 11t = 22t = 31t = 43t = 52t = 64t = 74t = 81ventana Δ = 3 en t = 7: últimas refs 2 4 4W(7, 3) = {2, 4}En t = 8 la ventana se corre una posición: 4 4 1, así que W(8, 3) = {1, 4}.

Cómo leerlo: la ventana es un recuadro de Δ casillas que termina en la referencia actual. W son las páginas distintas dentro del recuadro. En t = 7 hay tres referencias pero solo dos páginas distintas; por eso W tiene tamaño 2.

Peldaño 3 · Solosin ayuda; luego compara

Solo: la misma cadena con Δ = 2

Calcula W(t, 2) para cada t y su tamaño promedio. Después verifica la propiedad W(t, 2) ⊆ W(t, 3) en todos los instantes.

Comparar

W(t, 2): 1 · 12 · 12 · 13 · 23 · 24 · 4 · 14. Tamaños: 1, 2, 2, 2, 2, 2, 1, 2, así que el promedio es 14 / 8 = 1.75. En cada t, el conjunto está contenido en el de Δ = 3: una ventana más chica nunca tiene más páginas.

La estrategia del working set:

  1. Monitorea el working set de cada proceso.
  2. Quítale periódicamente las páginas que salieron del working set (reemplazo tipo LRU).
  3. Un proceso solo se ejecuta si su working set cabe completo en RAM.

Problemas prácticos: el pasado no siempre predice el futuro, porque cambia la localidad; medir el working set exacto es caro (habría que registrar cada referencia), y el Δ óptimo es desconocido y varía. Por eso se usan aproximaciones.

  • PFF (Page Fault Frequency): cada página tiene un bit de uso. En cada fallo, el SO mira el tiempo virtual desde el fallo anterior:

    • si es menor que un umbral F (fallos muy seguidos), agrega la página al conjunto residente: el proceso crece;
    • si no, descarta todas las páginas con bit de uso 0 y pone los demás bits en 0: el proceso se encoge.

    El punto débil: durante una transición de localidad, las páginas viejas no alcanzan a salir y el conjunto residente se infla.

  • VSWS (Variable-Interval Sampled Working Set): evalúa el working set en instantes de muestreo con tres parámetros:

    • M: intervalo mínimo;
    • L: intervalo máximo;
    • Q: número de fallos permitidos entre muestras.

    El intervalo termina al llegar a L, o al llegar a Q fallos si ya pasó M. Así reacciona rápido en las transiciones sin muestrear de más en las fases estables.

¿Cuándo se escribe al disco una página modificada?

PolíticaCuándoProblema
Por demandasolo cuando la página es elegida como víctimael proceso que falló espera dos E/S: escribir la víctima y leer la nueva
Precleaningantes de que haga falta, en lotesse escriben páginas que quizá se vuelvan a modificar antes de ser expulsadas: E/S desperdiciada

Mejor solución: page buffering. Las páginas reemplazadas van a dos listas, modificadas y no modificadas. Las modificadas se escriben en lotes y pasan a la lista de no modificadas. De ahí se pueden recuperar si se vuelven a referenciar, o se reutilizan sus frames si se pierden.

víctima elegidaP = 0, sigue en RAM¿M = 1?sílista de modificadasnolista de libresdiscoescritura en loteya limpiala vuelven a pedirse recupera sin ir al discofallo baratísimosi no la piden:su frame se reutiliza

Es el mismo esquema de page buffering, visto desde la limpieza: las páginas sucias se escriben en lote (arriba a la derecha) y recién después se reutiliza su frame.

El nivel de multiprogramación es el número de procesos residentes en RAM.

  • Muy pocos: a menudo todos están bloqueados, así que la CPU queda ociosa.
  • Demasiados: cada uno tiene un conjunto residente insuficiente y la tasa de fallos se dispara. Es el thrashing, que Stallings muestra en la fig. 8.21:
    • el uso del procesador sube al agregar procesos,
    • llega a un máximo,
    • y cae en picada: la CPU pasa el tiempo esperando al disco de paginación.
uso deCPUnivel de multiprogramación (procesos en RAM) →máximopocos: a menudotodos bloqueadosthrashingla CPU esperaal discoForma cualitativa (Stallings): sin datos medidos.

Cómo leerlo: al agregar procesos, la CPU se ocupa más porque casi siempre hay alguno listo. Pasado el máximo, cada proceso tiene muy pocos marcos y vive fallando (zona roja): la CPU se queda esperando al disco. La solución no es agregar procesos sino sacar algunos, para volver a la izquierda del máximo.

Criterios para elegir el nivel:

  • Working set: solo se ejecuta un proceso si su working set está residente. Eso regula la carga de forma implícita.
  • Criterio L = S (Denning): ajustar la carga para que el tiempo medio entre fallos (L) sea igual al tiempo medio de atender un fallo (S). Así se maximiza el uso del procesador.
  • Criterio del 50 %: mantener la utilización del dispositivo de paginación cerca del 50 %.
  • Adaptar Clock: si el puntero da vueltas muy rápido, hay escasez de memoria; si gira lento, sobra memoria y caben más procesos.

Si hay que bajar la carga, ¿qué proceso se suspende (se pasa a disco)? Stallings da seis candidatos:

CandidatoRazón
el de menor prioridadpolítica de planificación
el que más fallos está causandoprobablemente no tiene su working set residente; suspenderlo libera un dispositivo saturado
el último activadoes el que menos probablemente tiene su working set completo
el de conjunto residente más pequeñocuesta poco volverlo a cargar después, aunque perjudica a los procesos de localidad pequeña
el más grandelibera más frames de una vez
el que tiene más tiempo de ejecución restanteaproxima la política de menor tiempo restante

Autoevaluación

0/7 correctas · 0 respondidas
1. ¿Qué combinación es imposible?
2. W(t, Δ) es…
3. Si aumenta Δ, el working set…
4. En PFF, si el tiempo desde el último fallo es menor que F…
5. Limpieza por demanda: el proceso que falla espera…
6. Criterio L = S:
7. Con thrashing, agregar más procesos…

📈 ¿Qué tan bien lo dominas?

Elige pensando en lo que hiciste, no en lo que leíste. Para marcar 3 tienes que haber resuelto un ejercicio nuevo sin pistas y haberlo justificado. Si solo lo leíste y sientes que «ya entendí», todavía es un 1.

Fuente ·Stallings 9e §8.2 (Resident Set Management, Cleaning Policy, Load Control; figs. 8.19–8.21) · Working set de la fig. 8.19 calculado con un script propio