Planificación de la CPU:

Anuncio
Planificación de la CPU:
-La cola de procesos listos puede implementarse como cola FIFO, cola por prioridad, árbol o simplemente
como lista enlazada no ordenada.
-Los registros de las colas generalmente son los PCB de los procesos.
14.1.1 Planificación expropiativa:
-Las decisiones de planificacion de la CPU se toman en las cuatro situaciones siguientes:
i) Cuando un proceso pasa del estado en ejecución al estado en espero (por ejemplo, solicitud de E/S o
invocacion de una espera hasta que termine uno de los procesos hijos).
ii) Cuando un proceso pasa del estado en ejecución al estado listo (por ejemplo cuando ocurre una
interrupción, se crea un nuevo proceso, otro proceso termino su E/S, terminacion del quantum)
iii) Cuando un proceso pasa del estado en espera al estado listo (por ejemplo, terminacion de E/S)
iv) Cuando un proceso termina
-Con planificación no expropiativa, una vez que la CPU se ha asignado a un proceso, éste la conserva hasta
que la cede ya sea porque termino o porque paso al estado en espera.
Despachador:
Este modulo es el que cede el control de la CPU al proceso seleccionado por el planificador a corto plazo.
Esto implica:
· Cambiar de contexto
· Cambiar a modo de usuario
· Saltar al punto apropiado del programa de usuario para reiniciar ese programa.
Algoritmos de planificacion:
14.1.2 Planificacion por orden de llegada (FCFS):
-Con este esquema el proceso que primero solicita la cpu la recibe primero; Fácil de implementar con una
cola FIFO.
-Posee tiempo de espera muy largo.
-No es expropiativo
-No es adecuado para sistemas de tiempo compartido (no podemos permitir que un proceso ocupe la CPU
durante un periodo prolongado).
-Puede hace esperar a procesos cortos que terminen los mas largos.
-Es no expropiativo
14.1.3 Planificación de “primero el trabajo más corto” (SJF):
-Cuando la CPU esta disponible se asigna el proceso con su siuiente rafaga mas corta, los empates se
resuelven con FCFS.
-La planificación se efectúa examinando la siguiente ráfaga de CPU de un proceso, no su longitud total.
-Es óptimo en cuanto que da el tiempo de espera promedio mínimo para un conjunto dado de procesos.
-La desventaja es que es dificil conocer la duracion de la proxima rafaga de CPU.
-No se puede implementar en el nivel de planificación a corto plazo. Una alternativa es tratar de aproximimar
la siguiente rafaga como un promedio exponencial de las duraciones medidas de ráfagas de CPU previas.
-Puede causar inanición.
-Puede ser o no expropiativo.
14.1.4 Planificación por prioridad:
-Se asigna una prioridad a cada proceso y se asigna la CPU al proceso con la prioridad mas alta. El empate se
resuelve por FCFS.
-El algoritmo SJF es un caso especial del algoritmo de planificación por prioridad general con prioridad igual
al reciproco de la duración predicha.
-Suponemos que números bajos representan una prioridad alta.
-Puede ser expropiativo como no expropiativo
-El problema de estos algoritmos por prioridad es el bloqueo indefinido o inanición (starvation); Una solución
a este problema es el envejecimiento, que consiste en aumentar la prioridad de los procesos que hace mucho
tiempo que esperan en el sistema.
14.1.5 Planificación por turno circular (round robin):
-Diseñado especialmente para los sistemas de tiempo compartido.
-Similar a FCFS pero con expropiacion para conmutar entre procesos.
-Se define una unidad pequeña de tiempo llamado cuanto de tiempo o porción de tiempo; La cola de procesos
listos se trata como una cola circular; se recorre la cola y se asigna a cada proceso un tiempo igual al cuanto.
-El tiempo de espera promedio suele ser muy grande.
-Cuando el tiempo del cuanto es muy grande el algoritmo tiende a FCFS, si es muy pequeño la política se
llama compartir el procesador, cada uno de los n procesos es como si tuviesen un procesador que ejecuta a 1/n
del procesador original.
-Es importante que el cuanto sea grande en relación a lo que tarda la conmutación de contexto.
14.1.6 Planificación con colas de múltiples niveles:
-Útil cuando se puede clasificar a los procesos en grupos (primer plano, interactivos) y (segundo plano, por
lotes). Estos dos tipos de procesos tienen diferentes necesidades en cuanto al tiempo de respuesta, así que
podrían tener también diferentes necesidades de planificación. Además de poder tener mayor prioridad los de
primer plano que los de segundo plano.
-Un algoritmo de planificación por colas de múltiples niveles divide la cola de procesos listos en varias colas
distintas. Cada cola tiene su propio algoritmo de planificación.
-Ademas debe haber planificacion entre las colas, lo cual se implementa generalmente como una planificacion
expropiativa de prioridades fijas (por ejemplo la cola de primer plano podria tener prioridad absoluta sobre la
cola de segundo plano). Por ejemplo que cada cola tenga prioridad absoluta sobre las colas de más baja
prioridad; y ningun proceso de la cola de baja prioridad se pueda ejecutar si no estan vacias las de
mayor prioridad; Otra posibilidad es dividir el tiempo entre las colas.
14.1.7 Planificación con colas de múltiples niveles y realimentación:
-La planificacion con colas de multiples niveles y retroalimentacion a diferencia de la anterior esquema
permite aun proceso pasar de una cola a otra.
-Se puede pasar a un proceso de una cola a otra segun sus requerimientos de CPU y E/S, evitando con esta
forma de envejecimiento la inanición.
-En general, un planificador de colas multinivel con retroalimentación está definido por los parámetros
siguientes:
· El número de colas
· El algoritmo de planificación para cada cola
· El método empleado para determinar cuándo se debe promover un proceso a una cola de mayor prioridad
· El método empleado para determinar cuando se debe degradar a un proceso a una cola de menor prioridad.
· El método empleado para determinar en cual cola ingresará un proceso cuando necesite servicio.
14.1.8 Planificación de múltiples procesadores:
-El problema de planificar se torna mas complejo cuando hay mas procesadores.
-Si se cuenta con varios procesadores identicos puede compartirse la carga.
-Utilizamos una cola común para todos los procesos listos. Todos los procesos ingresan en una cola y se les
asigna cualquier procesador que este disponible.
-Hay dos estrategias
· Cada procesador se auto planifica inspeccionando la cola.
· Nombrando un procesador como planificador para los demas, esto evita que dos procesadores quieran
despachar el mismo proceso, cosa que puede ocurrir en la estrategia anterior. Esto da lugar a una estrategia
Maestro-Esclavo.
FCFS (en orden de llegada)
P3 2
P2 4
P1 9
Proceso Duración
Calcular el tiempo de espera, tiempo de retorno
y tiempo medio de espera si aplicamos el algoritmo
FCFS suponiendo que llegan en el mismo instante
en el siguiente orden: P1, P2, P3
Realizar los mismos cálculos suponiendo que
llegan en el siguiente orden: P2, P3 y P1
FCFS (en orden de llegada)
La cola de preparados se gestiona como una FIFO
Simple de implementar
Muy sensible al orden de llegada de los procesos
Perjudica a los procesos intensivos en E/S (efecto convoy)
SJF (primero el más corto)
Calcular el tiempo medio de espera que resulta de aplicar un algoritmo
SJF no expulsivo
Calcular el tiempo medio de espera que resulta de aplicar un algoritmo
SJF expulsivo (SRTF)
SJF (primero el más corto)
Entra en CPU el proceso con la ráfaga de CPU más
breve
Minimiza el tiempo de espera medio
Riesgo de inanición de los procesos de larga
duración
No es implementable. Se pueden estimar las
duraciones de los procesos, según su historia reciente.
Versión expulsiva (SRTF): el proceso en CPU es
desalojado si llega a la cola un proceso con duración más corta
Planificación por prioridades
Cada proceso tiene una prioridad; entra en
CPU aquel con mayor prioridad.
la política puede ser expulsiva o no
Prioridades definidas de forma interna (por el S.O.) o externa (por los usuarios)
El SJF es un caso (prioridad=duración estimada)
Riesgo de inanición de los procesos con menos prioridad.
Solución: envejecimiento. Aumentar progresivamente la prioridad a los procesos en espera.
Turno rotatorio (Round-Robin)
Adecuado para implementar tiempo compartido
Como el FCFS, pero cada proceso dispone de un
cuanto de tiempo máximo si cuando expira el cuanto de
tiempo el proceso continúa en CPU, el planificador lo
desaloja y lo ingresa al final de la cola de preparados
La cola de preparados se gestiona como FIFO
Si el cuanto de tiempo es Q y hay N procesos en cola,
el tiempo de respuesta es como mucho Q・ (N-1)
Multicolas
Varias colas de preparados, cada una gestionada con una política diferente.
Las colas se reparten la CPU según alguna política:
por prioridad absoluta
un % de tiempo para cada cola
Multicolas con realimentación:
posibilidad de que un proceso se mueva de una cola a otra, p.ej. si cambia su comportamiento
Ej. UNIX: un proceso que lleva mucho tiempo en espera se mueve a una cola de más prioridad
Planificación en multiprocesadores
Una cola por procesador: la carga puede quedar mal
repartida
Una cola común: reparto equilibrado, pero hay riesgos de
inconsistencia si varios procesadores manipulan
simultáneamente la cola
Evaluación de las políticas
¿Cómo elegir una política de planificación?
1.- Definir los criterios de rendimiento
2.- Evaluar los diferentes algoritmos de planificación
Evaluación de las políticas
Modelo determinista
se someten las políticas a una carga de trabajo representativa
Modelos de colas (estadísticos)
Se trabaja con modelos estadísticos de las cargas de trabajo
Simulaciones
se construye un modelo informático de la máquina y se le inyecta una carga de procesos simulada
Implementación
se modifica el S.O. y se prueba en condiciones reales
Descargar