Sie sind auf Seite 1von 10

7.

6 Hiperpaginacin [SILB94]
Si el nmero de marcos asignados a un proceso de baja prioridad
desciende por debajo del nmero mnimo requerido por la
arquitectura del computador, debemos suspender la ejecucin de ese
proceso. Luego debemos descargar sus pginas restantes, liberando
los marcos asignados. En general, cualquier proceso que no cuente
con marcos suficientes provocar fallos de pgina muy
frecuentemente. Si se reemplazan pginas que a su vez estn
activas, estaremos sustituyendo una pgina que casi de inmediato se
volver a necesitar. Por tanto, pronto vuelve a generarse otro fallo
de pgina, ocurriendo esto una y otra vez. A esta altsima actividad
de paginacin se le llama hiperpaginacin (thrashing). Un sistema
est en hiperpaginacin si emplea ms tiempo paginando que
ejecutando.

7.6.1 Causas de la Hiperpaginacin


La hiperpaginacin ocasiona severos problemas de rendimiento.
Considere la siguiente situacin, basada en el comportamiento real
de los primeros sistemas de paginacin.
El sistema operativo supervisa la utilizacin de la CPU. Si sta es
demasiado baja, aumentamos el nivel de multiprogramacin
introduciendo un nuevo proceso en el sistema. Se emplea una
algoritmo de reemplazo de pginas global, que reemplaza pginas
sin importar a qu procesos pertenezcan. Suponga ahora que un
proceso entra en una nueva fase de su ejecucin y necesita ms
marcos. Comienza a generar fallos de pgina y a tomar pginas de
otros procesos. Sin embargo, estos procesos necesitan esas pginas,
por lo que tambin fallan, tomando pginas de otros procesos.
Todos estos procesos generando fallos de pgina deben usar el
dispositivo de paginacin para intercambiar las pginas. A medida
que se colocan en la cola del dispositivo de paginacin, la
cola procesos listos se vaca. Mientras los procesos estn
bloqueados en espera del dispositivo de paginacin, la utilizacin de
la CPU decrece.
El planificador de la CPU ve disminuir la utilizacin de sta y, por
tanto, incrementa el nivel de multiprogramacin. El nuevo proceso

trata de comenzar tomando pginas de los procesos en ejecucin, lo


que ocasiona ms fallos de pgina y una cola ms larga para el
dispositivo de paginacin. Y se vuelven a repetir los pasos
descritos. Ha comenzado la hiperpaginacin y se desploma la
productividad del sistema. La tasa de fallos de pgina aumenta
tremendamente y, como resultado, se incrementa el tiempo efectivo
de acceso a memoria. No se efecta ningn trabajo porque el
sistema operativo est continuamente paginando.

Los efectos de la hiperpaginacin se pueden limitar utilizando un


algoritmo de reemplazo local (o por prioridades). Con el reemplazo
local, si un proceso comienza a hiperpaginar, no puede robar
marcos de otro proceso y provocar que este tambin entre en
hiperpaginacin. Sin embargo, si los procesos estn en
hiperpaginacin, la mayor parte del tiempo pueden encontrarse en la
cola del dispositivo de paginacin. El tiempo promedio
de servicio de un fallo de pgina aumenta y, por tanto, el tiempo
efectivo de acceso aumenta incluso para un proceso que no est en
hiperpaginacin.
Para evitar la hiperpaginacin debemos ofrecer a un proceso todos
los marcos que necesita; pero, cmo sabemos cuntos necesitan?
Para saberlo se utilizan tcnicas como el modelo del conjunto de

trabajo, que se basa el concepto de localidad de la ejecucin de


procesos.

7.6.2 Localidad [DEIT93] [MILE94]


