21
Planificación multiprocesador y de tiempo real Planificación multiprocesador Planificación de tiempo real Planificación en Linux Planificación en UNIX SVR4 Planificación en Windows Planificación en Windows En sistemas operativos , un hilo de ejecución, hebra o subproceso es la unidad de procesamiento más pequeña que puede ser planificada por un sistema operativo. La creación de un nuevo hilo es una característica que permite a una aplicación realizar varias tareas a la vez (concurrentemente ). Los distintos hilos de ejecución comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situación de autenticación, etc. Esta técnica permite simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones simultáneamente. Un hilo es simplemente una tarea que puede ser ejecutada al mismo tiempo con otra tarea. Procesos Un proceso es un programa en ejecución. Existen 3 estados en los que puede encontrarse un proceso, estos son: "Listo", "Bloqueado" y "En ejecución". 1. Planificación multiprocesador Cuando un sistema computador contiene más de un procesador, el diseño de la función de planificación plantea varias cuestiones nuevas. Se comienza con un breve resumen de los multiprocesadores y luego se ve que las consideraciones son

Planificación Procesos

Embed Size (px)

DESCRIPTION

Sistemas Operativos

Citation preview

Page 1: Planificación Procesos

Planificación multiprocesador y de tiempo real Planificación multiprocesador Planificación de tiempo real Planificación en Linux Planificación en UNIX SVR4Planificación en WindowsPlanificación en Windows

En sistemas operativos, un hilo de ejecución, hebra o subproceso es la unidad de procesamiento más pequeña que puede ser planificada por un sistema operativo.

La creación de un nuevo hilo es una característica que permite a una aplicación realizar varias tareas a la vez (concurrentemente). Los distintos hilos de ejecución comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situación de autenticación, etc. Esta técnica permite simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones simultáneamente.Un hilo es simplemente una tarea que puede ser ejecutada al mismo tiempo con otra tarea.

Procesos Un proceso es un programa en ejecución. Existen 3 estados en los que puede encontrarse un proceso, estos son: "Listo", "Bloqueado" y "En ejecución".

1. Planificación multiprocesador

Cuando un sistema computador contiene más de un procesador, el diseño de la función de planificación plantea varias cuestiones nuevas. Se comienza con un breve resumen de los multiprocesadores y luego se ve que las consideraciones son bastante diferentes cuando la planificación se hace a nivel de proceso y cuando se hace nivel de hilo.

Clasificación de sistemas multiprocesador

• Débilmente acoplado, o procesador distribuido, o cluster – Cada procesador tiene su propia memoria y canales de E/S

• Procesadores de funcionalidad especializada – Ej: procesadores de E/S – Controlados por un procesador maestro.

• Multiprocesamiento fuertemente acoplado

Page 2: Planificación Procesos

– Los procesadores comparten memoria principal. – Bajo el control integrado del sistema operativo.

GRANULARIDADPara diferenciar la arquitectura de los multiprocesadores con las demás, empezamos con la granularidad de sincronización.

Es considerar la granularidad de sincronización, o frecuencia de sincronizaciónPodemos distinguir cinco categorías de paralelismo que difieren en el grado de granularidad.

Podemos distinguir cinco categorías de paralelismo que difieren en el grado de granularidad.

Paralelismo Independiente

- Sin sincronización entre los procesos.- Cada uno representa un trabajo o aplicación independiente y separada- Si se va a compartir cualquier información o archivo, los sistemas

individuales deben de estar conectados entre sí a través de una red, formando un sistema distribuido.

Paralelismo de grano grueso y muy grueso

- hay sincronización entre procesos, pero a un nivel muy burdo- Se trata como procesos concurrentes que ejecutan en un

monoprocesador con multiprogramación.- Puede proporcionarse en multiprocesador con pocos cambios en Sw de

usuario.

Paralelismo de grano medio

- Necesidades de comunicación e interacción mayores. - Aplicación = colección de hilos. - Los hilos interactúan entre sí y se coordinan con frecuencia.

Paralelismo de grano fino

- aplicaciones altamente paralela- Área muy especializada y fragmentada, con muchas propuestas

diferentes.

ASPECTOS DE DISEÑO

