Seminario “Diseño y construcción de microrrobots” Marzo 2006 Planificador de monoprocesadores SEMINARIO “DISEÑO Y CONSTRUCCIÓN DE MICRORROBOTS” Planificador de monoprocesadores Miguel Escudero Carpintero 03123016 F Ingeniería Técnica en Informática de Gestión Universidad de Alcalá Departamento de Electrónica Resumen. El objetivo de este trabajo consiste en familiarizar a todos los alumnos interesados en la creación de un microrrobot, en la parte del software que deberán programar para darle cierta inteligencia a su robot. Para ello me he querido centrar en una herramienta muy importante que se incluye en todos los sistemas UNIX, denominada VisualOS, la cual nos permite comprobar la planificación que realiza un algoritmo sobre los procesos en un sistema operativo. Esta herramienta nos permite comprobar el resulta obtenido al seleccionar un determinado algoritmo y así mismo, podemos contrastar dichos resultados con los descritos en teoría. Este trabajo sólo tiene por objetivo conocer el funcionamiento del planificador de procesos en un sistema operativo y algunos algoritmos que se utilizan para ello. 1 Introducción: El programa VisualOS que se presenta permite observar los aspectos más relevantes de un sistema operativo en funcionamiento. También permite ver cómo funcionan y cómo interactúan los tres sistemas más importantes: planificación de procesos, gestión de memoria y Entrada/Salida. Las representaciones son dinámicas pudiendo capturarse algunas de las gráficas, nos muestra el funcionamiento del sistema en "vivo" o experimenta directamente con él. Un sistema operativo consta de muchas partes íntimamente relacionadas, de manera que su buen funcionamiento depende tanto del correcto funcionamiento de cada una de ellas como de su correcta interacción. Este programa permite tanto su estudio global como el estudio concreto de alguna de sus partes. Tradicionalmente cada parte de un sistema operativo se estudia por separado, siendo muy difícil ofrecer una visión global e integrada de todas ellas, así como de los problemas de la concurrencia, debido a la difícil representación del sistema en funcionamiento. 1 Seminario “Diseño y construcción de microrrobots” Marzo 2006 Planificador de monoprocesadores Facilita el trabajo de realizar gráficas y otras representaciones que expliquen los conceptos importantes del sistema operativo, y permite que se vea más claramente, porque podrá realmente ver, por ejemplo, cómo los distintos procesos se disputan el procesador y la memoria a la vez que pretenden ser los primeros en leer del disco y cómo es el sistema el que gestiona estos recursos. Todo lo verán en conjunto y no fragmentado como se puede explicar en una clase tradicional. Por supuesto también se pueden desactivar algunas de las partes para poder ver más claramente el funcionamiento de las demás. Incluso se pueden mostrar los distintos subsistemas en máquinas diferentes para realizar prácticas en las que cada uno, eligiendo el algoritmo que quiere utilizar o incluso tomando las decisiones manualmente. En un sistema multiprogramado la memoria principal contiene varios procesos. Cada proceso alterna entre el procesador y esperar que se realice una operación de E/S o que ocurra algún otro suceso. El procesador o los procesadores se mantienen ocupados ejecutando un proceso mientras los demás esperan. La clave de la multiprogramación esta en la planificación, normalmente son cuatro los tipos de planificación que entran en juego. Una de ellas es la planificación de E/S, las otras tres son clases de planificación del procesador. La planificación del procesador consiste en asignar procesos al procesador o los procesadores para que sean ejecutados a lo largo del tiempo, de forma que se cumplan objetivos del sistema tales como el tiempo de respuesta, la productividad y la eficiencia del procesado. En muchos sistemas, la actividad de planificación se divide en tres funciones independientes: planificación a largo, medio y corto plazo. El esquema muestra la relación de las funciones de planificación con el diagrama de transición de estados de un proceso. 2 Seminario “Diseño y construcción de microrrobots” Marzo 2006 Planificador de monoprocesadores • • • La planificación a largo plazo se lleva a cabo al crear un proceso nuevo. Se corresponde con la decisión de añadir un nuevo proceso al conjunto de procesos que ya están activos. La planificación a medio plazo forma parte de la función de intercambio. Esta es la decisión de añadir un proceso a los que se encuentran, al menos parcialmente, en la memoria principal y por lo tanto disponible para la ejecución. La planificación a corto plazo consiste en decidir que proceso en estado de listo será el que se ejecute a continuación La figura muestra las colas involucradas en las transiciones de estados de un proceso. La planificación afecta el rendimiento del sistema, pues determina que proceso esperará y cual continuará. Fundamentalmente, la planificación no es sino una gestión de dichas colas que minimice la espera y optimice el rendimiento del entorno. 2 Descripción de los algoritmos: A continuación explicamos y describimos el funcionamiento de los algoritmos estudiados con la herramienta VisualOS: First Come First Server, Round Robin, Highest Response Ratio Next, Shortest Process Next y Shortest Remaining Time. 1.- First Come First Served (Primero en entrar primero en salir) El primer proceso en condiciones de ejecutarse será el asignado al procesador y permanece asignado hasta no poder ejecutarse más por tener que esperar a algún evento o por haber 3 Seminario “Diseño y construcción de microrrobots” Marzo 2006 Planificador de monoprocesadores terminado. Se “roban” los fragmentos de memoria de forma cíclica sin tener en cuenta a quién pertenecen o su frecuencia de utilización. Se realizan los accesos en el mismo orden en que son solicitados. La política más simple de planificación es la de primero en llegar/primero en servirse (FCFS, First-come, First-served), también llamada primero en entrar/primero en salir (FIFO, First-in, First-out). Cada vez que un proceso esté listo para ejecutarse, se incorpora a la cola de listos. Cuando el proceso actual cesa su ejecución, se selecciona el proceso más antiguo de la cola. La figura siguiente muestra las pautas de ejecución del ejemplo propuesto para un ciclo. Primero, se determina el tiempo de finalización de cada proceso. A partir de él, es posible determinar el tiempo de retorno. En términos del modelo de colas, el tiempo de retorno (TAT) es el tiempo de estancia Tr, o tiempo total que el elemento consume en el sistema (tiempo de espera más tiempo de servicio). Un valor más útil es el tiempo de retorno normalizado, que es la razón entre el tiempo de retorno y el tiempo de servicio. Este valor indica el retardo relativo experimentado por un proceso. Normalmente, cuanto mayor es el tiempo de ejecución, mayor es el retardo absoluto que puede tolerarse. El valor mínimo para esta proporción es de 1.0; los valores mayores corresponden a niveles decrecientes del servicio. Ejemplo de planificación de procesos Proceso A B C D E Instante de llegada 0 2 4 6 8 Tiempo de servicio 3 6 4 5 2 FCFS rinde mucho mejor con procesos largos que con procesos cortos. Considérese el siguiente ejemplo, basado en uno propuesto en [FINK88]: Proceso Instante de llegada W X Y Z 0 1 2 3 Tiempo de servicio (Ts) 1 100 1 100 Instante de comienzo 0 1 101 102 Media Instante de finalización 1 101 102 202 Tiempo de retorno (Tr) 1 100 100 199 Tr/Ts 100 26 1 1 100 1,99 El tiempo de espera normalizado para el proceso Y es intolerable comparado con los otros: el tiempo total que pasa en el sistema es 100 veces el tiempo de procesamiento necesario. Esto ocurre siempre que un proceso corto llega justo después de uno largo. Por otro lado, incluso en este ejemplo extremo, a los procesos largos no les va del todo mal. El proceso Z obtiene un tiempo de retorno que es aproximadamente el doble que el de Y, pero su tiempo de espera normalizado está por debajo de 2,0. Otro problema del FCFS es que tiende a favorecer a los procesos con carga de CPU frente a los que tienen carga de E/S. Supóngase un conjunto de procesos, uno de los cuales usa principalmente la CPU (carga de CPU) y los otros se dedican a hacer E/S (carga de E/S). 4 Seminario “Diseño y construcción de microrrobots” Marzo 2006 Planificador de monoprocesadores Cuando un proceso con carga de CPU se está ejecutando, todos los que tienen carga de E/S deben esperar. Algunos de ellos pueden estar en colas de E/S (estado bloqueado) pero puede ser que regresen a la cola de listos mientras el de la carga de CPU todavía se está ejecutando. Llegado ese momento, todos o la mayoría de los dispositivos de E/S estarán ociosos, a pesar de que, posiblemente, haya trabajo para ellos. Cuando el proceso que está actualmente en ejecución abandone el estado Ejecutando, los procesos listos con carga de E/S pasarán rápidamente por el estado de Ejecución y volverán a bloquearse por sucesos de E/S. Si el proceso con carga de CPU también está bloqueado, el procesador pasa a estar desocupado. Así pues, FCFS puede dar como resultado un uso ineficiente tanto del procesador como de los dispositivos de E/S. FCFS no es una alternativa atractiva por sí misma para un sistema monoprocesador. Sin embargo, se combina a menudo con un esquema de prioridades para obtener un planificador efectivo. Así pues, el planificador puede mantener un conjunto de colas, una para cada nivel de prioridad y expedir cada cola con un algoritmo primero en llegar/primero en servirse. Cuando se tiene que elegir a qué proceso asignar la CPU se escoge al que llevara más tiempo listo. El proceso se mantiene en la CPU hasta que se bloquea voluntariamente. La ventaja de este algoritmo es su fácil implementación, sin embargo, no es válido para entornos interactivos ya que un proceso de mucho cálculo de CPU hace aumentar el tiempo de espera de los demás procesos. Para implementar el algoritmo (ver figura 2) sólo se necesita mantener una cola con los procesos listos ordenada por tiempo de llegada. Cuando un proceso pasa de bloqueado a listo se sitúa el último de la cola. En a) el proceso P7 ocupa la CPU, los procesos P2, P4 y P8 se mantienen en la lista de preparados. En b) P7 se bloquea (ya sea al realizar una E/S, una operación wait (espera) sobre un semáforo a cero u otra causa) y P2 pasa a ocupar la CPU. En c) ocurre un evento (finalización de la operación de E/S, operación signal, ...) que desbloquea a P7, esto lo vuelve listo, pasando al final de la cola de procesos listos. Algunas de las características de este algoritmo es que es no apropiativo y justo en el sentido formal, aunque injusto en el sentido de que: los trabajos largos hacen esperar a los cortos y los trabajos sin importancia hacen esperar a los importantes. Por otro lado es predecible pero no garantiza buenos tiempos de respuesta y por ello se emplea como esquema secundario. FCFS rinde mucho mejor con procesos largos que con procesos cortos. Sin embargo, las prestaciones del FCFS son, con frecuencia, bastante pobres. 5 Seminario “Diseño y construcción de microrrobots” Marzo 2006 Planificador de monoprocesadores Los problemas que presenta son: ¾ El tiempo medio de espera suele ser elevado. ¾ Bajo nivel de utilización de la CPU. ¾ Pobre tiempo de respuesta en procesos cortos en esquemas con mucha carga. ¾ Tiende a favorecer a los procesos con carga de CPU frente a los que tienen carga de E/S. ¾ Uso ineficiente de los dispositivos de E/S. 2.- Round Robin (Turno rotatorio) Se establece un tiempo máximo de ejecución o cuanto y se ejecuta cada proceso hasta que exceda su cuanto o no quiera ejecutarse más, entonces se asigna otro y así sucesivamente. Los procesos en espera de ejecución forman una cola circular. Este algoritmo, no apropiativo de planificación round-robin, fue especialmente diseñado para sistemas en tiempo compartido. Se define una pequeña unidad de tiempo común llamada quantum de tiempo o time slice, que generalmente tiene un valor entre 10 y 100 milisegundos. La cola de listos se trata como una cola circular. El planificador de CPU recorre la cola asignando el procesador a cada proceso durante un intervalo de tiempo de hasta un quantum. Este es uno de los algoritmos más antiguos, sencillos y equitativos en el reparto de la CPU entre los procesos, muy válido para entornos de tiempo compartido. Si el proceso agota su cuantum de tiempo, se elige a otro proceso para ocupar la CPU. Si el proceso se bloquea o termina antes de agotar su cuantum también se alterna el uso de la CPU. El round robin es muy fácil de implementar. Todo lo que necesita el planificador es mantener una lista de los procesos listos. Este algoritmo presupone la existencia de un reloj en el sistema. Un reloj es un dispositivo que genera periódicamente interrupciones. Esto es muy importante, pues garantiza que el sistema operativo (en concreto la rutina de servicio de interrupción del reloj) coge el mando de la CPU periódicamente. El cuantum de un proceso equivale a un número fijo de pulsos o ciclos de reloj. Al ocurrir una interrupción de reloj que coincide con la agotación del cuantum se llama al dispatcher. Para implementar la planificación RR, la cola se mantiene como una cola de procesos FIFO. El planificador de la CPU selecciona el primer proceso de la cola, y únicamente puede salir del estado de ejecución por tres motivos: que termine su ejecución, se proceda a la llamada de una E/S y el proceso se quede bloqueado o que se genere una interrupción por haber superado un quantum de ejecución del proceso. Si hay n procesos en la cola y el quantum de tiempo es q, entonces cada proceso obtiene 1/n del tiempo de CPU en fragmentos de al menos q unidades de tiempo cada vez. Cada proceso tiene que esperar no más de (n-1) x q unidades de tiempo hasta su quantum de tiempo siguiente. El conflicto surge en el momento de decidir la duración del quantum de tiempo para cada proceso. Si el quantum es muy pequeño, produce mucho overhead por la gran cantidad de cambios de contexto de ejecución que hace el sistema operativo. Si por el contrario, el quantum es muy grande produce un tiempo de reacción muy pobre porque los procesos en cola de listos esperan demasiado y si es infinito se convierte en FCFS. Es decir que para que sea eficiente, la duración del contexto switch debe ser mucho menor que el time slice. 6 Seminario “Diseño y construcción de microrrobots” Marzo 2006 Planificador de monoprocesadores Una desventaja del turno rotatorio es el tratamiento que hace si existe una mezcla de procesos limitados por CPU y procesos limitados por E/S. Los procesos con carga de procesador tienden a recibir una porción desigual de tiempo de procesador, lo que origina un rendimiento pobre de los procesos con carga de E/S, un mal aprovechamiento de los dispositivos de E/S y un incremento de la variabilidad del tiempo de respuesta. 3.- Highest Response Ratio Next (El de mayor tasa de respuesta el siguiente) Brinch Hansen desarrolló la estrategia de prioridad a la tasa de respuesta más alta (HRN, highest-response-ratio-next) que corrige algunas deficiencias de SJF, particularmente el retraso excesivo de trabajos largos y el favoritismo excesivo para los trabajos cortos. HRN es un disciplina de planificación no apropiativa en la cual la prioridad de cada proceso no sólo se calcula en función del tiempo de servicio, sino también del tiempo que ha esperado para ser atendido. Cuando un trabajo obtiene el procesador, se ejecuta hasta terminar. Las prioridades dinámicas en HRN se calculan de acuerdo con la siguiente expresión: Prioridad = (tiempo de espera + tiempo de servicio) / tiempo de servicio Como el tiempo de servicio aparece en el denominador, los procesos cortos tendrán preferencia. Pero como el tiempo de espera aparece en el numerador, los procesos largos que han esperado también tendrán un trato favorable. Obsérvese que la suma tiempo de espera + tiempo de servicio es el tiempo de respuesta del sistema para el proceso si éste se inicia de inmediato. Para cada proceso, basado en el tiempo que va a ocupar el procesador(s) y el tiempo que lleva esperando para ocuparlo (w), Se calcula w+s/s, una vez echo esto el proceso que tenga un valor mayor será asignado al procesador. Este algoritmo es bastante bueno, por que además de dar preferencia a los procesos cortos también tiene en cuenta el envejecimiento de los procesos para evitar así la "inanición". Cuando el proceso actual termina o se bloquea, se elige el proceso listo con un mayor valor de R. Donde R es: R = (w + s) / s R = tasa de respuesta. w = tiempo consumido esperando al procesador. s = tiempo de servicio esperado. La decisión de planificación se basa en una estimación del tiempo de retorno normalizado. Lo que se intenta es reducir al máximo las proporciones de tiempo R. Este método es atractivo porque tiene en cuenta la edad del proceso. Aunque se favorece a los trabajos más cortos (un denominador menor produce una razón mayor), el envejecimiento de un proceso sin que haya sido servido incrementa el valor de la razón, de forma que los procesos más largos puedan pasar, en competición con los más cortos. El tiempo esperado de servicio debe estimarse antes de emplear la técnica de la mayor tasa de respuesta. 7 Seminario “Diseño y construcción de microrrobots” Marzo 2006 Planificador de monoprocesadores 4.- Shortest Process Next (El proceso más corto el próximo) Este algoritmo consiste en seleccionar el proceso con menor tiempo esperado de ejecución. La mejora del rendimiento global es significativa en términos de tiempo de respuesta, sin embargo, se incrementa la variabilidad de los tiempos de respuesta, especialmente para procesos largos, reduciendo así la previsibilidad. Una dificultad que plantea SPN es la necesidad de conocer o estimar el tiempo exigido por cada proceso. Para ello, generalmente se toma el promedio exponencial que permite predecir valores futuros a partir de una serie de valores pasados. Sn+1 = α Tn + (1 - α )Sn Donde: Ti = Tiempo de ejecución en el procesador para el i-ésimo caso del proceso (tiempo total de ejecución para un trabajo por lotes; tiempo de ráfaga de procesador para trabajos interactivos). Si = Valor pronosticado para el caso i-ésimo. α = Factor constante de ponderación. (0 <= α <= 1) (generalmente se utiliza 0,5) α determina el peso relativo dado a las observaciones más y menos recientes. Utilizando un valor constante de α , independiente del número de observaciones pasadas, se llega a una situación en la que se tienen en cuenta todos los valores pasados, pero los más distantes reciben un peso menor. Para verlo con más claridad, consideremos el siguiente desarrollo de la ecuación anterior: Sn+1 = α Tn + (1 - α ) α Tn-1 + … + (1 - α )1α Tn-i + ... + (1 - α )nS1 S1 = Valor pronosticado para el primer caso; no calculado. La ventaja de emplear un valor α cercano a 1 es que la media reflejará rápidamente los cambios repentinos en la cantidad observada. La desventaja es que si se produce un breve aumento en los valores observados y después se vuelve a estabilizar en algún valor medio, el empleo de un valor grande a α generará cambios bruscos en la media. Un riesgo que existe en SPN es la posibilidad de inanición para los procesos largos mientras exista un flujo continuo de procesos más cortos. Por otro lado no es conveniente para entornos de tiempo compartido o de procesamiento de transacciones, debido a que es un algoritmo apropiativo. Otra observación importante es que se emplea una gran pérdida de tiempo para efectuar este cálculo por lo que no se utiliza este algoritmo. La ventaja que presenta este algoritmo sobre el algoritmo FIFO es que minimiza el tiempo de finalización promedio, como puede verse en el siguiente ejemplo: Ej: Supongamos que en un momento dado existen tres ráfagas listos R1, R2 y R3, sus tiempos de ejecución respectivos son 24, 3 y 3 ms. El proceso al que pertenece la ráfaga R1 es 8 Seminario “Diseño y construcción de microrrobots” Marzo 2006 Planificador de monoprocesadores la que lleva más tiempo ejecutable, seguido del proceso al que pertenece R2 y del de R3. Veamos el tiempo medio de finalización (F) de las ráfagas aplicando FIFO y SJF: FIFO F = (24 + 27 + 30) / 3 = 27 ms. SJF F = (3 + 6 + 30) / 3 = 13 ms. Se puede demostrar que este algoritmo es el óptimo. Para ello, consideremos el caso de cuatro ráfagas, con tiempos de ejecución de a, b, c y d. La primera ráfaga termina en el tiempo a, la segunda termina en el tiempo a+b, etc. El tiempo promedio de finalización es (4a+3b+2c+d)/4. Es evidente que a contribuye más al promedio que los demás tiempos, por lo que debe ser la ráfaga más corta, b la siguiente, y así sucesivamente. El mismo razonamiento se aplica a un número arbitrario de ráfagas. No obstante, este algoritmo sólo es óptimo cuando se tienen simultáneamente todas las ráfagas. Como contraejemplo, considérense cinco ráfagas desde A hasta E, con tiempo se ejecución de 2, 4, 1, 1 y 1 respectivamente. Sus tiempos de llegada son 0, 0, 3, 3 y 3. Primero se dispone de A y B, puesto que las demás ráfagas no han llegado aún. Con el algoritmo SJF las ejecutaríamos en orden A, B, C, D, y E con un tiempo de finalización promedio de 4.6. Sin embargo, al ejecutarlas en orden B, C, D, E y A se tiene un promedio de finalización de 4.4. 5.- Shortest Remaining Time (El tiempo restante mas corto) Este algoritmo es la versión no apropiativa o espulsiva del algoritmo Shortest Process Next (SPN) o también llamado Shortest Job First (SJF). Con el algoritmo SPN, el planificador elige el proceso más breve, es decir, el de menor tiempo de ejecución de los que están preparados. Este proceso permanecerá asignado hasta que éste termine, momento en el cuál se volverá a elegir el proceso más corto. Como el planificador realiza una estimación del tiempo de proceso, para así poder llevar a cabo la función de selección, existe el riesgo de inanición para los procesos largos. En el algoritmo Shortest Remaining Time el planificador selecciona el proceso más corto, al igual que antes, pero en este caso el cambio se controla cada vez que un proceso llega a la cola. Es decir, cuando un proceso se desbloquea o se crea uno nuevo y el tiempo de ráfaga es menor que el tiempo de ráfaga del proceso que se está ejecutando, entonces se realiza un cambio de contexto, el bloqueado se ejecuta y el que se estaba ejecutando pasa a la cola de procesos listos. De este modo cuando se desbloquea o entra un proceso nuevo, se calcula su tiempo de ráfaga. Si el proceso que se está ejecutando le queda más tiempo de ráfaga que nuestro tiempo de ráfaga calculado entonces se procede a realizar el cambio de contexto. Este algoritmo es más eficiente debido a que no se produce overhead muy frecuente ya que las interrupciones no son producidas por el reloj del sistema. Aunque por otro lado se deben de tener en cuenta los tiempos de servicio transcurridos, lo cual contribuye a la sobrecarga. El SRT produce tiempos de retorno mejores que los del SPN, ya que los procesos cortos reciben atención inmediata y preferente frente a los procesos largos. En la figura podemos observar el funcionamiento del algoritmo SRT en el que se penalizan las ráfagas largas. 9 Seminario “Diseño y construcción de microrrobots” Marzo 2006 Planificador de monoprocesadores ¾ Ventajas: o Se ejecutan primero los procesos con ráfagas de CPU más cortas. o Se minimiza el tiempo de espera medio. o No hay tanto riesgo de overhead. ¾ Desventajas: o Existe riesgo de inanición para los procesos con tiempos de CPU más largos. o Los tiempos de servicio aumentan la sobrecarga. 10 Seminario “Diseño y construcción de microrrobots” Marzo 2006 Planificador de monoprocesadores A modo de conclusión diremos que el algoritmo SRT es la versión no apropiativa o expulsiva del algoritmo SPN o SJF, en el que el proceso que hay en CPU es desalojado si llega a la cola un proceso con una duración más corta. 3 Conclusiones: El propósito de este trabajo es conocer el funcionamiento de los principales algoritmos de planificación de procesos. Del mismo modo, aprender a utilizar herramientas visuales las cuales nos permiten una mejor percepción y comprensión de los mismos. Contrastando la información teórica que poseíamos acerca del funcionamiento de cada uno de los algoritmos con nuestra herramienta visual, hemos conseguido a base de comparar y comprobar resultados, entender y comprender el correcto funcionamiento de dichos algoritmos, todo gracias a la utilización de la herramienta VisualOS. 4 Bibliografía: Escuela Universitaria de Informática (Segovia) Planificación de procesos. Universidad Carlos III (Madrid) – Departamento de Telemática. Planificación de procesos. Autor: Abelardo Pardo. Universidad Rey Juan Carlos – Ing. Técn. de Informática de Gestión y de Sistemas. Sistemas Operativos – Planificación de procesos. 11