El concepto de localidad establece que un proceso, durante su
ejecucin, pasa de una localidad a otra. Una localidad es un
conjunto de pginas que se utilizan conjuntamente. Un programa
generalmente est compuesto por varias localidades distintas, las
cuales pueden superponerse.
Por ejemplo, al llamar a una subrutina se define una nueva
localidad. En sta se efectan referencias a memoria de las
instrucciones de la subrutina, sus variables locales y un subconjunto
de las variables globales. Al salir de la subrutina, el proceso
abandona esta localidad. As, vemos que las localidades estn
definidas por la estructura del programa y sus estructuras de datos.
Suponga que a un proceso le asignamos suficientes marcos para
albergar su localidad actual. Generar fallos de pgina hasta
completar su localidad pero, luego, no habr ms fallos hasta que
cambie de localidad. Si asignamos menos marcos que el tamao de
la localidad, el proceso entrar en hiperpaginacin, ya que no puede
mantener en memoria todas las pginas que est usando en ese
momento.

7.6.3 Modelo del Conjunto de Trabajo [DEIT93]


El modelo del conjunto de trabajo (Working Set Model) se basa en
el concepto de localidad. El modelo utiliza un parmetro, , para
definir la ventana del conjunto de trabajo activo. La idea es
examinar las referencias ms recientes a pginas. El conjunto de
pginas en las referencias constituye el conjunto de trabajo. Si
una pgina est en uso pertenecer al conjunto de trabajo, y si ya no
se usa se descartar tras unidades de tiempo despus de su ltima
referencia. De esta manera, el conjunto de trabajo es una
aproximacin a la localidad del programa.

Por ejemplo, dada la serie de referencias a memoria de la figura


10, si = 10 referencias de memoria, entonces el conjunto de
trabajo en el instante t1 es {1, 2, 5, 6, 7}. En el instante t2,, habr
cambiado a {3, 4}.

La exactitud del conjunto de trabajo depende de la seleccin de .


Si es demasiado pequeo, no abarcar todo el conjunto de trabajo;
si es demasiado grande, puede solapar varias localidades. En el caso
extremo, si es infinito, el conjunto de trabajo es todo el programa.
La propiedad ms importante de los conjuntos del trabajo es su
tamao. Si calculamos el tamao del conjunto de trabajo WSSi, para
cada proceso del sistema, podemos considerar D=
WSSi, donde
D es la demanda total de marcos. Cada proceso utiliza las pginas
de su conjunto de trabajo, por lo que i necesita WSSi marcos. Si la
demanda total es mayor que el nmero total de marcos disponibles
(D > m) se producir la hiperpaginacin, ya que algunos procesos
no tendrn marcos suficientes.
El uso del modelo del conjunto de trabajo resulta sencillo. El
sistema operativo supervisa el conjunto de trabajo de cada proceso y
le asigna marcos suficientes para proporcionarle el tamao del
conjunto activo. Si hay suficientes marcos iniciales, se puede iniciar
otro proceso. Si aumenta la suma de los tamaos de los conjuntos
activos, excediendo el nmero total de marcos disponibles, el
sistema operativo selecciona un proceso y lo suspende.
Sin embargo, tenemos el problema del seguimiento del conjunto de
trabajo. La ventana del conjunto de trabajo es cambiante; cada vez
que se hace referencia a la memoria, la nueva referencia aparece en
un extremo y del otro extremo desaparece la referencia ms antigua.

Una pgina se encuentra en un conjunto activo si existe una


referencia a ella en cualquier lugar de la ventana. Podemos
aproximarnos al modelo del conjunto de trabajo
mediante interrupciones a intervalos fijos de un cronmetro y un
bit de referencia.
Por ejemplo, suponga que es 10000 referencias y podemos
producir una interrupcin del cronmetro cada 5000 referencias.
Cuando recibimos una interrupcin del cronmetro, copiamos y
borramos los valores de los bits de referencia para cada pgina, de
manera que si ocurre un fallo de pgina podemos examinar el bit de
referencia actual y los dos bits en memoria para determinar si la
pgina ha sido utilizada en los ltimos 10000 a 15000 referencias.
Si se us, por lo menos uno de stos bits estar a uno; de no ser as,
todos estarn a cero. Se considerar que todas las pginas que
poseen por lo menos un bit a uno estn en el conjunto de trabajo.
Esta manera de actuar no es totalmente precisa, ya que no podemos
decir cundo ocurri una referencia dentro de un intervalo de 5000.
Es posible reducir la incertidumbre aumentando el nmero de bits
histricos y el nmero de interrupciones; sin embargo, el serviciode
esas interrupciones ser proporcionalmente ms costoso.

