• No se han encontrado resultados

Un hecho notable en los sistemas que manejan paginación es que cuando el proceso comienza a ejecutarse ocurren un gran número de fallos de página, porque es cuando está referenciando muchas direcciones nuevas por vez primera, después el sistema se estabiliza, conforme el número de marcos asignados se acerca al tamaño del conjunto de trabajo.

Observación: de acuerdo a cada arquitectura, cada proceso requerirá un número mínimo de páginas (frames) disponibles. Si no el programa no puede ejecutarse eficientemente. Por lo que es importante asignar correctamente el número de frames para así obtener una organización más eficiente.

⇒ El Número de frames mínimo y necesario para la ejecución de un trabajo tiene las siguientes

restricciones:

• No podemos asignar más del total de frames libres (excepto con páginas compartidas).

• Existe un número de frames mínimo que puede asignarse.

• Si se reduce el número de frames asignados a cada proceso, aumenta los page fault, haciendo más

lenta la ejecución de los procesos.

⇒ El número mínimo a asignarse está definido por:

• La arquitectura del conjunto de instrucciones. Se debe contar con frames suficientes para todas las

páginas a las cuales pueda hacer referencia una instrucción.

• La arquitectura del computador: referencias indirectas, niveles de indirección, etc.

⇒ El número mínimo de frames por proceso está definido por la arquitectura, mientras que el número

máximo está definido por la cantidad de memoria física disponible. Para la asignación se utilizan dos técnicas principales:

1. Asignación pareja o equitativa: si hay m frames y n procesos. Se le da a cada proceso m/n frames.

2. Asignación proporcional: se asignan frames de acuerdo al tamaño de cada proceso.

Si cada proceso mide ti bytes y los frames son de tf bytes, el número de frames asignado al proceso será:

fi = ti / tf

De esta manera se reconoce que los diversos procesos necesitarán cantidades distintas de memoria.

En ambas técnicas las asignaciones pueden variar de acuerdo con el nivel de multiprogramación. Al aumentar el nivel de multiprogramación, cada proceso perderá algunos frames para proporcionar al nuevo proceso la memoria necesaria. Si disminuye el nivel de multiprogramación, los asignados al proceso que sale puede distribuirse entre los restantes.

Se trata de igual forma a un proceso de alta o baja prioridad. Pero se quiere dar más memoria al proceso de alta prioridad para acelerar su ejecución. Para esto, se puede:

• Usar un esquema de asignación proporcional donde la tasa de frames no depende de tamaños relativos de los procesos, sino de sus prioridades o de una combinación de ambas.

• Permitir que un proceso de alta prioridad seleccione para su reemplazo los frames de un proceso de

baja prioridad. Un proceso puede seleccionar un reemplazo entre sus propios frames o entre los de cualquier proceso de menor prioridad.

Reemplazo local Reemplazo global

Asignación fija El número de frames asignados al

proceso es fijo.

La página a ser reemplazada es elegida entre los frames asignados para ese proceso.

No es posible.

Asignación variable El número de frames asignados a

un proceso puede ser cambiado de tanto en tanto, para mantener el set de trabajo del proceso.

La página a ser reemplazada es elegida entre los frames asignados a ese proceso.

La página a ser reemplazada es elegida entre los frames disponibles en Memoria Central; esto causa que varíe el tamaño del set residente de procesos.

Tabla 5.3 Resumen de las políticas de asignación y reemplazos

e) Prepaginación

Consiste en traer páginas por adelantado para evitar un gran número de page faults.

Para decidir si conviene la prepaginación se debe comparar el costo de traer inicialmente n páginas versus el costo de producir page faults por cada página que no se trae (y considerar que exista un lugar donde ponerlas).

Suponiendo que las páginas están prepaginadas y una fracción x de estas n páginas realmente se

usan (0 ≥ x ≥ 1). La pregunta es si el costo de las xs fallas de páginas que se evitan es mayor o menor

al costo de la prepaginación de (1 - x) s páginas innecesarias. Si x está cerca del cero, no conviene la prepaginación.

f) Hiperpaginación o Thrashing

Grado de

multiprogramación

%

uso

CPU

0

100

Thrashing

Fig. 5.37

Se dice que un proceso entra en thrashing (azotado, apaleamiento o sacudones) cuando la cantidad de page faults es tan elevada que gasta más tiempo paginando que ejecutando.

Una posible causa de thrashing:

Supongamos que se utiliza sustitución global de páginas y que cuando el porcentaje de uso de CPU cae (aumenta la cola de espera sobre el dispositivo del paginador), el S.O. aumenta el grado de multiprogramación (porque la cola de dispositivo se vacía). ¿Que sucede?

• la tasa de page faults aumenta considerablemente;

• se incrementa el tiempo de acceso efectivo a memoria;

• la utilización del procesador decae;

• no se realiza ningún trabajo ya que los procesos se dedican a paginar.

Soluciones:

1. Reducir el nivel de multiprogramación mediante un algoritmo de reemplazo local (o por prioridades). De esta manera, si un proceso entra en thrashing, no puede robar frames de otro

proceso y provocar que éste también caiga en thrashing. Sin embargo, si los procesos están en thrashing, la mayor parte del tiempo puede encontrarse en la cola del dispositivo de paginación y el tiempo de acceso efectivo aumentará para todos los procesos.

2. Deben tratar de proveer al sistema la cantidad de frames suficientes para que no ocurra thrashing. Esto se hace sobre la base de la tasa de thrashing aceptable y las decisiones que toma el S.O.

g) Modelo de Conjuntos de trabajo (Working Set - WS) y conjuntos residentes

Documento similar