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