Planificación de Procesos Módulo 5 Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia “San Juan Bosco” Planificación de Procesos Conceptos Básicos Criterios de Planificación Algoritmos de Planificación Planificación de Múltiples Procesadores Planificación en Tiempo Real Planificación de hilos Evaluación Algoritmos JRA © 2010 Sistemas Operativos –Planificación de Procesos 1 Conceptos Básicos Máxima utilización de CPU obtenida con multiprogramación Ciclo CPU–ráfagas (bursts) de E/S – La ejecución de procesos consiste de ciclos de ejecución de CPU y esperas en E/S. Distribución de ráfagas de CPU JRA © 2010 Sistemas Operativos –Planificación de Procesos Secuencia Alternada de Ráfagas de CPU y E/S JRA © 2010 Sistemas Operativos –Planificación de Procesos 2 Planificador de CPU Selecciona entre los procesos en memoria que están listos para ejecutar, y aloca la CPU a uno de ellos. La decisión de planificar la CPU puede tener lugar cuando un proceso: 1. Conmuta de ejecutando a estado de espera. 2. Conmuta de ejecutando a estado de listo. 3. Conmuta de espera a listo. 4. Termina. La planificación de 1 y 4 es no apropiativa. Las otras planificaciones son apropiativas. Sistemas Operativos –Planificación de Procesos JRA © 2010 Despachador El módulo despachador pasa el control de la CPU al proceso seleccionado por el planificador de corto término; esto implica: cambio de contexto conmutación a modo usuario salta a la dirección apropiada en el programa de usuario para reiniciarlo Latencia de despacho – tiempo que toma al despachador para detener un proceso e iniciar otro. JRA © 2010 Sistemas Operativos –Planificación de Procesos 3 Criterios de Planificación Utilización de CPU – mantener la CPU tan ocupada como sea posible Procesamiento total (Throughput) – número de procesos que completan sus ejecución por unidad de tiempo. Tiempo de retorno – cantidad de tiempo para ejecutar un determinado proceso. Tiempo de Espera – cantidad de tiempo que un proceso ha estado esperando en las colas. Tiempo de respuesta – cantidad de tiempo que transcurre desde que fue hecho un requerimiento hasta que se produce la primer respuesta, no salida. JRA © 2010 Sistemas Operativos –Planificación de Procesos Criterios de Optimización Maximizar la utilización de CPU Maximizar el procesamiento total Minimizar el tiempo de retorno Minimizar el tiempo de espera Minimizar el tiempo de respuesta JRA © 2010 Sistemas Operativos –Planificación de Procesos 4 Planificación Primero-Entrar, Primero-Servido (FCFS) Ejemplo: Proceso Tiempo de Ráfaga P1 24 P2 3 P3 3 Suponer que los procesos llegan en el orden: P1 , P2 , P3 La carta de Gantt para la planificación es: P1 0 P2 24 P3 27 30 Tiempo de espera para P1 = 0; P2 = 24; P3 = 27 Tiempo medio de espera: (0 + 24 + 27)/3 = 17 Sistemas Operativos –Planificación de Procesos JRA © 2010 Planificación FCFS (Cont.) Suponer que los procesos llegan en el orden P2 , P3 , P1 . La carta de Gantt para la planificación es: P2 0 P3 3 P1 6 30 Tiempo de espera para P1 = 6; P2 = 0; P3 = 3 Tiempo medio de espera: (6 + 0 + 3)/3 = 3 Mucho mejor que el caso anterior. Efecto Convoy los procesos cortos delante de los procesos largos JRA © 2010 Sistemas Operativos –Planificación de Procesos 5 Planificación Job-Mas Corto Primero (SJF) Se asocia con cada proceso la longitud de su próxima ráfaga de CPU. Se usa estas longitudes para planificar los procesos con el tiempo mas corto. Dos esquemas: No apropiativo – una vez que la CPU es dada a un proceso, no puede ser apropiada hasta que el mismo complete su ráfaga de CPU. Apropiativo – si un nuevo proceso llega con una longitud de ráfaga de CPU menor que el resto del tiempo de ejecución que le queda al proceso que está ejecutando entonces se apropia de la CPU. Este esquema es conocido como El Tiempo Remanente Mas Corto Primero (SRTF). SJF es óptimo – da el mínimo tiempo de espera promedio para un dado conjunto de procesos. Sistemas Operativos –Planificación de Procesos JRA © 2010 Ejemplo de SJF No Apropiativo Proceso Tiempo de llegada Ráfaga P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4 SJF (no apropiativo) P1 0 P3 7 P2 8 P4 12 16 Tiempo medio de espera = (0 + 6 + 3 + 7)/4 = 4 JRA © 2010 Sistemas Operativos –Planificación de Procesos 6 Ejemplo SJF Apropiativo Proceso Tiempo de llegada Ráfaga P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4 SJF (apropiativo) P1 0 P2 2 P3 4 P2 5 P4 7 P1 11 16 Tiempo medio de espera = (9 + 1 + 0 +2)/4 = 3 Sistemas Operativos –Planificación de Procesos JRA © 2010 Planificación por Prioridad Con cada proceso se asocia un número (entero) La CPU es alocada al proceso con prioridad mas alta (entero mas pequeño ⇒ mas alta prioridad o el entero mas grande, depende de la convención). Apropiativo No apropiativo SJF es un algoritmo planificador con prioridad. Problema ⇒Inanición – los procesos de baja prioridad pueden no llegar a ejecutarse nunca. Solución ≡ Envejecimiento – se incrementa en el tiempo la prioridad de los procesos en espera. JRA © 2010 Sistemas Operativos –Planificación de Procesos 7 Round Robin (RR) Cada proceso toma una pequeña unidad de tiempo de CPU (quantum), usualmente 10-100 milisegundos. Luego de este tiempo el proceso es quitado de la CPU y agregado a la cola de listos. Si hay n procesos en la cola de listos y el tiempo del quantum es q, entonces cada proceso toma 1/n del tiempo de CPU en rebanadas de a lo sumo q unidades de tiempo a la vez. Los procesos no esperan mas que (n-1)q unidades de tiempo. Rendimiento q largo ⇒ Primero-Entrar, Primero-Salir q chico ⇒ q debe ser grande con respecto al cambio de contexto, sino la sobrecarga es demasiado grande. Sistemas Operativos –Planificación de Procesos JRA © 2010 Ejemplo: RR con Quantum = 20 Proceso Ráfaga P1 53 P2 17 P3 68 P4 24 La carta de Gantt: P1 0 P2 20 37 P3 P4 57 P1 77 P3 97 117 P4 P1 P3 P3 121 134 154 162 Tipicamente, mas tiempo de retorno promedio que SJF, pero mejor respuesta. JRA © 2010 Sistemas Operativos –Planificación de Procesos 8 Como un Quantum PEQUEÑO Incrementa los Cambios de Contexto tiempo de proceso = 10 JRA © 2010 quantum conmutación contexto Sistemas Operativos –Planificación de Procesos Colas Multinivel La cola de listos esta particionada en colas separadas: foreground (interactive) background (batch) Cada cola tiene su propio algoritmo de planificación, foreground – RR background – FCFS La planificación debe ser hecha entre las colas. Planificación con prioridad fija; p.e., servir desde el foreground y luego del background. Posibilidad de inanición. Tajada de tiempo – cada cola tiene una cierta cantidad de tiempo de CPU que puede planificar entre sus procesos; p.e., 80% en foreground en RR, 20% en background en FCFS JRA © 2010 Sistemas Operativos –Planificación de Procesos 9 Planificación con Colas Multinivel Sistemas Operativos –Planificación de Procesos JRA © 2010 Colas Multinivel Realimentadas Un proceso puede moverse entre varias colas. El planificador de colas multinivel realimentadas está definido por los siguientes parámetros: JRA © 2010 Número de colas Algoritmos de planificación para cada cola Método usado para determinar cuando mejorar un proceso Método usado para determinar cuando degradar un proceso Método usado para determinar en que cola entra un proceso cuando necesita servicio. Sistemas Operativos –Planificación de Procesos 10 Ejemplo de Colas Multinivel Realimentadas Tres colas: Q0 – quantum de 8 milisegundos Q1 – quantum de 16 milisegundos Q2 – FCFS Planificación JRA © 2010 Un nuevo job entra a la cola Q0 el cual es servido FCFS. Cuando gana la CPU, el job recibe 8 milisegundos. Si no finaliza en 8 milisegundos, el job es movido a la cola Q1. En Q1 el job es nuevamente servido FCFS y recibe 16 milisegundos adicionales. Si aún no completa, es movido a la cola Q2. Sistemas Operativos –Planificación de Procesos Colas Multinivel Realimentadas JRA © 2010 Sistemas Operativos –Planificación de Procesos 11 Planificación Múltiple-Procesador La planificación de CPU es mas compleja cuando hay disponibles múltiples CPUs. Procesadores homogéneos en un multiprocesador. Carga compartida Multiprocesamiento Asimétrico – solo un procesador accede a las estructuras de datos del sistema, simplificando el manejo de datos compartidos. JRA © 2010 Sistemas Operativos –Planificación de Procesos Planificación Tiempo Real Sistemas de Tiempo Real Duro – requiere completar tareas críticas en una cantidad de tiempo garantizado. Computación de Tiempo Real Blando – requiere que los procesos críticos reciban prioridad sobre otros. JRA © 2010 Sistemas Operativos –Planificación de Procesos 12 Planificación de Hilos Planificación Local – Como deciden las librerías de hilos poner el hilo en un LWP (Light-Weight Process) Planificación Global – Como el kernel decide que hilo del kernel es el siguiente que corre Sistemas Operativos –Planificación de Procesos JRA © 2010 Planificación en Linux Dos algoritmos: tiempo compartido y tiempo real Tiempo compartido Prioriza basado en créditos – procesos con más créditos son planificados primero Los créditos se restan cuando la interrupción del timer ocurre Cuando el crédito = 0, es elegido otro proceso Cuando todos los procesos tienen crédito = 0, ocurre una reacreditación Basada en factores que incluyen prioridad e historia Tiempo real Tiempo real blando Posix.1b compliant – dos clases FCFS y RR Proceso JRA © 2010 de más alta prioridad siempre corre primero Sistemas Operativos –Planificación de Procesos 13 Planificación en UNIX y Linux La planificación tradicional en UNIX emplea colas multinivel ( los niveles se definen en bandas de prioridades) usando Round Robin en cada una de ellas: Pj ( i ) = Basej + CPUj ( i ) = JRA © 2010 CPUj (i ) 2 + nicej CPUj (i - 1) (1) (2) 2 Sistemas Operativos –Planificación de Procesos Planificación en UNIX y Linux CPUj (i ) = Mide la utilización del procesador por el proceso j en el intervalo i. Pj ( i ) = Prioridad del proceso j en el comienzo del intervalo i; valores bajos implican prioridades altas. Basej = Prioridad base del proceso j. nicej = Factor de ajuste controlable por el usuario (1) Es utilizada para ajustar dinámicamente la prioridad (producto del uso de CPU). (2) Es usada para implementar el “envejecimiento” cuando el proceso espera. Así evita la inanición. JRA © 2010 Sistemas Operativos –Planificación de Procesos 14 Planificación en UNIX y Linux La prioridad de cada proceso es computada cada segundo (en los primeros UNIX, hoy es cada quantum). El propósito de la prioridad base es dividir todos los procesos en bandas de niveles de prioridad. Los componentes CPU y nice se utilizan para prevenir que los procesos migren fuera de su banda asignada (dada por la prioridad base). Estas bandas son utilizadas para optimizar el acceso a los dispositivos que se manejan con bloques de información (discos, cintas, CD, etc) y permitir al sistema operativo responder rapidamente a las llamadas al sistema. JRA © 2010 Sistemas Operativos –Planificación de Procesos Planificación en UNIX y Linux En orden decreciente de prioridad, las bandas son: Swapper. Control de dispositivos de E/S en bloques. Manipulación de archivos. Control de dispositivos de E/S por caracteres. Procesos de usuarios. Dentro de la banda de procesos de usuario, el uso de la historia de ejecución tiende a penalizar a los procesos limitados por procesador a expensas de los procesos limitados por E/S. JRA © 2010 Sistemas Operativos –Planificación de Procesos 15 Evaluación de Algoritmos Modelo Determinístico – toma una carga de trabajo predeterminada y define el rendimiento de cada algoritmo para esa carga. Modelo de colas Implementación JRA © 2010 Sistemas Operativos –Planificación de Procesos JRA © 2010 Sistemas Operativos –Planificación de Procesos 16 Fin Módulo 5 Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia “San Juan Bosco” 17