Interacción entre
Procesos en Sistemas
de Tiempo Real
Introducción.
El fenómeno de la Inversión de Prioridad
Secciones Críticas no Expropiables
Protocolo de Herencia de Prioridad
Protocolo de Techo de Prioridad
Objetivos
Conocer el problema de la inversión de prioridad y por qué los mecanismos de sincronización tradicionales no son adecuados para sistemas de tiempo real. Conocer los protocolos de sincronización de tiempo real y el análisis temporal de los mismos. Comparar los diferentes protocolos de sincronización.
Bibliografía:
Real-Time
Systems
and
Programming
Languages. A. Burns y A. Wellings, Addison
Introducción – Factibilidad de Planificación
Dado un conjunto de tareas {τ1, τ2, .. τi} con períodos
T1, T2, … Ti y tiempos de cómputo C1, C2, … Ci que
se panifican usando las prioridades estáticas 1, 2, ... i (a menor valor numérico, mayor prioridad) es posible determinar la factibilidad de planificación de la tarea τi
mediante:
Enfoque basado en los puntos de planificación:
i j j k k j T lT lT C n i i 1 R l) (k, 1 1 , 1 ,min
i Donde Ri = { (k, l) k = 1,..., i; l = 1,...,Ti/Tk } Enfoque basado en el tiempo de respuesta:j i j j i i i T C R C R
1 1Siempre que el tiempo de respuesta de la tarea i sea menor a igual a su plazo (Ri Di).
Ambas pruebas de factibilidad ofrecen condiciones
Introducción – Tareas Independientes
Todas las ecuaciones anteriores suponen que al ser activada una tarea una tarea de mayor prioridad, expropia por la fuerza la ejecución de la tarea de menor prioridad.
1
2
3
Las tareas finalizan en orden de prioridad
En el tiempo de finalización de una tarea
sólo interfieren aquellas de mayor prioridad
En la práctica esto sucede sólo en el caso de que no haya interacción entre las tareas.
Introducción – Interacción entre procesos
En la mayoría de los sistemas de interés práctico las tareas interacciones mediante:
o Datos Comunes (protegidos) o Encuentros o Mensajes.
En todos estos casos, es posible que una tarea tenga que esperar un suceso de otra de menos prioridad. Ejemplo utilizando semáforos de Dijkstra:
1
2 P(S1) S1 cerrado Prioridad(
1
) > Prioridad(
2
) P(S1) V(S1) V(S1)El uso de semáforos consigue el comportamiento lógico correcto (exclusión mutua) pero provoca que
se viole la suposición de que una tarea no puede ser demorada por una de menor prioridad.
Esta situación se denomina bloqueo, y produce una
Análisis de Factibilidad considerando Bloqueo
El tiempo de bloqueo Bi de la tarea τi es el tiempo por el cual la ejecución de una tarea de menor prioridad puede demorar la ejecución de la tarea Bi. Es posible extender las ecuaciones de factibilidad:
Enfoque basado en los puntos de planificación:
i k i i i k k i T B T C n i i 1 1 1 2 , 1 , Donde Ri = { (k, l) k = 1,..., i; l = 1,...,Ti/Tk } Enfoque basado en el tiempo de respuesta:j i j j i i i i C T R B C R
1 1Siempre que el tiempo de respuesta de la tarea i sea menor a igual a su plazo (Ri Di).
¿Cómo encontrar el tiempo de bloqueo?
La dificultad fundamental está dada porque el tiempo de bloqueo puede ser no acotado.
Inversión de Prioridad no Acotada
Ejemplo del problema de inversión de prioridades:
1
2 P(S1) S1 cerrado P(
1
) > P(
2
) > P(
3
) P(S1) V(S1) V(S1)
3El tiempo de respuesta de τ1 es más largo que el de τ2 a pesar de que a τ1 se le asignó mayor prioridad por su urgencia para que terminara antes de τ2
El tiempo de bloqueo de τ1 debido τ3 es inevitable y necesario para la integridad de la sección crítica.
El tiempo de bloqueo de τ1 debido a τ2 es improductivo y afecta o imposibilita garantizar la factibilidad de planificación del sistema.
Inversión de Prioridad en Marte
La inversión de prioridad no acotada fue la causante del famoso fallo de la sonda Pathfinder de la NASA.
Los síntomas son que las tareas se ejecutan a tiempo y satisfacen sus plazos pero ocasionalmente una u otra tarea incumple su plazo.
La inversión de prioridad no se puede eliminar completamente, pero es posible limitar su duración.
En los STR, los bloqueos tienen que ser acotados y medibles, no son adecuados los semáforos regulares.
Secciones Críticas No Expropiables
Una solución al problema de inversión de prioridades no acotada son las secciones críticas no expropiables:
1
2 S1 cerrado P(
1
) > P(
2
) > P(
3
)
3 P(S1) V(S1) P(S1) V(S1)Nunca habrá inversión de prioridad no acotada
Una tarea sólo puede ser bloqueada si se pone lista mientras una de baja prioridad accede a un recurso. Al terminar dicha sección crítica, todos los recursos
están libres por lo que no se puede ejecutar otra tarea de prioridad intermedia.
Valoración de Sección Crítica No Expropiable
Ventajas:
Una tarea sólo puede ser bloqueada una vez.
El tiempo de bloqueo máximo será igual al tiempo de ejecución máximo de las secciones críticas de todas las tareas de mayor prioridad.
Como nunca se puede expropiar a una tarea mientras accede a un recurso nunca ocurrirá bloqueo
mutuo.
Tiene una implementación sencilla. Basta con la inhabilitación/habilitación de las interrupciones o de la expropiación.
Dificultades:
Todas las tareas pueden ser bloqueadas por todas las demás de menor prioridad que requieren algún recurso incluso aunque no exista conflicto de recursos entre ellas.
Debido a su baja sobrecarga es adecuado cuando todas las secciones críticas son cortas y cuando la mayoría de las tareas entran en conflictos por recursos.
Protocolo de Herencia de Prioridad
Una forma de reducir la duración de los bloqueos es variar dinámicamente la prioridad de las tareas.
Cuando una tarea está bloqueando a otra más prioritaria, hereda la prioridad de ésta
La prioridad dinámica de una tarea es el máximo de o Su prioridad básica
o Las prioridades de todas las tareas bloqueadas por ella
La herencia de prioridad es transitiva.
1
2 P(S1) S1 cerrado P(
1
) > P(
2
) > P(
3
) P(S1) V(S1) V(S1)
3Bloqueo por empuje ("push-through") Bloqueo directo
Bloqueos con Herencia de Prioridades
Una tarea de mayor prioridad puede experimentar dos tipos de bloqueos:
o Bloqueo directo: ocurre cuando una tarea de mayor prioridad intenta adquirir un recurso (semáforo) ya retenido por una de menor prioridad.
Necesario para asegurar la
consistencia de los recursos
compartidos.
o Bloqueo a través de empuje (“Push through
blocking”): ocurre cuando una tarea de prioridad
media es bloqueada por una de baja prioridad que ha heredado una mayor prioridad desde otra a la que está bloqueando directamente. Este tipo de bloqueo se produce incluso aunque ambas tareas no compartan ningún recurso (semáforo).
Necesario para evitar inversión de
prioridades no acotada.
El uso de la herencia de prioridad en la sonda Pathfinder de Marte permitió resolver con éxito los problemas y que se comportase de forma adecuada.
Herencia con Secciones Críticas Anidadas
No siempre una tarea que sale de una sección crítica regresa a la prioridad que tenía antes de entrar a ella:
S
1cerrado
P(
1
) > P(
2
) > P(
3
)
1
2
3
P(S
1) P(S
2)
P(S
2)
P(S
1)
V(S
2)
V(S
1)
V(S
2)
S
2cerrado
La situación se produce sólo cuando una tarea utiliza secciones críticas anidadas.
Bloqueo Encadenado y Herencia Transitiva
El protocolo de herencia de prioridad puede presentar
bloqueo acumulativo o bloqueo encadenado
(“chained blocked”) que consiste en la formación de cadenas de bloqueo (que pueden ser arbitrariamente grandes) en que las tareas se pueden bloquear durante un tiempo más prolongado que una sección crítica.
Para manejar esta situación es necesario soportar herencia de prioridades transitiva:
P(S1) P(S2) P(S2) P(S1) V(S1) V(S1) V(S2) V(S2) S1 cerrado P(
1
) > P(
2
) > P(
3
)
1
2
3 S2 cerradoBloqueo Múltiple
Otra situación es la posibilidad de bloqueo múltiple que se produce si una tarea de alta prioridad posee varias secciones críticas en su camino de ejecución. En este caso puede bloquearse en cada una de ellas.
Ejemplo de escenario del peor caso: donde una tarea se puede bloquear una vez por cada semáforo que accede:
1
2
3 P(S1) P(S1) P(S2) V() P(S2) P(S3) P(S3) V(S1) V(S2) V(S3)
4En el ejemplo la tarea τ1 accede a 3 secciones críticas y
Cómputo del Tiempo de Bloqueo
Con la herencia de prioridad, una tarea se puede bloquear a lo sumo:
o Una vez por cada sección crítica
o Una vez por cada tarea de prioridad inferior
Si una tarea posee m secciones críticas y hay n tareas de menor prioridad, el número de veces que una
tarea se puede bloquear es min(m, n)
Una forma fácil (aunque no óptima) de calcular el tiempo de bloqueo en el peor caso Bi es:
K k i usage k i CS k B 1 ) ( ) , ( Donde usage es 0 ó 1:usage(k, i) = 1 Si el recurso k lo utiliza al menos
una tarea con prioridad menor que i y al menos una tarea con prioridad mayor o igual que i.
usage(k, i) = 0 En caso contario.
CS(k) es el costo computacional de la k-ésima sección
crítica.
Este algoritmo da una cota superior pesimista. Un algoritmo exacto es mucho más complejo.
Bloqueo Mutuo con Herencia de Prioridades
El protocolo de herencia de prioridad no impide el bloqueo mutuo:
Bloqueo mutuo (“deadlock”): situación en la que
varias tareas caen en un estado de “bloqueo circular”, en donde, por ejemplo la tarea τ1 está bloqueada por la tarea τ2, la cual a su vez está bloqueada por la tarea t1:
Se activa 2 P(S2) P(S1) P(S1) t0 t1 t2 t4 P(S2)
2
1
Se activa 1 S2 cerrado S1 cerrado Prioridad(
1
) > Prioridad(
2
)
1
2
S
1
S
2
Bloqueo Mutuo Situación de espera circular t3Diagrama de Progreso con Bloqueo Mutuo
Una forma de comprender el bloqueo mutuo es mediante un diagrama de progreso como el mostrado:
P(S2) P(S1) V(S1) V(S2) Progreso de
2 Progreso de
1 Regiones Prohibidas debido a conflictos de recursosPunto de Bloqueo Mutuo
Termina
1t
0t
1t
2t
3 P(S1) P(S2) V(S2) V(S1) Termina
2 Prioridad(
1
) > Prioridad(
2
)
2
hereda prioridad de
1
t
4El bloqueo mutuo arroja tiempos de bloqueo infinitos ¡Esto echa por tierra el análisis temporal del sistema!
Valoración de la Herencia de Prioridad
Ventajas:
Una tarea de mayor prioridad sólo puede ser bloqueada por una de menor prioridad si se encuentra dentro de una sección crítica.
Una tarea menos prioritaria puede bloquear a otra más prioritaria a lo más durante una sola sección crítica.
La sección crítica más larga determina el tiempo máximo que una tarea puede bloquear a otra de mayor prioridad.
El tiempo que una tarea puede estar bloqueada está dado por ...
Dificultades:
Tiempo de bloqueo excesivo:
o Presencia de bloqueo acumulativo o
bloqueo encadenado (“chained blocked”).
No evita el bloqueo mutuo:
o El bloqueo mutuo no es provocado por el protocolo de herencia de prioridad en si; sino producto de un uso incorrecto de los semáforos.
Protocolos de Techo de Prioridad
El techo de prioridad de un recurso es la máxima prioridad de las tareas que lo usan
El protocolo de techo de prioridad consiste en:
La prioridad dinámica de una tarea es el máximo de su prioridad base y las de las tareas que la bloquean. A una tarea se le concede un recurso sólo si su
prioridad dinámica es mayor que el techo de todos los recursos en uso por otras tareas.
S1 cerrado P(
1) > P(
2) > P(
3) S2 cerrado Int. Int. I Int. Interferencia
1
2
3 P(S1) V(S1) Bloqueo por empuje (herencia) Bloqueo directo P(S2) V(S2) P(S1) V(S1) P(S2) V(S2) Bloqueo de techoComportamiento no ávido
Una diferencia importante entre el protocolo de herencia de prioridad y el protocolo de techo de prioridad es que:
o En el protocolo de herencia de prioridad a una tarea se le concede el cierre sobre un semáforo siempre que el mismo esté libre.
o En el protocolo de techo de prioridad, a una tarea se le puede negar el cierre sobre un semáforo incluso cuando el mismo se encuentre abierto (el recurso solicitado esté libre) en ese instante.
Con el protocolo de techo de prioridad, el bloqueo surge por tres causas: bloqueo directo y bloqueo de
empuje (“push-through”) o de herencia (igual que con
el protocolo básico de herencia de prioridad) y una nueva forma denominada bloqueo de techo:
o Bloqueo de Techo: cuando a una tarea se le niega el cierre sobre un semáforo (acceso al recurso9 libre debido a que ya existe otra que retiene otro semáforo con un techo de prioridad de igual o más prioridad que la tarea que lo está solicitando.
Necesario para la evitación del bloqueo
Evitación del Bloqueo Mutuo
Secuencia de ejecución con bloqueo mutuo potencial bajo el protocolo de techo de prioridad
Ahora a τ
1 no se le concedió el cierre sobre S1
sino que se suspendió (bloqueo de techo). Esto
impide el potencial bloqueo mutuo entre τ
1 y τ
2.
Se activa 2 P(S2) P(S1) P(S1) V(S1) V(S2) t0 t1 t2 t3 Se bloquea P(S2) V(S2) V(S1) 2hereda la prioridad de 1 2regresa a su prioridad asignada
2
1
Se activa 1 de lo contrario 1 y 2 caerían en bloqueo mutuo. S2 cerrado S1 cerrado Prioridad(
1
) > Prioridad(
2
)Diagrama de Progreso con Techo de Prioridad
A continuación se muestra el diagrama de progreso del ejemplo con el potencial bloqueo mutuo en presencia del Protocolo de Techo de Prioridad.
P(S2) P(S1) V(S1) V(S2) Progreso de
2 Progreso de
1 Regiones Prohibidas debido a conflictos de recursosPunto de Bloqueo Mutuo
Termina
1t
0t
1t
2t
3 P(S1) P(S2) V(S2) V(S1) Termina
2 Prioridad(
1
) > Prioridad(
2
)
2
hereda prioridad de
1
2
regresa a su prioridadCuando, en el instante t2, τ2 solicita S1 éste no se le concede (a pesar de estar disponible) evitando con ello la entrada a la región insegura.
Cómputo del tiempo de Bloqueo
El efecto del protocolo es asegurar que un segundo recurso pueda cerrarse sólo si no existe proceso de mayor prioridad que use ambos recursos.
Como consecuencia se evita el bloqueo encadenado y la duración máxima del bloqueo está determinada ahora por el tiempo de ejecución de la sección crítica más larga de todos los procesos de más baja prioridad:
) ( ) , (
max
1 k CS i k usage B K k i Propiedades
Cuando se usa en un sistema monoprocesador:
Cada tarea se puede bloquear a lo sumo una vez en cada ciclo.
Se evita el bloqueo mutuo.
Se evita el bloqueo encadenado.
Se consigue la exclusión mutua sin mecanismos de protección adicionales.
Protocolo de Techo de Prioridad Inmediato
Una tarea que accede a un recurso hereda inmediatamente el techo de prioridad del recurso
o La prioridad dinámica de una tarea es el máximo de su prioridad básica y los techos de prioridad de los recursos que usa.
1
2S
1cerrado
P(
1
) > P(
2
) > P(
3
)
3P(S
1) V(S
1)
P(S
1) V(S
1)
BloqueoTecho de Prioridad Inmediato
La diferencia con el Protocolo de Techo de Prioridad ordinario está dada porque:
o El protocolo de techo de prioridad sólo eleva las prioridades de las tareas cuando una tarea bloquea realmente a otra de mayor prioridad e incluso entonces la prioridad no necesariamente se eleva hasta la prioridad del techo.
o El protocolo de techo de prioridad inmediato eleva la prioridad de una tarea al nivel del techo de prioridad del semáforo tan pronto como ésta cierra dicho semáforo. La tarea continúa ejecutándose con dicha prioridad mientras tanto retenga el semáforo.
Una consecuencia de esta regla de modificación de la prioridad es que una tarea experimentará un
bloqueo solamente al comienzo de su ejecución.
o Una vez que una tarea comienza realmente su ejecución, estarán libres todos los semáforos que solicita; si no fuese el caso, entonces algunas tareas pueden tener igual o mayor prioridad por tanto se hubiese pospuesto la ejecución de la tarea.
Cómputo del tiempo de Bloqueo
El protocolo de techo de prioridad posee un comportamiento en el peor caso idéntico al protocolo de techo de prioridad y por tanto se aplica el mismo tiempo de bloqueo.
Una tarea experimenta bloqueo a lo sumo una vez. El tiempo de bloqueo de la tarea τi es el mayor tiempo en
que cualquier otra tarea de menor prioridad permanece en posesión de un semáforo con una prioridad de techo mayor o igual a la prioridad de la tarea τi:
) ( ) , (
max
1 k CS i k usage B K k i Propiedades
Las propiedades son las mismas que las del protocolo de techo de prioridad, y además:
Si una tarea se bloquea, lo hace al principio del ciclo.
Es más fácil de implantar que el protocolo de techo de prioridad básico.
Evitación del Bloqueo Mutuo
Secuencia de ejecución con bloqueo mutuo potencial bajo el protocolo de techo de prioridad inmediato:
Se activa 2 P(S2) P(S1) P(S1) V(S1) t0 t1 t2 t3 Se bloquea P(S2) V(S2) V(S1) 2hereda la prioridad del techo (la de 1)
2regresa a su prioridad asignada
2
1
Se activa 1 S2 cerrado S1 cerrado Prioridad(
1
) > Prioridad(
2
) V(S2)Como una tarea se bloquea sólo al inicio (cuando no posee ningún recurso) no se cumple una condición necesaria para la existencia del bloqueo mutuo.
Diagrama de Progreso con Techo de Prioridad
A continuación el diagrama de progreso del ejemplo con bloqueo potencial en presencia del protocolo de Techo de Prioridad Inmediato:
P(S2) P(S1) V(S1) V(S2) Progreso de
2 Progreso de
1 Regiones Prohibidas debido a conflictos de recursosPunto de Bloqueo Mutuo
Termina