Академический Документы
Профессиональный Документы
Культура Документы
La forma en que se reparte el uso de la CPU entre los procesos tiene un enorme impacto en el rendimiento de un sistema multiprogramado, por lo que siempre se ha prestado una gran atencin a las polticas de planificacin que se implementan y se han elaborado multitud de conceptos relacionados con ello. El estudio de estas polticas es el objeto de este captulo. Se presta tambin atencin a la planificacin en multiprocesadores, que aade una dimensin espacial al problema, y a la planificacin de tiempo real.
56
Contenido
3.1 3.2 3.3 3.4 Introduccin Evaluacin del rendimiento Comportamiento de los programas Polticas de planificacin Seleccin de un proceso para entrar en la CPU Expulsin Planificacin multinivel Criterios para la planificacin en multiprocesadores Polticas de planificacin en multiprocesadores Criterios para la planificacin de tiempo real Polticas de planificacin de tiempo real Planificacin en sistemas UNIX clsicos Planificacin en UNIX SVR4 Planificacin en Windows 57 58 60 61 62 64 68 69 70 71 72 74 75 76 76 78 78 79 80
3.4.1 3.4.2 3.4.3 3.5 3.5.1 3.5.2 3.6 3.6.1 3.6.2 3.7 3.7.1 3.7.2 3.7.3 3.8 3.9
Planificacin en multiprocesadores
Ejemplos de planificacin
Bibliografa Ejercicios
57
3.1
Introduccin
En el captulo anterior se ha estudiado cmo se representan los procesos y se implementan las transiciones de estado entre ellos y los cambios de contexto. Uno de los objetivos de un sistema operativo multiprogramado es proporcionar una utilizacin eficiente de los recursos del proceso, permitiendo a los procesos un uso de ellos que evite situaciones de inanicin. Todo esto es lo que persigue una poltica de planificacin adecuada, que determina los criterios de eleccin del siguiente proceso a usar la CPU. Evaluar la calidad de una poltica de planificacin es complejo y presenta diferentes perspectivas, dependiendo de los intereses de las aplicaciones, lo que lleva a definir previamente un conjunto de parmetros de rendimiento. El rendimiento de una determinada poltica de planificacin depender tambin del comportamiento de los programas, por lo que la eleccin de una u otra poltica deber tener en cuenta el tipo de procesos que ejecuta el sistema, fundamentalmente si estn orientados a clculo o son interactivos. Algunas aplicaciones, como las de tiempo real, imponen unos requisitos muy particulares en el uso del procesador, lo que hace difcil su convivencia con las aplicaciones habituales en los sistemas de propsito general (de tiempo compartido), conduciendo a polticas de planificacin de tiempo real especficas. Hoy en da son cada vez ms habituales las plataformas multiprocesador. Aunque la poltica de planificacin es independiente, en general, del nmero de unidades de proceso, los sistemas multiprocesador requieren polticas complementarias que tienen como objetivo un compromiso entre el equilibro de la carga de los procesadores, que conduce a una mejor utilizacin de estos, y el aprovechamiento de la localidad de los procesos, que impulsa a mantener a cada proceso en un mismo procesador durante su ejecucin. El trabajo de planificacin reside en gran parte en una funcin scheduler del ncleo del sistema operativo, pero otras partes del sistema pueden colaborar en esta tarea, normalmente modificando los parmetros que utiliza el scheduler para decidir qu proceso planificar. En general la planificacin puede repartirse en tres niveles [STA05]: En la llamada al sistema de ejecutar programa. Cuando se crea un proceso se puede decidir alguno de los criterios para su planificacin, como por ejemplo la prioridad inicial y el quantum. A esta planificacin se la denomina de largo plazo. En la funcin scheduler. Cada vez que un proceso abandona la CPU, toma la decisin de qu proceso planificar en funcin de la poltica de planificacin establecida y del valor de los parmetros de planificacin. A esta planificacin se la denomina de corto plazo.
58
Otras partes del sistema operativo pueden intervenir en la planificacin, bien peridicamente (como en algunos sistemas UNIX que estudiaremos), bien de forma indirecta, como es el caso del swapper de memoria1: al sacar un proceso de memoria por problemas de espacio, hace que este no sea inmediatamente planificable. A este tipo de planificacin se la denomina de medio plazo.
La Figura 3.1 muestra qu transiciones de estado estn involucradas en cada plazo de la planificacin.
Ejecutndose Finalizado
3.2
La seleccin de una determinada poltica de planificacin de procesos se basa en un conjunto de parmetros de rendimiento cuya importancia relativa depende de algunas caractersticas particulares del sistema (por ejemplo, interactivo o batch, existencia de procesos de tiempo real), lo que determina los compromisos que hay que establecer en la seleccin de las poltica y mecanismos de la gestin de procesos. En general, todo mecanismo introduce una sobrecoste en tiempo de ejecucin que contrarresta parte de los beneficios obtenidos por la introduccin del mecanismo. Los parmetros de rendimiento que utilizaremos como criterios para analizar la calidad de una poltica de planificacin se basan en los definidos en el Captulo 1, particularizados para su aplicacin al recurso procesador:
59
Eficiencia Se refiere a la eficiencia temporal. Se expresa como el porcentaje de tiempo en que la CPU se mantiene ocupada haciendo trabajo til. Por trabajo til se entiende la ejecucin de cdigo de los programas (y de los servicios solicitados por stos). Cabe esperar que un sistema multiprogramado sea mucho ms eficiente que uno monoprogramado, ya que en stos la CPU est ociosa cuando en programa espera por una operacin de E/S pudiendo haber programas esperando a ejecutarse, por lo que ese tiempo contar como tiempo perdido. Sin embargo, un sistema multiprogramado tiene que ejecutar las tareas propias de la gestin de procesos (scheduler y del dispatcher), y stas deben computarse tambin como tiempo perdido. t t til Ef t = til = T t til + t perdido A veces resultar interesante referirse a la prdida de eficiencia como: t perdido 1 Ef t = T Productividad (throughput) En lo que respecta a la gestin de procesos, mide el nmero de programas que se ejecutan por unidad de tiempo. Incluye otras muchas caractersticas que afectan el rendimiento del sistema, como por ejemplo la velocidad del procesador, que habr que compensar si se comparan mquinas con distinto hardware. Tiempo de finalizacin Considera el rendimiento del sistema desde el punto de vista del programa que se ejecuta. Globalmente, se puede expresar como el tiempo desde que se solicita la ejecucin de un programa hasta que sta finaliza. Es una medida vlida para sistemas batch. Lo denotaremos tf Tiempo de espera Mide exclusivamente los tiempos totales de espera de un proceso en la cola de preparados, tw, eliminando la dependencia de la duracin del propio programa. Depende en cierta medida, sin embargo, del nmero de veces que ste se bloquea. Debe tenerse en cuenta la siguiente relacin entre tiempos: si tCPU es el tiempo que pasa el proceso en la CPU y tbloq es el tiempo total que el proceso est bloqueado, entonces
60
tf = tw+ tCPU+ tbloq Tasa de CPU La relacin entre el tiempo de CPU del programa y su tiempo de espera expresa la tasa de CPU, que indica el grado de disfrute del procesador que ha tenido el proceso:
TasaCPU =
Latencia (tiempo de respuesta)
t CPU t CPU + t w
Mide el tiempo desde que un proceso entra en el estado de preparado (porque se crea o porque se desbloquea) hasta que entra en ejecucin. Slo tiene sentido en sistemas interactivos. Lo denotaremos tr. Equidad (predecibilidad) Los parmetros anteriores (en particular el tiempo de terminacin, la latencia y el tiempo de espera) se miden con parmetros estadsticos. La media parece ser el parmetro ms indicativo. Sin embargo, otros parmetros de la distribucin estadstica de una medida del rendimiento, como por ejemplo la varianza de la latencia, son de gran inters. Una varianza pequea en la latencia es indicadora de un comportamiento homogneo, lo que es deseable por dos motivos: por una parte el comportamiento de los programas es ms predecible; por otra parte indica un comportamiento ms ecunime y menos discriminatorio. En cambio, varianzas muy grandes pueden indicar riesgo de inanicin para algunos programas.
3.3
Para desarrollar mecanismos efectivos de planificacin de procesos es necesario conocer previamente el comportamiento tpico de los programas en ejecucin. Este comportamiento se refiere a dos aspectos fundamentales: (1) (2) El nmero de transiciones entre estados que se producen durante la ejecucin. El tiempo relativo que un proceso gasta en cada estado.
Medidas empricas han mostrado que estos parmetros son muy variables de unos programas a otros. En concreto, para el parmetro de mayor inters, que es el tiempo de servicio de un proceso en la CPU, es decir, el tiempo consecutivo de CPU que un
61
proceso necesita (intervalo de CPU), se ha observado la distribucin de probabilidades que se muestra en la Figura 3.2 (distribucin heavy-tailed).
frecuencia
Intervalo de CPU Figura 3.2. Histograma de intervalos de CPU de una muestra tpica de procesos. Se obtiene como consecuencia que, aunque la mayora de los procesos necesitan la CPU para pequeos intervalos de tiempo, bloquendose con frecuencia (programas interactivos u orientados a entrada/salida), existe un nmero de procesos que tienden a utilizar la CPU durante un tiempo prcticamente indefinido (programas orientados a clculo). Este hecho va a condicionar el diseo de la planificacin de procesos.
3.4
Polticas de planificacin
A continuacin describiremos las polticas generales de planificacin de procesos, haciendo referencia a los mecanismos que los implementan. Las evaluaremos de acuerdo a los parmetros de rendimiento introducidos previamente. Los algoritmos de planificacin que se exponen en esta seccin no se limitan a un plazo de planificacin concreto. Aunque en general asumiremos planificacin a corto plazo (entrada de procesos a la CPU), algunos algoritmos pueden implementarse tambin a largo plazo o distribuirse en ms de un tipo de planificacin (por ejemplo, a corto y medio plazo). Para describir una poltica de planificacin hay que considerar los siguientes aspectos: Cmo se selecciona el proceso que entrar a ejecucin. De entre los procesos que estn en estado preparado, se elige uno de acuerdo a criterios como, por ejemplo,
62
prioridades, tiempo que lleva en la cola de preparados, tasa de CPU que le ha correspondido... Cundo se lleva a cabo la planificacin. Este aspecto afecta fundamentalmente a la planificacin a corto plazo. Hay dos alternativas bsicas: si nicamente se planifica cuando un proceso abandona la CPU porque acaba o se bloquea (polticas no expulsoras), o si se puede forzar al proceso que est usando la CPU a abandonarla para planificar otro proceso (polticas expulsoras). La existencia o no de ms de una poltica de planificacin, ajustadas a los diferentes tipos de procesos, y cmo se combinan. En los sistemas de propsito general coexisten procesos de tipos diferentes que pueden requerir polticas especficas, por lo que se suelen definir varias polticas particulares, cada una adecuada a un tipo de procesos, y una poltica global aplicable al conjunto de tipos de procesos (planificacin multinivel). Adems, en multiprocesadores, en qu procesador se ejecuta el proceso, lo que estudiaremos en la Seccin 3.5.
Abordaremos primero los criterios de seleccin de un proceso y luego consideraremos los aspectos de expulsin y la planificacin multinivel.
3.4.1.1 FCFS
Se elige el proceso a entrar en la CPU segn el tiempo que lleva esperando; es decir, en el orden de entrada al estado de preparados. La implementacin de esta poltica es sencilla: la cola de procesos preparados se gestiona con disciplina FIFO. Presenta el problema del efecto convoy. La existencia de programas muy largos
P3 P2 P1
0
10 11 12
63
dispara el tiempo de finalizacin, la latencia y el tiempo de espera medios. En el ejemplo de la Figura 3.3 se muestra el orden de ejecucin de acuerdo a FCFS de tres procesos que llegan en el orden P1, P2, P3. La latencia media, Tr, es (0+10+11)/3= 7 unidades de tiempo, frente a una Tr mnima de 1 que se obtendra si los procesos se planificasen en orden P2, P3, P1.
n+1 = tn + (1)n
donde 01. Al trabajar con estimaciones en lugar de duraciones reales, el xito de la planificacin depender de lo adecuado que sea el modelo de estimacin.
3.4.1.3 Prioridades
A cada proceso se le asocia una prioridad, a partir de las cual se establece su orden para la planificacin. Para igual prioridad, suele tomarse orden FCFS. Habitualmente, la prioridad de un proceso se almacena como un entero positivo dentro de su PCB, que se inserta en la cola de preparados de acuerdo a ella para facilitar la labor del scheduler (en planificacin de corto plazo). La prioridad se establece inicialmente en funcin de determinados parmetros, como el propietario del proceso, el tipo del proceso (por ejemplo, procesos del sistema, de tiempo real, batch), su tamao, los recursos que requiere, etc. La prioridad inicial puede usarse para planificar a largo plazo.
64
Si la prioridad inicial no cambia durante la ejecucin del proceso y sta se usa para planificar a corto plazo, se obtiene una poltica de prioridades estticas. Un problema de las prioridades estticas es que algunos parmetros, fundamentalmente los referidos al consumo de recursos, y en particular al tiempo de CPU y duracin de sus intervalos, no se conocen a priori, por lo que la prioridad puede no ser indicativa de comportamiento del programa. Otro problema es el riesgo de inanicin para los procesos de prioridad baja, lo que adems puede tener consecuencias para el propio sistema operativo: si un proceso de prioridad alta realiza espera activa para entrar en una seccin crtica ocupada por un proceso de prioridad menor, la seccin crtica nunca se liberar2. En general, resulta ms adecuada una planificacin por prioridades dinmicas. Un proceso se crea con una prioridad base inicial, y su prioridad dinmica se recalcula peridicamente, fundamentalmente de acuerdo al gasto de CPU del proceso. La prioridad de los procesos que ms tiempo de CPU han gastado disminuye en relacin a la prioridad de los procesos que han gastado menos3. Existen fundamentalmente dos formas de ajustar la prioridad: (a) Peridicamente, como por ejemplo UNIX System V, UNIX 3.2BSD y Linux, que ajustan conjuntamente las prioridades de todos los procesos cada cierto tiempo.
(b) Aperidicamente, como por ejemplo Windows NT y UNIX SVR4, que aprovecha, la transicin de estado de un proceso para recalcular la prioridad
3.4.2 Expulsin
Los algoritmos vistos hasta ahora se aplican en el momento en que se decide planificar un proceso, cuando la CPU queda libre. En principio, esto ocurre cuando el proceso que la ocupa se bloquea o termina. Si no hay ms oportunidades para planificar, las polticas de planificacin resultantes se denominan no expulsoras. Estas polticas permiten el abuso de CPU por parte de procesos orientados a clculo, en detrimento de los orientados a entrada/salida. Pinsese por ejemplo en un proceso que ejecute un bucle de espera activa sin que se cumpla nunca la condicin de salida. La posibilidad alternativa es forzar la expulsin del proceso que ocupa la CPU en determinadas situaciones, llevndolo a la cola de preparados y provocando una nueva planificacin (Figura 3.4). Estas polticas de planificacin expulsoras tienden a
2 3
Este fenmeno se conoce como inversin de prioridad. Obsrvese que SJF a corto plazo es un caso particular de planificacin por prioridades dinmicas.
65
incrementar la equidad en el reparto de la CPU y contribuyen a evitar la inanicin de los procesos. Fundamentalmente, hay dos formas de provocar la expulsin del proceso, que no son excluyentes: (a) expulsin por evento (transicin de un proceso a preparados,4 ya sea por desbloqueo o por creacin de uno nuevo), que permite la planificacin de procesos de tiempo real.
(b) expulsin por tiempo, que conduce a sistemas de tiempo compartido. Las polticas expulsoras, como las no expulsoras, pueden aplicar cualquiera de los algoritmos de seleccin del proceso descritos anteriormente.
nuevo proceso cola preparados expulsin CPU finalizado
DISP1 . . . . . . DISPn
A menudo, cuando se habla de planificacin expulsora en un sistema operativo, se refiere exclusivamente a esta forma de expulsin.
66
general, y es un mecanismo necesario cuando se tienen procesos de tiempo real5. En este caso se requiere adems un mecanismo de prioridades que asigne la mxima prioridad a los procesos de tiempo real, permitindoles tiempos de respuesta acotados Una poltica particular de expulsin por eventos es la que resulta de aplicar expulsin al algoritmo SJF. El algoritmo as obtenido, SRTF (Primero el de Menor Tiempo Restante), presenta una planificacin sobre la base de los tiempos de CPU que les restan a los procesos para finalizar.
Procesos de tiempo real son aqullos que tienen establecidas determinadas restricciones en sus tiempos de respuesta o finalizacin, y por lo tanto su ejecucin no puede verse afectada en sistemas multiprogramados por circunstancias como la carga del sistema. Ms adelante dedicaremos un apartado a la planificacin especfica de tiempo real. Obsrvese que para un q muy grande (q), RR tiende a comportarse como FCFS no expulsora.
67
De aqu resulta obvio que q debera ser lo ms pequeo posible, con el fin de minimizar la latencia. Para q0, tr0, lo que optimiza el rendimiento medido bajo este criterio. En el lmite, cada proceso ve el sistema como si dispusiese de un procesador ideal dedicado exclusivamente a la ejecucin de ese proceso con velocidad 1/N de la del procesador real de la mquina. Este concepto se conoce como procesador compartido. Pero la latencia no es el nico criterio de rendimiento. Para calcular la eficiencia, hay que considerar la sobrecarga introducida en el cambio de contexto, (tiempo de ejecucin del scheduler y el dispatcher, tcs, que definamos como trabajo no til)7. Para una carga suficientemente grande de procesos orientados a clculo, el nmero de cambios de contexto por unidad de tiempo tender a 1/q, por lo que el tiempo perdido por los cambios de contexto8 ser tcs/q. En el clculo de la eficiencia temporal, de acuerdo a lo definido previamente, el trabajo til por unidad de tiempo, que determina precisamente la eficiencia del sistema, ser: Ef t = 1 t cs q Como puede observarse, cuando q tiende a tcs, la eficiencia tiende a cero9, ya que el nmero de cambios de contexto es muy grande, y por lo tanto tambin el tiempo gastado en realizarlos. En consecuencia, otro criterio en la implementacin de un sistema de tiempo compartido es establecer un quantum lo suficientemente grande con respecto al tiempo de cambio de contexto: q >> tcs Para encontrar un compromiso entre este criterio y el de procesador compartido hay que basarse en el comportamiento de los programas, que matiza la expresin de la eficiencia anterior. En efecto, con una distribucin tpica de la duracin de los intervalos de CPU, es posible elegir un quantum no demasiado grande que permita a los procesos agotar la mayora de sus intervalos de CPU (zona sombreada de la Figura 3.5), manteniendo reducido el nmero de cambios de contexto adicionales provocados por el tiempo compartido.
El clculo de los retardos introducidos por los cambios de contexto requerira un anlisis mucho ms profundo, ya que, como consecuencia de la prdida de localidad, un cambio de contexto tiende a incrementar a corto plazo el nmero de fallos en el acceso al TLB y a memoria virtual. Suponiendo que los procesos son orientados a clculo.
8 9
Obsrvese que para q<tcs esta frmula carece de sentido, ya que se obtienen valores negativos para la eficiencia. En la prctica, el sistema slo ejecutara cambios de contexto.
68
Como la evolucin tecnolgica est proporcionando incrementos enormes en la velocidad de ejecucin de los procesadores, y el tiempo de cambio de contexto puede considerarse como que se mantiene constante, la condicin de q >> tcs se consigue cada vez con mayor amplitud, lo que permite a los sistemas operativos acercarse al ideal de procesador compartido.
frecuencia
(2)
69
una cola de mayor prioridad reciba mayor nmero de planificaciones que una de menor prioridad. Si no es posible determinar estticamente clases de procesos, la planificacin multinivel tambin tiene inters si se permite a los procesos cambiar de cola (planificacin multinivel con colas realimentadas). En la planificacin de colas realimentadas es preciso definir adicionalmente los criterios de paso de una cola a otra. Por ejemplo, se podra asociar prioridad creciente y quantum decreciente a las clases de procesos de la Figura 3.6. Los procesos comenzaran en una clase determinada y pasaran a la inferior o a la superior dependiendo de si agotan el quantum o se bloquean antes, respectivamente. Los procesos orientados a CPU tenderan a caer a las clases inferiores y se ejecutaran con poca frecuencia pero con un quantum mayor, al contraro de los interactivos. Esto tiene efectos positivos sobre el rendimiento, equilibrando el tiempo de respuesta y la prdida de eficiencia ocasionada por las expulsiones. Como ejemplo, en UNIX los procesos de tiempo compartido se gestionan mediante colas realimentadas. Se asocia una cola a cada nivel de prioridad y el paso entre colas se gestiona a medio plazo en funcin del gasto de CPU de cada proceso. cola clase 1
3.5
Planificacin en multiprocesadores
Consideraremos un multiprocesador como una mquina con un conjunto de procesadores que comparten un mismo espacio de direcciones de memoria fsica. Por esta razn, tambin se les llama multiprocesadores de memoria compartida10 o
Shared-memory Multi-Processor, SMP. No debe confundirse con el trmino Symmetric MultiProcessing, que utiliza el mismo acrnimo.
10
70
fuertemente acoplados, a diferencia de los multicomputadores, donde los elementos de proceso no comparten memoria fsica, y que no vamos a tratar aqu. Sin embargo hay que recordar que en un multiprocesador moderno existen niveles de memoria cache (normalmente dos, interna y externa) privados para cada procesador, lo que, como veremos, tiene relevancia para la eleccin de una poltica de planificacin. Las aplicaciones modernas estn constituidas por threads o flujos de ejecucin que se comunican por memoria compartida. Los sistemas operativos tradicionales planifican procesos. Para obtener un buen rendimiento es deseable que los sistemas operativos de hoy en da, en particular los sistemas multiprocesador, reconozcan el thread como entidad planificable. En lo que sigue utilizaremos en general el trmino proceso para referirnos a la entidad planificable, salvo cuando sea pertinente distinguir entre procesos y threads. La planificacin de procesos en un sistema multiprocesador presenta dos componentes: Planificacin temporal, que define la poltica de planificacin en cada procesador individual, exactamente igual que si de un monoprocesador se tratase, salvo por el hecho de que en los multiprocesadores es menos relevante para el rendimiento la poltica que se elija, y tanto menos cuanto ms procesadores. En la planificacin temporal se decide qu procesos se ejecutan. Planificacin espacial, que define cmo se asignan los procesadores a los diferentes procesos. En la planificacin espacial se decide en qu procesadores se ejecutan los procesos.
(2)
71
compartida como mecanismo de comunicacin), por lo que la carencia de recursos para planificar alguno de los threads puede provocar que otros threads de la aplicacin que s disponen de procesador no progresen y consuman ciclos de CPU esperando por condiciones que deberan satisfacer los threads no planificados, lo que conduce a pobres resultados en cuanto a latencias y tiempos de finalizacin. Este hecho invita a implementar polticas de asignacin de procesadores que permitan a una aplicacin disponer de los recursos necesarios para que la ejecucin de la aplicacin progrese adecuadamente. El criterio de proporcionar recursos exclusivos para la aplicacin, en vez de compartidos, tiene como contrapartida la posibilidad de que gran parte de ellos queden ociosos o con un uso poco eficiente, debido a que el sistema operativo no conoce a priori el perfil de necesidades de la aplicacin11. Las polticas de planificacin en multiprocesadores atienden a combinaciones de estos criterios.
11
De hecho, la tendencia es dejar a la aplicacin gran parte de la responsabilidad de la planificacin. La idea es que el sistema operativo asigne recursos de proceso en funcin de las necesidades de la aplicacin, mientras que la librera de threads (en el espacio de usuario) planifica el uso de los recursos entre los threads de la aplicacin de acuerdo a sus propios criterios, frecuentemente especificados en el cdigo mediante llamadas explcitas, como cesin del procesador a otro thread, modificacin de la prioridad, etc. La utilizacin de mecanismos de colaboracin entre el sistema operativo y la librera contribuye a optimizar la utilizacin de los recursos.
72
3.6
Procesos de tiempo real (en este contexto es ms habitual el trmino tareas de tiempo real) son aquellos cuya correccin no slo depende del resultado, sino tambin de si lo producen antes de un plazo determinado de tiempo. En otras palabras, el tiempo de finalizacin est acotado. Esta restriccin implica que, en general, la ejecucin de una tarea de tiempo real no puede verse afectada por circunstancias como la carga
73
del sistema. Ejemplos de tareas de tiempo real abundan en los sistemas de control, que disponen de un lmite mximo de tiempo para evaluar una entrada (por ejemplo, un sensor trmico) y producir la respuesta adecuada (por ejemplo, regular una vlvula). Son numerosos los campos donde se requiere proceso de tiempo real: control de procesos industriales, fabricacin inteligente, robtica, vehculos autnomos, control de trfico, telecomunicaciones, electrodomsticos, multimedia, prediccin meteorolgica En un sistema de propsito general los procesos de tiempo real conviven con procesos de tiempo compartido o procesos del propio sistema, por lo que es muy difcil garantizar siempre el cumplimiento de los plazos. Adems, los sistemas operativos de propsito general de hoy en da no garantizan una fiabilidad absoluta, por lo que, en general, no pueden usarse para sistemas crticos. Sistemas como UNIX SVR4 o Linux poseen una clase de procesos de tiempo real, pero la existencia de trozos de cdigo no expulsable en el ncleo hace que sea difcil acotar los tiempos de respuesta. Por lo tanto, a veces se precisan sistemas de tiempo real con polticas de planificacin especficas. Introduciremos las siguientes definiciones: Instante de liberacin, Fi. Una tarea i no puede comenzar a ejecutarse antes del instante Fi (antes estar bloqueada o no se habr creado). Tiempo de ejecucin, ei. Tiempo que necesita la tarea i usando los recursos de la mquina para producir una respuesta. Plazo, Di. Instante de tiempo en el que la tarea i debe haber respondido. Es condicin necesaria: ei < D i F i Periodo, Pi. Tiempo entre dos instantes de liberacin de la tarea i. Habitualmente, Pi= Di Fi Tarea peridica. Pi es constante. Tarea aperidica. Pi es variable. Puede estar acotado o no. Si est acotado, una tarea aperidica se convierte en peridica asignndole como periodo su cota de periodo menor. Algunas aplicaciones de tiempo real exigen que el plazo de tiempo se cumpla siempre, por las graves consecuencias que su incumplimiento pudiera tener. Esto ocurre por ejemplo cuando un sistema de control como el comentado regula un actuador en una central nuclear o en una aeronave. A estos sistemas se les denomina
74
sistemas de tiempo real crticos (hard real time). En otras aplicaciones pueden permitirse incumplimientos espordicos de los plazos. Por ejemplo, un sistema de descompresin de vdeo puede congelar la imagen durante unos cuantos cuadros si no es capaz de ejecutar el algoritmo de decomprensin a tiempo en un momento dado, sin ms consecuencias mientras esto no ocurra con excesiva frecuencia. A estos sistemas se les denomina sistemas de tiempo real acrticos (soft real time). En cuanto al cumplimiento de los plazos, en algunos sistemas la ejecucin de las tareas tiene un plazo firme, en el sentido de que si se rebasa el plazo, an mnimamente, la respuesta es intil o incluso contraproducente. En cambio, los sistemas de plazo flexible admiten algn retraso en el incumplimiento del plazo. El valor de la respuesta en estos sistemas disminuye progresivamente por encima del plazo. Es habitual que una aplicacin de tiempo real admita un plazo flexible con un lmite. Por ejemplo, en prediccin meteorolgica se define un plazo para obtener la prediccin con el objetivo de poder informar con tiempo suficiente (por ejemplo 24 horas). Si no se dispone de la prediccin en ese plazo, informar de la prediccin con retraso sigue siendo vlido, pero el valor de la prediccin disminuye con el retraso y es nulo en 24 horas, cuando el instante predicho pasa a estar en el pasado. 12 Cada vez ms, muchos sistemas de tiempo real son componentes de otros sistemas, en los que realizan funciones de control. Se les denomina sistemas empotrados (embebded systems). Generalmente el sistema de control no se percibe desde fuera. Los sistemas empotrados empiezan a estar presentes en todo tipo de mquinas y dispositivos en la industria y en el hogar. Por ejemplo, en automocin son sistemas empotrados los sistemas de control de frenada y de estabilidad. Finalmente hay que advertir que en un sistema de tiempo real las tareas pueden interaccionar entre s, comunicndose informacin. Sin embargo, debido al carcter introductorio de este texto y dada la complejidad de este aspecto, no lo vamos a considerar aqu y supondremos que las tareas son independientes.
e
i
Pi < 1
12
En otros casos el tipo de plazo depende de si el sistema admite o no un funcionamiento degradado o si debe proporcionar un estado de parada segura cuando no cumple el plazo.
75
Con tareas peridicas es posible un anlisis de viabilidad esttico (a priori). Si existen tareas aperidicas, es preciso convertirlas en peridicas con periodo el mnimo con el que la tarea pueda liberarse. En caso contrario, el anlisis slo puede hacerse en tiempo de ejecucin. El criterio de planificacin viable es absoluto para los sistemas de tiempo real crtico. En sistemas acrticos, si los plazos no se pueden cumplir, los criterios a aplicar se dependen del tipo de sistema. En sistemas de plazo firme, el criterio es minimizar el nmero de retrasos; por el contrario, en sistemas de plazo flexible, el criterio es minimizar la magnitud de los retrasos.
76
sistemas de propsito general, se denomina planificacin dinmica del mejor resultado (best-effort).
3.7
Ejemplos de planificacin
13
77
nueva_prioridad= prioridad_base + p_cpu/2 La evolucin de la prioridad dinmica de un proceso a travs del tiempo puede verse en la Figura 3.7. Se observa cmo la prioridad de un proceso sube suave y peridicamente (T vale tpicamente 1 segundo) hacia su prioridad base cuando no consume CPU, para caer bruscamente despus de ser planificado. Esta poltica presenta un par de problemas: La prioridad de un proceso, al incrementarse en funcin del tiempo sin ser planificado, asciende al mismo ritmo en situaciones de carga elevada, en detrimento de los procesos con una prioridad base menor, que tienden a sufrir inanicin. Para rectificar este comportamiento, 4.3BSD incorpora a la expresin de clculo de la prioridad el grado de multiprogramacin del sistema. Recalcular las prioridades de todos los procesos una vez por segundo requiere un gasto elevado de CPU, mayor cuanto ms cargado est el sistema.
prioridad () Prio. base planificado
T T
127
planificado
T t
Figura 3.7. Evolucin de la prioridad de un proceso en UNIX a lo largo del tiempo La prioridad dinmica tambin se puede modificar a partir de la llamada al sistema nice(). El shell de UNIX proporciona tambin un comando nice para ejecutar un programa con una prioridad base inicial diferente a la establecida, lo que permite una forma de planificacin a largo plazo. Finalmente, en UNIX podemos considerar como planificacin a medio plazo el swapping de procesos. El proceso swapper (cuyo identificador es el 0) se encarga de sacar procesos de memoria cuando el paginador tiene dificultades para encontrar marcos de memoria libres14. La eleccin del proceso suele basarse en criterios de tiempo que el proceso lleva en memoria y cantidad de memoria asignada.
14
78
15
79
muestra los rangos de prioridades de un thread perteneciente a un proceso con una prioridad base de 6.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Figura 3.8. Rangos de prioridades para un thread de un proceso con prioridad base 6 en Windows NT. En un multiprocesador con N procesadores, la planificacin de threads en Windows 2000 se basa en dos criterios: (1) afinidad al procesador, y (2) asignar N1 procesadores a los N1 threads ms prioritarios y el restante a todos los dems. Ms informacin puede encontrarse en [SOL00].
3.8
Bibliografa
[STA05] (captulos 9 y 10) es el texto que mejor se adapta al contenido de este captulo, incluyendo un breve estudio de la planificacin en UNIX y Windows. Otros textos interesantes son: [SIL08], y [TAN08]. Para la planificacin en multiprocesadores puede consultarse [STA05] como texto general. [BLA90] es una referencia para quien desee profundizar ms en el tema. En cuanto a la planificacin en sistemas de tiempo real, si bien hay muchos textos especficos, [SAN05] (captulo 8) proporciona un buen complemento a lo visto aqu. La bibliografa sobre UNIX es muy amplia: [BAC86] (captulo 8) y [LEF89] (captulo 4) describen la planificacin de procesos en los denominados sistemas UNIX tradicionales (System V y 4.3BSD respectivamente); [GOO94] (captulo 4) trata el SVR4, y [VAH96] (captulo 5) es un compendio de todos ellos. [CUS93, SOL98, SOL00] son las referencias para Windows.
80
3.9 1
Ejercicios
Dados cuatro programas, se sabe que van a consumir los siguientes tiempos de CPU: A, 9 ms; B, 3 ms; C, 7 ms, y D, 5 ms. Los programas no se bloquean por E/S ni por ninguna otra causa. Considrese un sistema operativo donde los programas se ejecutan en el orden que llegan: A, B, C, D. Si los cuatro llegan en el mismo milisegundo: (a) Cul es el tiempo medio de respuesta (latencia) de estos programas en este sistema operativo? Cul es el tiempo medio de finalizacin?
(b) En qu orden deberan entrar a ejecutarse para que el tiempo de respuesta fuese el mnimo? Calcular dicho valor mnimo. (c) Cmo influye sobre el tiempo de respuesta el hecho de modificar la planificacin de procesos introduciendo tiempo compartido mediante RoundRobin? Calcular la cota mxima del tiempo de respuesta para (c1) q = 1 ms, y (c2) q = 2 ms.
(d) Considerando una planificacin de procesos Round-Robin con quantum de 1 ms, calcular el tiempo medio de respuesta para esos cuatro procesos y su tiempo medio de finalizacin.
En un sistema tpico de hoy en da, con un procesador de ms de 1 GHz y con un grado de multiprogramacin de cerca de 1000 procesos, donde un cambio de contexto supone ejecutar unos 1000 ciclos de reloj extras, comprobar si es posible soportar el concepto de procesador compartido. Para ello, estimar una cota del tiempo de respuesta suficientemente baja y considerar que la prdida de eficiencia sea razonable. En un sistema de tiempo compartido, la frecuencia de la interrupcin de reloj es de 100 Hz. Se han hecho medidas para ajustar el quantum y se ha observado la siguiente distribucin de intervalos de CPU: Menos de 1 tick Entre 1 tick y 2 ticks Entre 2 ticks y 3 ticks Entre 3 ticks y 4 ticks Ms de 4 ticks 25% 35% 35% 2% 3%
81
(a)
(b) Para un tiempo medio de cambio de contexto de 0,02 ms y para el valor de quantum elegido, qu prdida aproximada de rendimiento (eficiencia) de CPU se produce por el tiempo compartido? (c) Calcular el tiempo de respuesta medio con este quantum si por trmino medio hay 10 procesos en la cola de preparados.
(d) Calcular la cota del tiempo de respuesta con grado de multiprogramacin 100.
Si t es el tiempo medio de ejecucin de los procesos entre dos operaciones de E/S, discutir los efectos que tiene sobre los parmetros de rendimiento la eleccin de q, para los casos: (a) q ~ t, (b) q << t, y (c) q >> t.
Los cronogramas de la Figura 3.9 representan la ejecucin de tres procesos en cuatro sistemas operativos diferentes. (a) Determinar las caractersticas de la planificacin de procesos correspondientes a cada uno de los cronogramas en cuanto a si es FCFS o por prioridades (estticas), o si es expulsora (por evento o por tiempo). (b) Calcular en cada caso algunos parmetros del rendimiento del sistema: tiempos medios de respuesta, finalizacin, y tasas de CPU. Suponer despreciable el tiempo de cambio de contexto. La tabla siguiente muestra un conjunto de procesos en la cola de preparados, identificados segn su orden de llegada, con sus respectivos intervalos de CPU y prioridades (mayor valor, mayor prioridad).
Proceso 1 2 3 4 5 6 7 Intervalo de CPU 10 1 6 5 3 2 3 Prioridad 3 1 3 4 2 1 3
Suponiendo que todos los procesos llegan en el mismo tick, dibujar el diagrama de ejecucin e indicar el tiempo medio de respuesta en los siguientes casos:
82
ticks
Cronograma A
P3 P2 P1 0 4 8 12 16 20 24 28 ticks
Cronograma B
P3 P2 P1 0 4 8 12 16 20 24 28 ticks
Cronograma C
P3 P2 P1 0 4 8 12 16 20 24 28 ticks
Cronograma D
Preparad o
En ejecucin
Bloquead o
83
(d) Prioridades dinmicas, con prioridad inicial la indicada. Cuando agotan el quantum (2 ticks) se les expulsa y disminuye la prioridad en 1. (e) Multinivel, considerando los procesos 2, 3, 5, 6 interactivos y los 1, 4, 7 batch. De cada 10 ticks los 6 primeros son para procesos interactivos (con gestin RR y q=1) y el resto para batch (con poltica FCFS).
La tabla muestra un conjunto de procesos llegados a la cola de preparados, indicando para cada uno su identificador, el tick de llegada, el intervalo de CPU que necesita, el tiempo que estar bloqueado cada vez, y su prioridad (mayor valor, mayor prioridad). Ntese que hay dos tipos de procesos: los que, agotado su intervalo de CPU, terminan (el 1 y el 6), y los que cclicamente se bloquean durante un tiempo y vuelven a la CPU (el resto). Estos ltimos no terminan nunca.
Intervalo de CPU 4 1 6 5 3 2 3 Tiempo bloqueado (termina) 6 5 4 3 (termina) 10
Proceso 1 2 3 4 5 6 7
Tick llegada 0 0 10 15 17 20 20
Prioridad 3 1 3 4 2 1 3
(a)
Dibujar el cronograma de ejecucin durante los primeros 40 ciclos para planificacin de tiempo compartido combinado con prioridad y quantum 2 (a1) sin expulsin por evento, y (a2) con expulsin por evento.
(b) Calcular en cada caso el porcentaje del tiempo de CPU que no hay nadie en ejecucin. En un sistema de tiempo real con las siguientes tareas (en orden decreciente de prioridad): Tarea T. de ejecucin Periodo T1 5 10 T2 8 20 T3 5 55
84
(a)
(b) Dibuja el cronograma resultante de aplicar planificacin (1) RM, y (2) EDF. Comprobar en ambos casos si se cumplen siempre los plazos.
en exclusin mutua utilizando cerrojos de espera activa mediante primitivas lock() y unlock(). El sistema operativo utiliza planificacin con expulsin por la llegada de un proceso a la cola de preparados y prioridades estticas. Dos procesos, A y B, se ejecutan en dicho sistema. El proceso A se lanza en el instante de tiempo T con prioridad 7 y el proceso B se lanza en el instante T+4 ms con prioridad 9 (mayor valor, mayor prioridad). Aparte del proceso nulo, no hay otros procesos en el sistema. El cdigo que ejecutan los procesos es el siguiente:
(a) Dibujar el diagrama de ejecucin, indicando tambin cundo se est ejecutando la seccin crtica de cdigo. (b) Considerar ahora que la ejecucin se produce en un sistema operativo con prioridades dinmicas y expulsin por tiempo (adems de por evento) y quantum de 5 ms. Cuando un proceso cumple su quantum, su prioridad se decrementa en 1. Considerando que el resto de las condiciones son las mismas que las del primer apartado, dibujar ahora el cronograma de la nueva ejecucin.