En un multiprocesador la planificación involucra tres aspectos interrelacionados:

1. La asignación de procesos a procesadores. 2. El uso de la multiprogramación en cada procesador individual. 3. La activación del proceso, propiamente dicha.

Page 3: Planificación Procesos

1. Asignación de procesos a procesadores

El objetivo de la asignación de procesos a procesadores es decidir en qué procesador se debería ejecutar un proceso de tal forma que se equilibré la carga total del sistema y se optimice el rendimiento. En definitiva, lo que se debe evitar es que un nodo esté inactivo mientras hay procesos esperando a ejecutar.El enfoque más simple de la planificación consiste en tratar cada proceso como un recurso colectivo y asignar procesos a procesadores por demanda. Surge la cuestión de si la asignación debería ser estática o dinámica.

Asignación estática: Cuando un proceso pasa a estado activo por primera vez, se le asigna un determinado procesador (el que menor carga de trabajo tenga en ese momento) al que se asocia hasta fin de ejecución. Por tanto, un proceso tiene que pasar a estado activo empleando el mismo procesador hasta fin de ejecución. Dicho de otra manera, no es posible migrar procesos de un procesador a otro incluso si hay procesadores ociosos.

Asignación dinámica: En este caso, nuestros procesos en estado preparado pueden cambiar de procesador para pasar a estado activo si resulta que el último procesador en el que se ejecutó está ocupado y existe un procesador ocioso. Este método de asignación permite la migración de procesos de un procesador a otro, llevando a cabo un balanceo de carga de procesos entre los procesadores existentes. No obstante, la migración de un proceso de un procesador a otro es costosa. Por tanto, siempre que sea posible se intentará permanecer en el mismo procesador para no incurrir en la penalización asociada a los fallos de caché que resultan de la migración de procesos.

Asignación estática:

Si un proceso se vincula permanentemente a un procesador desde su activación hasta que concluye, entonces se mantiene una cola a corto plazo dedicada por cada procesador

Una ventaja de esta estrategia es que puede haber menos sobrecarga en la función de planificación, dado que la asignación a un procesador se realiza una vez y para siempre.

Una desventaja de la asignación estática es que un procesador puede estar ocioso, con su cola vacía, mientras otro procesador tiene trabajo acumulado. Para evitar esta situación, puede utilizarse una cola común

Asignación Dinámica

Todos los procesos van a una cola global y son planificados sobre cualquier procesador disponible. Así, a lo largo de la vida de un proceso, puede ser ejecutado en diferentes procesadores en diferentes momentos. En una

Page 4: Planificación Procesos

arquitectura de memoria compartida fuertemente acoplada, la información de contexto de todos los procesos estará disponible para todos los procesadores, y por lo tanto el coste de planificación de un proceso será independiente de la identidad del procesador sobre cual se planifica. Otra opción más, es el balance dinámico de carga, en el que los hilos se mueven de una cola de un procesador a la cola de otro procesador; Linux utiliza este enfoque.

Manera de asignar procesos a procesadores

Independientemente de cómo los procesos se vinculan a los procesadores, se necesita alguna manera de asignar procesos a procesadores. Se han venido usando dos enfoques: maestro/esclavo y camaradas.

Maestro/esclavo Ciertas funciones clave del núcleo del sistema operativo se ejecutan

siempre en un procesador concreto. El maestro es responsable de la planificación de trabajos. Una vez que el proceso está activo, si el esclavo necesita servicio (por

ejemplo, una llamada de E/S), debe enviar una solicitud al maestro y esperar a que el servicio se realice.

Desventajas Un fallo en el maestro hace que falle el sistema completo. el maestro puede llegar a ser un cuello de botella para el rendimiento del

sistema.

Camaradas El núcleo puede ser ejecutado en cualquier procesador Cada procesador se auto-planifica desde la colección de procesos

disponibles. Este enfoque complica el sistema operativo. El sistema operativo debe asegurar que dos procesadores no escogen el

mismo proceso y que los procesos no se extravían por ninguna razón. Deben emplearse técnicas para resolver y sincronizar la competencia en

la demanda de recursos.

2. El uso de la multiprogramación en procesos individuales