7.6.4 Frecuencia de Fallos de Pgina [DEIT93] [SILB94]


El modelo del conjunto de trabajo tiene bastante xito, y el
conocimiento del conjunto puede resultar til para
la prepaginacin, pero parece ser una manera bastante torpe de
controlar la hiperpaginacin. La estrategia de frecuencia de fallos de
pgina sigue un camino ms directo.

Queremos evitar la hiperpaginacin, o lo que es lo mismo, la


elevada tasa de fallos de pgina. Cuando es demasiado alta sabemos
que un proceso necesita ms marcos, y si es demasiado baja, puede
ser que el proceso tenga demasiados marcos. Podemos establecer
lmites superior e inferior para la tasa deseada de fallos de pgina.
Si la tasa de fallos de pgina excede el lmite superior, asignamos
otro marco a ese proceso; si la tasa cae por debajo del lmite
inferior, quitamos un marco al proceso. As podemos medir y
controlar directamente la tasa de fallos de pgina para evitar la
hiperpaginacin.

Al igual que ocurre con la estrategia del conjunto de trabajo,


posiblemente tenga que suspender un proceso. Si aumenta mucho la
tasa de fallos y no hay marcos disponibles, debemos seleccionar un
proceso y suspenderlo. Los marcos liberados se distribuyen entre
los procesos con tasa elevada de fallos de pgina.

Otras Consideraciones
La seleccin de un algoritmo de reemplazo y una poltica de
asignacin son las principales decisiones que hay que tomar para un

sistema de paginacin. Existen otros factores que deben


considerarse.

Prepaginacin
Una propiedad evidente de un sistema de paginacin por demanda
pura es el gran nmero de fallos de pgina que ocurren al iniciar un
proceso. Esta situacin surge al tratar de introducir en memoria la
localidad inicial. Tambin, ocurrir cuando se reanuda un proceso
intercambiado. La prepaginacin es un intento de evitar este alto
nivel de paginacin inicial. La estrategia consiste en traer a
memoria al mismo tiempo todas las pginas que se necesitarn.

En un sistema que utiliza el modelo del conjunto de trabajo, por


ejemplo, con cada proceso debemos conservar una lista de las
pginas que forman en un instante el conjunto de trabajo. Por tanto,
cuando se un proceso se reanuda (fin de E/S o suficientes marcos
libres), automticamente se incorpora todo el conjunto de trabajo
antes de reanudar al proceso.
La prepaginacin puede ser una ventaja en algunos casos. La
cuestin es sencillamente si el costo de la prepaginacin es menor al
costo del servicio de los fallos de pgina correspondientes. Puede
ser que ya no se usen muchas de las pginas devueltas a memoria
por la prepaginacin. Suponga que las pginas estn prepaginadas y
una fraccin de estas s pginas realmente se usan (0 1). La
pregunta es si el costo de las s fallos de pgina que se evitan es
mayor o menor al costo de la prepaginacin de (1- )s pginas
innecesarias. Si es cercano a 0, pierde la prepaginacin; si es
cercano a 1, la prepaginacin gana.

Fijacin de Pginas para E/S


Cuando se utiliza la paginacin por demanda, en ocasiones tenemos
que permitir que algunas pginas se fijen en memoria. Debemos
evitar que se produzca la siguiente secuencia desucesos. Un proceso

emite una solicitud de E/S y se coloca en la cola para ese


