lunes, 28 de mayo de 2012

7.3 Modelo de working-set



Se puede intentar evitar la sobrepaginación explotando hasta el límite la propiedad
de localidad de los programas. Para un programa y en un instante de tiempo dado,
es posible definir con bastante precisión un subconjunto de sus páginas que va a
recibir la práctica totalidad de las referencias que genera el programa (working-set o
conjunto de trabajo del programa, WS). Esto nos garantiza que dicho programa va a
provocar muy pocos fallos de página. Si mantenemos  en memoria únicamente
conjuntos de trabajo completos, aseguraremos tasas de fallo de página bajas.
Implícitamente, la utilización de conjuntos de trabajo establece una nueva política de
asignación que limita el grado de multiprogramación del sistema,  N, ya que debe
cumplirse:
tamaño WS M
N
i
∑ i ≤
=1
( )
Para definir conjuntos de trabajo (sobre la base de la propiedad de localidad
temporal) es necesario llevar una traza de las últimas referencias de cada programa.
Dicha traza puede verse como una ventana de tamaño  ∆ sobre la secuencia de
referencias del programa, desde la referencia actual hacia atrás. El conjunto de
páginas referenciadas en ∆ es el WS del programa.
La elección de un ∆ adecuado es muy importante. Una ventana demasiado pequeña
no asumiría bien la localidad del programa. Una ventana demasiado grande
abarcaría localidades de instantes de tiempo anteriores. Se ha mostrado
experimentalmente que un valor razonable de ∆ es del orden de 10.000 referencias.
La implementación de la ventana del WS sobre la base de una cuenta de referencias
es costosa. Una aproximación razonable es utilizar el concepto de envejecimiento con
la implementación que se vio en la sección dedicada a los algoritmos de reemplazo.
En el caso más simple puede usarse únicamente el bit R y un ∆ de un tick de reloj.
En el modelo de conjuntos de trabajo la asignación  de marcos de página es local.
Usualmente se definen tamaños máximos de WS.
Si para la carga del conjunto de trabajo de un programa se usa paginación por
demanda, existirá un periodo transitorio hasta que  se cargue el WS del proceso
durante el cual el número de fallos de página puede ser muy elevado, lo que
conduciría a sobrepaginación. Esto se evita cargando todo el conjunto de trabajo
antes de planificar el proceso  (prepaginación). De esta forma, el transitorio sólo se
produce cuando se crea el proceso, cuando todavía no tiene establecido su WS.

Nótese que la gestión de la memoria mediante conjuntos de trabajo es una forma de
combinar memoria virtual y swapping.

No hay comentarios:

Publicar un comentario