Cuando hay muchos procesadores disponibles, conseguir que cada procesador esté ocupado tanto tiempo como sea posible deja de ser lo más importante. En cambio, la preocupación es proporcionar el mejor rendimiento, medio, de las aplicaciones. Una aplicación que consista en varios hilos, puede ejecutar con dificultad a menos que todos sus hilos estén dispuestos a ejecutar simultáneamente.

3. Activación de procesosEl último aspecto de diseño relacionado con la planificación multiprocesador, es la elección real del proceso a ejecutar.

Page 5: Planificación Procesos

PLANIFICACIÓN DE PROCESOS

En los sistemas multiprocesador más tradicionales, los procesos no se vinculan a los procesadores. En cambio hay una única cola para todos los procesadores o, si se utiliza algún tipo de esquema basado en prioridades, hay múltiples colas basadas en prioridad, alimentando a un único colectivo de procesadores. En cualquier caso, el sistema puede verse como una arquitectura de colas multiservidor.

Planificación de Hilos

El poder completo de los hilos se vuelve evidente en un sistema multiprocesador.

En este entorno, los hilos pueden explotar paralelismo real dentro de una aplicación.

Si los hilos de una aplicación están ejecutando simultáneamente en procesadores separados, es posible una mejora drástica de sus prestaciones.

Sin embargo, puede demostrarse que para aplicaciones que necesitan una interacción significativa entre hilos (paralelismo de grano medio), pequeñas diferencias en la gestión y planificación de hilos pueden dar lugar a un impacto significativo en las prestaciones.

Entre las muchas propuestas para la planificación multiprocesador de hilos y la asignación a procesadores, destacan cuatro enfoques generales

1. Compartición de carga.Los procesos no se asignan a un procesador particular. Se mantiene una cola global de hilos listos, y cada procesador, cuando está ocioso, selecciona un hilo de la cola. El término compartición de carga se utiliza para distinguir esta estrategia de los esquemas de balanceo de carga en los que los trabajos se asignan de una manera más permanente

Se mantiene una lista global de hilos preparados Al primer procesador que queda libre, se le asigna primer hilo de lista

Ventajas: Tiende a repartir carga de trabajo entre procesadores Método de selección inmediato Se puede implementar como sistema simétrico

2. Planificación en pandilla.Un conjunto de hilos relacionados que se planifica para ejecutar sobre un conjunto de procesadores al mismo tiempo, en una relación uno-a-uno.

3. Asignación de procesador dedicado. Cada proceso ocupa un número de procesadores igual al número de hilos en el programa, durante toda la ejecución del programa. Cuando el programa

Page 6: Planificación Procesos

termina, los procesadores regresan al parque general para la posible asignación a otro programa.

4. Planificación dinámica. El número de hilos de un proceso puede cambiar durante el curso de su ejecución

Tiene algunas ventajas:• La carga se distribuye uniformemente entre los procesadores, asegurando que un procesador no queda ocioso mientras haya trabajo pendiente.

• No se precisa un planificador centralizado; cuando un procesador queda disponible, la rutina de planificación del sistema operativo se ejecuta en dicho procesador para seleccionar el siguiente hilo.

• La cola global puede organizarse y ser accesible usando cualquiera de los esquemas, incluyendo esquemas basados en prioridad y esquemas que consideran la historia de ejecución o anticipan demandas de procesamiento.

Desventajas

La cola central ocupa una región de memoria a la que debe accederse de manera que se cumpla la exclusión mutua. De manera que puede convertirse en un cuello de botella si muchos procesadores buscan trabajo al mismo tiempo. Cuando hay sólo un pequeño número de procesadores, es difícil que esto se convierta en un problema apreciable. Sin embargo, cuando el multiprocesador consiste en docenas o quizás cientos de procesadores, la posibilidad de que esto sea un cuello de botella es real.

Es poco probable que los hilos expulsados retomen su ejecución en el mismo procesador. Si cada procesador está equipado con una cache local, ésta se volverá menos eficaz.

Si todos los hilos se tratan como un conjunto común de hilos, es poco probable que todos los hilos de un programa ganen acceso a procesadores a la vez. Si se necesita un alto grado de coordinación entre los hilos de un programa, los cambios de proceso necesarios pueden comprometer seriamente el rendimiento.