dispositivo de E/S. Mientras tanto, se asigna la CPU a otros
procesos. Estos generan fallos de pgina y, usando un algoritmo
de reemplazo global, uno de ellos reemplaza la pgina que contiene
el buffer de memoria del proceso en espera. Ms tarde, cuando la
solicitud de E/S avanza hasta el inicio de la cola de dispositivo, se
efecta la E/S para la direccin especificada. Sin embargo, este
marco se est utilizando ahora para una pgina que pertenece a otro
proceso.
Hay dos soluciones a este problema. Una consiste en no ejecutar
nunca la E/S a memoria de usuario, sino copiar los datos entre
la memoria del sistema y la de usuario. La E/S slo se realiza entre
la memoria del sistema y el dispositivo de E/S. Esta copia adicional
puede generar un tiempo de procesamiento aadido inaceptable.
Otra solucin consiste en permitir que las pginas se fijen en
memoria. A cada marco se asocia un bit de fijacin; si se ha fijado
el marco, no se puede seleccionar para reemplazo. Cuando termina
la E/S, se desactiva la fijacin de las pginas.
Otra aplicacin del bit de fijacin se refiere al reemplazo normal de
pginas. Considere la siguiente secuencia de sucesos. Un proceso de
baja prioridad genera un fallo. Al seleccionar un marco para
reemplazarlo, el sistema de paginacin lee en memoria la pgina
requerida. El proceso se encuentra listo para continuar su ejecucin
cuando reciba la CPU. Pero mientras un proceso de alta prioridad
genera un fallo y el sistema de paginacin encuentra una pgina que
est en memoria pero que no ha sido ni modificada ni referenciada:
la pgina que acaba de incorporar el proceso de baja prioridad. Esta
pgina parece perfecta para el reemplazo; est limpia y no hay que
reescribirla.
Podramos impedir que un pgina recin incorporada sea
reemplazada para no desperdiciar el costo que ha supuesto el llevar
un pgina a memoria para luego no hacer uso de ella. Sin embargo,
el uso del bit de fijacin puede ser peligroso si se activa y nunca se
desactiva. Se ira poco a poco inutilizando el espacio de memoria.

Estructura de los Programas

La paginacin por demanda, est diseada para ser transparente


para el programa de usuario. En muchos casos, el usuario no se
percata de que la memoria est paginada. Sin embargo, en muchos
casos el rendimiento del sistema puede mejorar si se es consciente
de la paginacin subyacente.
Un ejemplo en el que se pone esto de manifiesto sera el siguiente.
Considere un programa en Pascal cuya funcin es poner a 0 cada
elemento de una matriz de 128 por 128 (suponga que las pginas
son de 128 palabras). El cdigo sera:
var A: array [1..128 of
array [1..128 of integer;
for j:= 1 to 128 do
for i:=1 to 128 do
A[i,j := 0;

Observe que la matriz est almacenada por filas. Es decir, la matriz


se almacena como A[1,1 , A[1,2 , ..., A[2,1 , A[2,2 , ....,
A[128,128 . Para pginas de 128 palabras, cada fila ocupa una
pgina. De esta manera, el cdigo anterior asigna ceros a una
palabra de cada pgina, luego otra palabra en cada pgina, etc. Si el
sistema operativo asigna 128 marcos al programa, entonces
ocasiona 128 x 128 = 16384 fallos de pgina. Si cambiamos el
cdigo a se asignan ceros a todas las palabras de una pgina antes
de comenzar con la siguiente, reduciendo a 128 el nmero de fallos
de pgina.
var A: array [1..128 of
array [1..128 of integer;
for i:= 1 to 128 do
for j:=1 to 128 do
A[i,j := 0;

Una cuidadosa seleccin de las estructuras de datos y de


programacin puede mejorar la localidad y, por tanto, disminuir la
tasa de fallos de pgina y el nmero de pginas para un programa.
El compilador y el cargador pueden tener un efecto considerable
sobre la paginacin. Al separar el cdigo y datos y generar cdigo
reentrante (no modificable) , las pginas de cdigo pueden ser slo
de lectura y, por tanto, nunca se modificarn. El cargador puede
evitar la colocacin de rutinas entre pginas, o agrupar las rutinas
que se llaman entre s en una pgina.

Das könnte Ihnen auch gefallen