Tres versiones diferentes de compartición de carga:

• Primero en llegar, primero en ser servido (FCFS). Cuando llega un trabajo, cada uno de sus hilos se disponen consecutivamente al final de la cola compartida. Cuando un procesador pasa a estar ocioso, coge el siguiente hilo listo, que ejecuta hasta que se completa o se bloquea.

Page 7: Planificación Procesos

• Menor número de hilos primero. La cola compartida de listos se organiza como una cola de prioridad, con la mayor prioridad para los hilos de los trabajos con el menor número de hilos no planificados. Los trabajos con igual prioridad se ordenan de acuerdo con qué trabajo llega primero. Al igual que con FCFS, el hilo planificado ejecuta hasta que se completa o se bloquea.

• Menor número de hilos primero con expulsión. Se le da mayor prioridad a los trabajos con el menor número de hilos no planificados. Si llega un trabajo con menor número de hilos que un trabajo en ejecución se expulsarán los hilos pertenecientes al trabajo planificado

2. Planificación de tiempo real

La computación de tiempo real puede definirse como aquella en la que la corrección del sistema depende no sólo del resultado lógico de la computación sino también del momento en el que se producen los resultados.

En general, en un sistema de tiempo real, algunas de las tareas son tareas de tiempo real, y éstas tienen cierto grado de urgencia.

La tarea puede ser clasificada como dura o blanda.

Tarea de tiempo real duro es aquella que debe cumplir su plazo límite; de otro modo se producirá un daño inaceptable o error fatal en el sistema.

Tarea de tiempo real suave tiene asociado un plazo límite deseable pero no obligatorio; sigue teniendo sentido planificar y completar la tarea incluso cuando su plazo límite ya haya vencido.

Tareas de tiempo real es si son periódicas o aperiódicas

Tarea aperiódica tiene un plazo en el cual debe finalizar o comenzar, o puede tener una restricción tanto de su instante de comienzo como de finalización.

Tarea periódica, el requisito puede ser enunciado como «una vez por periodo T» o «exactamente T unidades a parte».

CARACTERÍSTICAS DE LOS SISTEMAS OPERATIVOS DE TIEMPO REALLos sistemas operativos de tiempo real pueden ser caracterizados por tener requisitos únicos en cinco áreas generales

Page 8: Planificación Procesos

Determinismo Un sistema operativo es determinista en el sentido de que realiza operaciones en instantes de tiempo fijos predeterminados o dentro de intervalos de tiempo predeterminados

Reactividad La reactividad se preocupa de cuánto tiempo tarda el sistema operativo, después del reconocimiento, en servir la interrupción.

Control del usuario El control del usuario es generalmente mucho mayor en un sistema operativo de tiempo real que en sistemas operativos ordinarios.

Fiabilidad es normalmente mucho más importante para los sistemas de tiempo real que para los que no lo son.

Operación de fallo suave La operación de fallo suave es una característica que se refiere a la habilidad del sistema de fallar de tal manera que se preserve tanta capacidad y datos como sea posible

Un sistema de tiempo real es estable si, en los casos en los que sea imposible cumplir los plazos de todas las tareas, el sistema cumplirá los plazos de sus tareas más críticas, de más alta prioridad, aunque los plazos de algunas tareas menos críticas no se satisfagan. Para cumplir los requisitos precedentes, los sistemas operativos de tiempo real incluyen de forma representativa las siguientes características

Cambio de proceso o hilo rápido. Pequeño tamaño (que está asociado con funcionalidades mínimas). Capacidad para responder rápidamente a interrupciones externas. Multitarea con herramientas para la comunicación entre procesos como

semáforos, señales y eventos. Utilización de ficheros secuenciales especiales que pueden acumular

datos a alta velocidad. Planificación expulsiva basada en prioridades. Minimización de los intervalos durante los cuales se deshabilitan las

interrupciones. Primitivas para retardar tareas durante una cantidad dada de tiempo y

para parar/retomar tareas. Alarmas y temporizaciones especiales.

Algoritmos de planificación

En un compendio de algoritmos de planificación de tiempo real, se observa que los distintos enfoques de la planificación dependen de:

1. cuando el sistema realiza análisis de planificabilidad2. si se realiza estática o dinámicamente3. si el resultado del análisis produce un plan de planificación de acuerdo al

cual se desarrollarán las tareas en tiempo de ejecución

Page 9: Planificación Procesos

Clases de algoritmos:

Enfoques estáticos dirigidos por tabla. En éstos se realiza un análisis estático de la factibilidad de la planificación. El resultado del análisis es una planificación que determina cuando, en tiempo de ejecución, debe comenzar a ejecutarse cada tarea.

Enfoques estáticos expulsivos dirigidos por prioridad. También se realiza un análisis estático, pero no se obtiene una planificación. En cambio, el análisis se utiliza para asignar prioridades a las tareas, y así puede utilizarse un planificador expulsivo tradicional basado en prioridades.

Enfoques dinámicos basados en un plan. La factibilidad se determina en tiempo de ejecución (dinámicamente) en vez de antes de comenzar la ejecución (estáticamente). Una nueva tarea será aceptada como ejecutable sólo si es posible satisfacer sus restricciones de tiempo. Uno de los resultados del análisis de factibilidad es un plan que se usará para decidir cuándo poner en marcha la tarea.Enfoques dinámicos de mejor esfuerzo. No se realiza análisis de factibilidad. El sistema intenta cumplir todos los plazos y aborta la ejecución de cualquier proceso cuyo plazo haya fallado.

Planificación estática dirigida por tabla es aplicable a tareas que son periódicas. Los datos de entrada para el análisis son: tiempo periódico de llegada, tiempo de ejecución, plazo periódico de finalización, y prioridad relativa de cada tarea. El planificador intenta encontrar un plan que le permita cumplir todos los requisitos de todas las tareas periódicas. Éste es un enfoque predecible pero no flexible, dado que un cambio en cualquiera de los requisitos de las tareas requiere rehacer toda la planificación. El plazo más cercano primero, y otras técnicas de plazos periódicos (expuestas posteriormente) son típicas de esta categoría de algoritmos de planificación.

Planificación estática con expulsión dirigida por prioridad hace uso del mecanismo de planificación expulsivo dirigido por prioridades común a la mayoría de los sistemas multiprogramados que no son de tiempo real. En un sistema que no es de tiempo real, pueden utilizarse en múltiples factores para determinar la prioridad. Por ejemplo, en un sistema de tiempo compartido, la prioridad de un proceso puede cambiar dependiendo de qué consume más, CPU o E/S. En un sistema de tiempo real, la asignación de prioridades está relacionada con las restricciones de tiempo asociadas a cada tarea. Un ejemplo de este enfoque es el algoritmo de tasa monótona (expuesto posteriormente), que asigna prioridades estáticas a las tareas basándose en sus longitudes y sus periodos.

Planificación dinámica basada en un plan cuando llega una nueva tarea, pero antes de que comience su ejecución, se intentará crear un plan que contenga las tareas previamente planificadas así como la nueva. Si la tarea recién llegada puede ser planificada de manera que se cumplan sus plazos sin que ninguna otra tarea planificada anteriormente pierda un plazo, la nueva tarea será aceptada poniéndose en marcha el nuevo plan de planificación.

Page 10: Planificación Procesos

Planificación dinámica de mejor esfuerzo

La planificación dinámica de mejor esfuerzo es en enfoque utilizado en muchos sistemas operativos de tiempo real disponibles comercialmente hoy en día. Cuando llega una tarea, el sistema le asigna una prioridad basada en las características de la misma. De forma característica se utiliza algún tipo de planificación basada en plazos como la planificación del plazo más cercano. Así, las tareas no son periódicas y por tanto no es posible realizar un análisis estático de planificabilidad. Con este tipo de planificación, no sabremos si una determinada restricción de tiempo será satisfecha hasta que venza su plazo o la tarea se complete. Esta es la principal desventaja de esta forma de planificación. La ventaja es que es fácil de implementar

PLANIFICACIÓN POR PLAZOS

En su forma más general, puede utilizarse la siguiente información de cada tarea:

Tiempo de activación. Momento en el cual la tarea pasa a estar lista para ejecutar. En el caso de una tarea repetitiva o periódica se tratará de una secuencia de tiempos conocida de antemano. En el caso de una tarea aperiódica, este tiempo puede ser conocido previamente, o el sistema operativo sólo podrá ser consciente de la tarea cuando ésta pase a estar lista.

Plazo de comienzo. Momento en el cual la tarea debe comenzar.

Plazo de conclusión. Momento para el cual la tarea debe estar completada. Las aplicaciones de tiempo real típicas tendrán plazos de comienzo o bien plazos de conclusión, pero no ambos.

Tiempo de proceso. Tiempo necesario para ejecutar la tarea hasta su conclusión. En algunos casos estará disponible, en otros, el sistema operativo lo estimará como una media exponencial (definida en el Capítulo 9), y aún en otros sistemas de planificación, esta información no se utiliza.

Recursos requeridos. Conjunto de recursos (distintos del procesador) que la tarea necesita durante su ejecución.

Prioridad. Mide la importancia relativa de la tarea. Las tareas de tiempo real duro pueden tener una prioridad «absoluta», provocando que el sistema falle si algún plazo no se cumple. Si el sistema debe continuar ejecutando sin importar lo que suceda, entonces pueden asignarse prioridades relativas, tanto a las tareas de tiempo real duro como suave, que el planificador utilizará como guía.

Estructura de subtareas. Una tarea puede ser descompuesta en una subtarea obligatoria y una subtarea opcional. Sólo la subtarea obligatoria posee un plazo duro.

Page 11: Planificación Procesos

Hay varias dimensiones en la función de planificación de tiempo real en las que se tienen en consideración los plazos: qué tarea ejecutar a continuación, y qué tipo de expulsión se permite.

La expulsión es el otro factor crítico de diseño.

PLANIFICACIÓN DE TASA MONÓTONAAlgoritmo monótono de frecuencia. (RMS, Rate Monotonic Scheduling). Asigna prioridades en función a sus períodos, período=tiempo que transcurre entre que llega la tarea y la siguiente llegada de la misma tarea. La tarea con mayor prioridad es la que tiene período más corto.

Uno de los métodos más prometedores para resolver los conflictos de planificación multitarea para tareas periódicas es la planificación de tasa monótona

INVERSIÓN DE PRIORIDAD

La inversión de prioridad sucede cuando las circunstancias dentro de sistema fuerzan a una tarea de mayor prioridad a esperar por una tarea de menor prioridad.

Un ejemplo sencillo de inversión de prioridad sucede si una tarea de menor prioridad ha bloqueado un recurso (un dispositivo o un semáforo binario) y una tarea de mayor prioridad intenta bloquear el mismo recurso.

La tarea de mayor prioridad pasará a estado bloqueado hasta que el recurso esté disponible. Si la tarea de menor prioridad termina pronto con el recurso y lo libera.

Inversión de prioridad ilimitada la duración de la inversión de prioridad depende no sólo del tiempo necesario para conseguir el recurso compartido sino también de las acciones impredecibles de otras tareas no relacionadas.

El software del Pathfinder incluye las siguientes tres tareas, en orden de prioridad decreciente:

T1. Comprueba periódicamente la salud del software y los sistemas de la nave espacial. T2. Procesa datos de imágenes. T3. Realiza ocasionalmente una comprobación del estado de los equipos

Herencia de prioridad es que una tarea de menor prioridad heredará la prioridad de cualquier tarea de mayor prioridad pendiente de un recurso que compartan. Este cambio de prioridad sucede tan pronto la tarea de mayor prioridad se bloquea en el recurso; y debe finalizar cuando la tarea de menor prioridad libera el recurso.

Techo de prioridad se asocia una prioridad con cada recurso. La prioridad asociada con un recurso es un nivel más alta que la prioridad de su usuario

Page 12: Planificación Procesos

más prioritario. Entonces, el planificador asigna esta prioridad a cualquier tarea que acceda al recurso. Cuando la tarea termina de usar el recurso, su prioridad se restablece al valor normal.

3. PLANIFICACIÓN EN LINUX

Linux tiene capacidad para la planificación de tiempo real así como un planificador para procesos no de tiempo real

PLANIFICACIÓN DE TIEMPO REAL

Las tres clases de planificación en Linux son las siguientes:

SCHED_FIFO. Hilos de tiempo real planificados FIFO.Para los hilos FIFO, se aplican las siguientes reglas

1. El sistema no interrumpirá un hilo FIFO en ejecución excepto en los siguientes casos:

a) Otro hilo FIFO de mayor prioridad pasa a estado listo.

b) El hilo FIFO en ejecución pasa a estar bloqueado en espera por algún evento, como E/S.

c) El hilo FIFO en ejecución cede voluntariamente el procesador realizando una llamada a la primitiva sched_yield.

d) Cuando un hilo FIFO en ejecución es interrumpido, se le sitúa en una cola asociada con su prioridad.

e) Cuando un hilo FIFO pasa a estar listo y ese hilo es de mayor prioridad que el hilo actualmente en ejecución, entonces el hilo actualmente en ejecución es expulsado y el hilo FIFO listo de mayor prioridad es ejecutado. Si hay más de un hilo que tiene esa mayor prioridad, se escogerá el hilo que lleve más tiempo esperando

SCHED_RR. Hilos de tiempo real planificados con turno circular. Cuando un hilo SCHED_RR ha estado ejecutando durante toda su rodaja de tiempo, se le suspende y se selecciona para su ejecución un hilo de tiempo real de igual o mayor prioridad.

SCHED_OTHER. Otros hilos no de tiempo real.Un hilo en esta clase sólo puede ejecutar si no hay hilos de tiempo real listos para ejecutar.

Page 13: Planificación Procesos

PLANIFICACIÓN NO DE TIEMPO REAL

El planificador ha sido diseñado para que el tiempo de seleccionar el proceso adecuado y asignarlo a un procesador sea constante, sin importar la carga del sistema y el número de procesadores.

Cálculo de prioridades y rodajas de tiempo

A cada tarea no de tiempo real se le asigna una prioridad inicial en el rango de 100 a 139, por un valor por comisión de 120. Esta es la prioridad estática de la tarea que es especificada por el usuario.

A medida que la tarea ejecuta, se calcula una prioridad dinámica como función de la prioridad estática de la tarea y del comportamiento de su ejecución.En esencia, a una tarea que pierde la mayor parte del tiempo durmiendo se le da la mayor prioridad.

Para determinar la prioridad dinámica es guardar información sobre cuánto tiempo duermen los procesos (esperando por un evento) versus cuánto tiempo ejecutan.Las rodajas de tiempo se asignan en el rango de los 10 ms a los 200 ms. En general a las tareas de mayor prioridad se le asignan rodajas de tiempo más largas.

Relación con las tareas de tiempo real Las tareas de tiempo-real

Se manipulan de manera distinta que las tareas no de tiempo real en las colas de prioridad. Se aplican las siguientes consideraciones:

Todas las tareas de tiempo real tienen solamente prioridad estática; no se realizaron cálculos de prioridad dinámica.

Las tareas SCHED_FIFO no tienen asignadas rodajas de tiempo. Estas tareas se planifican siguiendo la disciplina FIFO. Si una de estas tareas se bloquea, cuando se desbloquee volverá a la misma cola de prioridad en la lista de colas activas.

Aunque las tareas SCHED_RR tienen asignadas rodajas de tiempo, tampoco se les traslada nunca a la lista de colas vencidas. Cuando una de estas tareas consume toda su rodaja de tiempo, se le devuelve a su cola de prioridad con el mismo valor de rodaja de tiempo. Los valores de rodaja de tiempo nunca se cambian.

PLANIFICACIÓN EN UNIX SVR4

Page 14: Planificación Procesos

El algoritmo de planificación utilizado en UNIX SVR4 es una revisión completa del algoritmo de planificación utilizado en los sistemas UNIX anteriores (descrito en la Sección 9.3). El nuevo algoritmo está diseñado para dar la mayor preferencia a los procesos de tiempo real, la siguiente mayor preferencia a los procesos en modo núcleo, y la menor preferencia a otros procesos en modo-usuario, conocidos como procesos de tiempo compartido.

Las dos principales modificaciones implementadas en SVR4 son las siguientes:

1. El añadido de un planificador de prioridad estática expulsivo y la introducción de un conjunto de 160 niveles de prioridad divididos en tres clases de prioridad.

2. La inserción de puntos de expulsión. Dado que el núcleo básico no es expulsivo, sólo puede ser dividido en pasos de proceso que deben ejecutar hasta su conclusión sin interrupción. Entre estos pasos de proceso, se han identificado ciertos puntos de expulsión donde el núcleo puede ser interrumpido de manera segura para planificar un nuevo proceso. Un punto seguro se define como una región de código donde todas las estructuras de datos del núcleo están actualizadas y son consistentes o bien están bloqueadas por un semáforo.

La Figura 10.12 ilustra los 160 niveles de prioridad definidos en SVR4.

Cada proceso se define como perteneciente a una de estas tres clases de prioridad y se le asigna un nivel de prioridad dentro de la clase. Las clases son los siguientes:

• Tiempo-real (159-100). Los procesos en estos niveles de prioridad se garantiza que serán elegidos para ejecutar antes que cualquier proceso de núcleo o de tiempo compartido. Además, los procesos de tiempo real pueden hacer uso de los puntos de expulsión para expulsar procesos de núcleo y procesos de usuario.

• Núcleo (99-60). Los procesos en estos niveles de prioridad se garantiza que serán elegidos para ejecutar antes que cualquier proceso de tiempo compartido pero serán retrasados por los procesos de tiempo real.

• Tiempo-compartido (59-0). Son los procesos de más baja prioridad, pensados para las aplicaciones de usuario que no sean de tiempo real.

PLANIFICACIÓN EN WINDOWS

Windows está diseñado para ser tan sensible como sea posible a las necesidades de un único usuario en un entorno altamente interactivo o en el papel de un servidor. Windows implementa un planificador expulsivo con un sistema flexible de niveles de prioridad que incluye planificación turno circular

Page 15: Planificación Procesos

dentro de cada nivel y, para algunos niveles, variación dinámica de la prioridad sobre la base de la actividad de su hilo actual.

PRIORIDAD DE PROCESOS E HILOS

Las prioridades en Windows se organizan en dos bandas o clases: tiempo real y variable. Cada una de estas bandas consiste en 16 niveles de prioridad.

En la clase de prioridad de tiempo real, todos los hilos tienen una prioridad fija que nunca cambia. En la clase de prioridad variable, la prioridad del hilo comienza con algún valor asignado inicialmente y luego puede cambiar, arriba o abajo, durante la vida del hilo.

La prioridad inicial de un hilo de la clase de prioridad variable se determina en base a dos cantidades: la prioridad base del proceso y la prioridad base del hilo. Uno de los atributos del objeto proceso es la prioridad base del proceso, que puede tomar cualquier valor de 0 a 15. Cada objeto hilo asociado con un objeto proceso tiene un atributo prioridad base del hilo que indica la prioridad base del hilo relativa a la del proceso. La prioridad base del hilo puede ser igual a la de su proceso o dentro de dos niveles por encima o por debajo de la del proceso. Así, por ejemplo, si un proceso tiene

PLANIFICACIÓN MULTIPROCESADOR

Cuando Windows ejecuta en un procesador único, el hilo de mayor prioridad está siempre activo a menos que este esperando por un evento. Si hay más de un hilo que tiene la mayor prioridad, entonces se comparte el procesador, en turno circular, entre todos los hilos de ese nivel de prioridad. En un sistema multiprocesador con N procesadores, los (N - 1) hilos de mayor prioridad están siempre activos, ejecutando en exclusiva sobre los (N - 1) procesadores extra. El resto de los hilos, de menor prioridad, comparten el único procesador restante. Por ejemplo, si hay tres procesadores, los dos hilos de mayor prioridad ejecutan en dos procesadores, mientras que los restantes hilos ejecutan en el procesador restante. La disciplina anterior se ve afectada por el atributo del hilo denominado afinidad de procesador. Si un hilo está listo para ejecutar pero los únicos procesadores disponibles no están en su conjunto de procesadores afines, el hilo será forzado a esperar y el ejecutivo planificará el siguiente hilo disponible.