Articulo de referencia

Programación de tasa monótona

En ciencias de la computación , la planificación de tasa monótona ( RMS ) [ 1 ] es un algoritmo de asignación de prioridades utilizado en sistemas operativos en tiempo real (RTO...

En ciencias de la computación , la planificación de tasa monótona ( RMS ) [ 1 ] es un algoritmo de asignación de prioridades utilizado en sistemas operativos en tiempo real (RTOS) con una clase de planificación de prioridad estática. [ 2 ] Las prioridades estáticas se asignan de acuerdo con la duración del ciclo del trabajo, por lo que una duración de ciclo más corta resulta en una prioridad de trabajo más alta.

Estos sistemas operativos suelen ser preventivos y ofrecen garantías deterministas en cuanto a los tiempos de respuesta. El análisis de tasa monótona se utiliza junto con estos sistemas para proporcionar garantías de planificación para una aplicación específica.

Introducción

Una versión simple del análisis de tasa monótona supone que los hilos tienen las siguientes propiedades:

  • No se comparten recursos (los procesos no comparten recursos, por ejemplo, un recurso de hardware , una cola o cualquier tipo de bloqueo o no bloqueo mediante semáforos ( esperas activas )).
  • Los plazos deterministas son exactamente iguales a los períodos.
  • Prioridades estáticas (la tarea con la prioridad estática más alta que se pueda ejecutar inmediatamente interrumpe a todas las demás tareas).
  • Prioridades estáticas asignadas según las convenciones de tasa monótona (las tareas con períodos/plazos más cortos reciben mayor prioridad).
  • Los tiempos de cambio de contexto y otras operaciones de subprocesos son gratuitos y no tienen impacto en el modelo.

Se trata de un modelo matemático que simula periodos calculados en un sistema cerrado, donde los planificadores round-robin y time-shared no logran satisfacer las necesidades de planificación. La planificación de tasa monótona analiza el modelo de ejecución de todos los hilos del sistema y determina el tiempo necesario para cumplir con las garantías del conjunto de hilos en cuestión.

Optimalidad

La asignación de prioridad de tasa monótona es óptima bajo los supuestos dados, lo que significa que si cualquier algoritmo de planificación de prioridad estática puede cumplir con todos los plazos, entonces el algoritmo de tasa monótona también puede. El algoritmo de planificación de plazo monótono también es óptimo con períodos y plazos iguales; de hecho, en este caso los algoritmos son idénticos. Además, la planificación de plazo monótona es óptima cuando los plazos son menores que los períodos. [ 3 ] Para el modelo de tarea en el que los plazos pueden ser mayores que los períodos, el algoritmo de Audsley, dotado de una prueba de planificabilidad exacta para este modelo, encuentra una asignación de prioridad óptima. [ 4 ]

Límites superiores de utilización

Límite superior mínimo

Liu y Layland (1973) demostraron que, para un conjunto de n tareas periódicas con periodos únicos, existe una programación factible que siempre cumplirá con los plazos si la utilización de la CPU está por debajo de un límite específico (que depende del número de tareas). La prueba de programabilidad para RMS es:

U=i=1norteUi=i=1nortedoiTinorte(21/norte1){\displaystyle U=\sum _{i=1}^{n}{U_{i}}=\sum _{i=1}^{n}{\frac {C_{i}}{T_{i}}}\leq n({2}^{1/n}-1)}

donde U es el factor de utilización, C i es el tiempo de cálculo para el proceso i , T i es el período de liberación (con fecha límite un período después) para el proceso i , y n es el número de procesos a programar. Por ejemplo, U   0,8284 para dos procesos. Cuando el número de procesos tiende a infinito , esta expresión tenderá a:

límitenortenorte(2norte1)=ln20,693147{\displaystyle \lim _{n\rightarrow \infty }n({\sqrt[{n}]{2}}-1)=\ln 2\approx 0.693147\ldots }

Por lo tanto, una estimación aproximada cuandonorte10{\displaystyle {n}\geq {10}}RMS puede cumplir con todos los plazos si la utilización total de la CPU, U , es inferior al 70 %. El 30 % restante de la CPU puede dedicarse a tareas de menor prioridad que no requieren procesamiento en tiempo real. Para valores menores de n o en casos donde U se aproxime a esta estimación, se debe utilizar el límite de utilización calculado.

En la práctica, para elith{\displaystyle {i^{th}}}proceso,doi{\displaystyle {C_{i}}}debe representar el peor caso (es decir, el tiempo de cálculo más largo) yTi{\displaystyle {T_{i}}}Debe representar el plazo límite en el peor de los casos (es decir, el período más corto) en el que debe realizarse todo el procesamiento.

Relación con la teoría de colas

En la teoría de colas , T i se denomina tiempo entre llegadas y C i se denomina tiempo de servicio . Estos dos parámetros se suelen especificar como tasas:

λi=1Ti{\displaystyle \lambda _{i}={1 \over T_{i}}}es la tasa de llegada y
μi=1doi{\displaystyle \mu _{i}={1 \over C_{i}}}es la tarifa del servicio .

La utilización para cada tarea, denotada por ρ i , es entonces:

ρi=λiμi=doiTi=Ui{\displaystyle \rho _{i}={\lambda _{i} \over \mu _{i}}={C_{i} \over T_{i}}=U_{i}}

como se indicó anteriormente.

Límite superior para conjuntos de tareas armónicas

Liu y Layland señalaron que este límite puede relajarse al valor máximo posible de 1.0, si para las tareasTmetro{\displaystyle {T_{m}}},Ti{\displaystyle {T_{i}}}dóndeTmetro>Ti{\displaystyle {T_{m}}{>}{T_{i}}}yi=1...metro1{\displaystyle i=1...m-1},Tmetro{\displaystyle {T_{m}}}es un múltiplo entero deTi{\displaystyle {T_{i}}}, lo que significa que todas las tareas tienen un período que no es simplemente un múltiplo del período más corto,T1{\displaystyle {T_{1}}}, sino que el período de cualquier tarea es un múltiplo de todos los períodos más cortos. Esto se conoce como un conjunto de tareas armónicas . Un ejemplo de esto sería: [T1,T2,T3,T4]=[1,3,6,12]{\displaystyle [{T_{1}},{T_{2}},{T_{3}},{T_{4}}]=[1,3,6,12]}Liu y Layland reconocen que no siempre es factible tener un conjunto de tareas armónico y que, en la práctica, se pueden utilizar otras medidas de mitigación, como el almacenamiento temporal para tareas con plazos flexibles o el uso de un enfoque de asignación de prioridades dinámicas, para permitir un límite superior.

Generalización a cadenas armónicas

Kuo y Mok [ 5 ] demostraron que para un conjunto de tareas compuesto por K subconjuntos de tareas armónicas (conocidos como cadenas armónicas ), la prueba del límite superior mínimo se convierte en:

U=i=1nortedoiTiK(21/K1){\displaystyle U=\sum _{i=1}^{n}{\frac {C_{i}}{T_{i}}}\leq K({2}^{1/K}-1)}

En el caso en que para cada tarea, su período es un múltiplo exacto de cualquier otra tarea que tenga un período más corto, el conjunto de tareas puede considerarse compuesto por n subconjuntos de tareas armónicas de tamaño 1 y, por lo tanto,K=norte{\displaystyle {K}{=}{n}}, lo que hace que esta generalización sea equivalente a la cota superior mínima de Liu y Layland. CuandoK=1{\displaystyle {K}{=}{1}}, el límite superior se convierte en 1,0, lo que representa la utilización total.

Límites estocásticos

Se ha demostrado que un sistema de tareas periódicas generadas aleatoriamente generalmente cumplirá con todos los plazos cuando la utilización sea del 88% o menos, [ 6 ] sin embargo, este hecho depende de conocer las estadísticas exactas de las tareas (períodos, plazos) que no se pueden garantizar para todos los conjuntos de tareas, y en algunos casos los autores encontraron que la utilización alcanzó el límite superior más bajo presentado por Liu y Layland.

límite hiperbólico

La cota hiperbólica [ 7 ] es una condición suficiente más estricta para la programabilidad que la presentada por Liu y Layland:

i=1norte(Ui+1)2{\displaystyle \prod _{i=1}^{n}(U_{i}+1)\leq 2},

donde U i es la utilización de la CPU para cada tarea. Es el límite superior más ajustado que se puede encontrar utilizando únicamente los factores de utilización de cada tarea individual.

Intercambio de recursos

En muchas aplicaciones prácticas, los recursos se comparten y el sistema de gestión de recursos (RMS) sin modificar estará sujeto a riesgos de inversión de prioridad y bloqueo mutuo . En la práctica, esto se soluciona deshabilitando la expropiación o mediante la herencia de prioridad . Los métodos alternativos consisten en utilizar algoritmos sin bloqueo o evitar que se comparta un mutex/semáforo entre hilos con diferentes prioridades. De esta manera, se evitan los conflictos de recursos.

Desactivación de la preeminencia

  • Las OS_ENTER_CRITICAL()primitivas OS_EXIT_CRITICAL()que bloquean las interrupciones de la CPU en un núcleo en tiempo real, por ejemplo MicroC/OS-II
  • La splx()familia de primitivas que anidan el bloqueo de interrupciones de dispositivos ( FreeBSD 5.x/6.x ),

Herencia de prioridad

  • El protocolo básico de herencia de prioridad [ 8 ] promueve la prioridad de la tarea que posee el recurso a la prioridad de la tarea que lo solicita en el momento de la solicitud. Al liberarse el recurso, se restablece el nivel de prioridad original anterior a la promoción. Este método no evita los interbloqueos y sufre de bloqueo encadenado . Es decir, si una tarea de alta prioridad accede a varios recursos compartidos en secuencia, puede tener que esperar (bloquearse) a una tarea de menor prioridad para cada uno de los recursos. [ 9 ] El parche en tiempo real archivado el 13 de octubre de 2020 en la Wayback Machine para el kernel de Linux incluye una implementación de esta fórmula. [ 10 ]
  • El protocolo de prioridad máxima [ 11 ] mejora el protocolo básico de herencia de prioridad asignando una prioridad máxima a cada semáforo, que corresponde a la prioridad del trabajo de mayor prioridad que accederá a dicho semáforo. Un trabajo no puede interrumpir una sección crítica de menor prioridad si su prioridad es inferior a la prioridad máxima de esa sección. Este método evita interbloqueos y limita el tiempo de bloqueo a, como máximo, la duración de una sección crítica de menor prioridad. Este método puede ser subóptimo, ya que puede provocar bloqueos innecesarios. El protocolo de prioridad máxima está disponible en el núcleo en tiempo real de VxWorks . También se conoce como Protocolo de Prioridad del Bloqueador de Mayor Prioridad (HLP). [ 12 ]

Los algoritmos de herencia de prioridad se pueden caracterizar por dos parámetros. Primero, si la herencia es perezosa (solo cuando es esencial) o inmediata (aumenta la prioridad antes de que haya un conflicto). Segundo, si la herencia es optimista (aumenta una cantidad mínima) o pesimista (aumenta más de la cantidad mínima):

En la práctica, no existe ninguna diferencia matemática (en términos del límite de utilización del sistema de Liu-Layland) entre los algoritmos perezosos e inmediatos, y los algoritmos inmediatos son más eficientes de implementar, por lo que son los que utilizan la mayoría de los sistemas prácticos.

Un ejemplo del uso de la herencia de prioridad básica está relacionado con el " error de reinicio de Mars Pathfinder " [ 13 ] [ 14 ] que se solucionó en Marte cambiando las banderas de creación del semáforo para habilitar la herencia de prioridad.

Interrumpir las rutinas de servicio

Todas las rutinas de servicio de interrupción (ISR), tengan o no un plazo de tiempo real estricto, deben incluirse en el análisis RMS para determinar la planificabilidad en los casos en que las ISR tengan prioridad sobre todas las tareas controladas por el planificador. Una ISR puede tener la prioridad adecuada según las reglas RMS si su período de procesamiento es menor que el del proceso no ISR más corto. Sin embargo, una ISR con un período/plazo mayor que el de cualquier proceso no ISR con un plazo crítico constituye una violación de RMS e impide el uso de los límites calculados para determinar la planificabilidad de un conjunto de tareas.

Mitigación de las ISR con prioridades incorrectas

Un método para mitigar una ISR mal priorizada es ajustar el análisis reduciendo el período de la ISR para que sea igual al del período más corto, si es posible. Imponer este período más corto da como resultado una priorización que se ajusta a RMS, pero también da como resultado un factor de utilización más alto para la ISR y, por lo tanto, para el factor de utilización total, que aún puede estar por debajo del límite permitido y, por lo tanto, se puede demostrar la planificabilidad. Como ejemplo, considere una ISR de hardware que tiene un tiempo de computación,doisr{\displaystyle {C_{isr}}}de 500 microsegundos y un período,Tisr{\displaystyle {T_{isr}}}, de 4 milisegundos. Si la tarea controlada por el planificador más corta tiene un período,T1{\displaystyle {T_{1}}}de 1 milisegundo, entonces la ISR tendría una prioridad más alta, pero una tasa más baja, lo que viola RMS. Para los fines de probar la planificabilidad, establezcaTisr=T1{\displaystyle {T_{isr}}={T_{1}}}y recalcular el factor de utilización para el ISR (lo que también aumenta el factor de utilización total). En este caso,Uisr=doisr/Tisr{\displaystyle {U_{isr}}{=}{C_{isr}}/{T_{isr}}}cambiará de0,5metros/4metros=0,125{\displaystyle {0.5ms}/{4ms}{=}0.125}a0,5metros/1metros=0,5{\displaystyle {0.5ms}/{1ms}{=}0.5}Este factor de utilización se usaría al sumar el factor de utilización total del conjunto de tareas y compararlo con el límite superior para demostrar la planificabilidad. Cabe destacar que el ajuste del período del ISR es solo para fines de análisis y que el período real del ISR permanece sin cambios.

Otro método para mitigar una rutina de servicio de interrupción (ISR) con prioridad incorrecta consiste en usarla únicamente para establecer un nuevo semáforo/mutex, mientras se traslada el procesamiento que consume mucho tiempo a un nuevo proceso con la prioridad adecuada mediante RMS, que se bloqueará en el nuevo semáforo/mutex. Al determinar la planificabilidad, se debe restar un margen de utilización de CPU debido a la actividad de la ISR del límite superior mínimo. Las ISR con una utilización insignificante pueden ignorarse.

Ejemplos

Ejemplo 1

En el marco del RMS, P2 tiene la tasa de liberación más alta (es decir, el período de liberación más corto) y, por lo tanto, tendría la máxima prioridad, seguida de P1 y, finalmente, P3.

Límite superior mínimo

La utilización será:

U=18+25+210=0,725{\displaystyle U={\frac {1}{8}}+{\frac {2}{5}}+{\frac {2}{10}}=0.725}.

La condición suficiente para3{\displaystyle 3\,}Los procesos, bajo los cuales podemos concluir que el sistema es planificable, son:

Ulb=3(2131)=0,77976{\displaystyle {U_{lub}}=3(2^{\frac {1}{3}}-1)=0.77976}

PorqueU<Ulb{\displaystyle U<U_{lub}}y dado que estar por debajo del límite superior mínimo es una condición suficiente, se garantiza que el sistema sea planificable.

Ejemplo 2

En el marco del RMS, P2 tiene la tasa de liberación más alta (es decir, el período de liberación más corto) y, por lo tanto, tendría la máxima prioridad, seguida de P3 y, finalmente, P1.

Límite superior mínimo

Utilizando la cota de Liu y Layland, como en el Ejemplo 1, la condición suficiente para3{\displaystyle 3\,}Los procesos, bajo los cuales podemos concluir que el conjunto de tareas es planificable, permanecen:

Ulb=3(2131)=0,77976{\displaystyle {U_{lub}}=3(2^{\frac {1}{3}}-1)=0.77976}

La utilización total será:

U=316+25+210=0,7875{\displaystyle U={\frac {3}{16}}+{\frac {2}{5}}+{\frac {2}{10}}=0.7875}.

DesdeU>Ulb{\displaystyle U>U_{lub}}, se determina que el sistema no tiene garantizada la posibilidad de ser programado por el límite de Liu y Layland.

límite hiperbólico

Utilizando la cota hiperbólica más ajustada de la siguiente manera:

i=1norte(Ui+1)=(316+1)(25+1)(210+1)=1.9952{\displaystyle \prod _{i=1}^{n}(U_{i}+1)=({\frac {3}{16}}+1)*({\frac {2}{5}}+1)*({\frac {2}{10}}+1)=1.995\leq 2}

Se ha comprobado que el conjunto de tareas es programable.

Ejemplo 3

En el marco del RMS, P2 tiene la tasa más alta (es decir, el período más corto) y, por lo tanto, tendría la máxima prioridad, seguida de P3 y, finalmente, P1.

Límite superior mínimo

Utilizando la cota de Liu y Layland, como en el Ejemplo 1, la condición suficiente para3{\displaystyle 3\,}Los procesos, bajo los cuales podemos concluir que el conjunto de tareas es planificable, permanecen:

Ulb=3(2131)=0,77976{\displaystyle {U_{lub}}=3(2^{\frac {1}{3}}-1)=0.77976}

La utilización total será:

U=732+25+210=0,81875{\displaystyle U={\frac {7}{32}}+{\frac {2}{5}}+{\frac {2}{10}}=0.81875}.

DesdeU>Ulb{\displaystyle U>U_{lub}}, se determina que el sistema no tiene garantizada la posibilidad de ser programado por el límite de Liu y Layland.

límite hiperbólico

Utilizando la cota hiperbólica más ajustada de la siguiente manera:

i=1norte(Ui+1)=(732+1)(25+1)(210+1)=2.0475{\displaystyle \prod _{i=1}^{n}(U_{i}+1)=({\frac {7}{32}}+1)*({\frac {2}{5}}+1)*({\frac {2}{10}}+1)=2.0475}

Desde2.0<2.0475{\displaystyle 2.0{<}2.0475}Se determina que el sistema no puede ser planificable según el límite hiperbólico.

Análisis del conjunto de tareas armónicas

PorqueT3=2T2{\displaystyle {T_{3}}={2{T_{2}}}}Las tareas 2 y 3 pueden considerarse un subconjunto de tareas armónicas. La tarea 1 forma su propio subconjunto de tareas armónicas. Por lo tanto, el número de subconjuntos de tareas armónicas, K , es 2 .

Ulb,harmetroonorteido=K(21K1)=2(2121)=0,828{\displaystyle {U_{lub,harmonic}}=K(2^{\frac {1}{K}}-1)=2(2^{\frac {1}{2}}-1)=0.828}

Utilizando el factor de utilización total calculado anteriormente (0,81875), dado que0,81875<0,828{\displaystyle 0.81875<0.828}Se ha determinado que el sistema es programable.

Véase también

Referencias

  1. Liu, CL ; Layland, J. (1973), "Algoritmos de planificación para multiprogramación en un entorno de tiempo real estricto", Journal of the ACM , 20 (1): 46–61 , CiteSeerX 10.1.1.36.8216 , doi : 10.1145/321738.321743 , S2CID 207669821  .
  2. Bovet, Daniel P.; Cesati, Marco, Entendiendo el núcleo de Linux, http://oreilly.com/catalog/linuxkernel/chapter/ch10.html#85347 Archivado el 21-09-2014 en Wayback Machine .
  3. Leung, JY; Whitehead, J. (1982), "Sobre la complejidad de la programación de prioridad fija de tareas periódicas en tiempo real", Performance Evaluation , 2 (4): 237– 250, doi : 10.1016/0166-5316(82)90024-4.
  4. Alan Burns y Andy Wellings (2009), Sistemas en tiempo real y lenguajes de programación (4.ª ed.), Addison-Wesley, págs. 391, 397, ISBN   978-0-321-41745-9
  5. T.-W. Kuo; AK Mok (1991). "Ajuste de carga en sistemas adaptativos en tiempo real". [ 1991 ] Actas del Duodécimo Simposio sobre Sistemas en Tiempo Real . págs. 160–170 . doi : 10.1109/REAL.1991.160369 . ISBN  0-8186-2450-7. S2CID 31127772 . 
  6. Lehoczky, J.; Sha, L.; Ding, Y. (1989), "El algoritmo de programación monotónica de tasa: caracterización exacta y comportamiento en el caso promedio", Simposio de Sistemas en Tiempo Real de la IEEE , págs. 166–171 , doi : 10.1109/REAL.1989.63567 , ISBN  978-0-8186-2004-1, S2CID 206524469 .
  7. Enrico Bini; Giorgio C. Buttazzo; Giuseppe M. Buttazzo (2003), "Análisis de tasa monótona: el límite hiperbólico", IEEE Transactions on Computers , 52 (7): 933–942 , doi : 10.1109/TC.2003.1214341 , hdl : 11382/200358
  8. Lampson, BW ; Redell, DD (1980), "Experiencia con procesos y monitores en Mesa", Communications of the ACM , 23 (2): 105–117 , CiteSeerX 10.1.1.46.7240 , doi : 10.1145/358818.358824 , S2CID 1594544  .
  9. Buttazzo, Giorgio (2011), Sistemas informáticos de tiempo real estricto: algoritmos de planificación predecibles y aplicaciones (Tercera ed.), Nueva York, NY: Springer, pág. 225  
  10. "Real-Time Linux Wiki" . kernel.org. 26 de marzo de 2008. Consultado el 14 de marzo de 2014 .
  11. Sha, L.; Rajkumar, R.; Lehoczky, JP (1990), "Protocolos de herencia de prioridad: un enfoque para la sincronización en tiempo real", IEEE Transactions on Computers , 39 (9): 1175–1185 , doi : 10.1109/12.57058.
  12. Buttazzo, Giorgio (2011), Sistemas informáticos de tiempo real estricto: algoritmos de planificación predecibles y aplicaciones (Tercera ed.), Nueva York, NY: Springer, pág. 212  
  13. "Mike Jones en Microsoft Research" .
  14. "Error de reinicio de Mars Pathfinder - Antología de interés" . Archivado del original el 5 de octubre de 2011. Consultado el 9 de septiembre de 2008 .

Lecturas adicionales

  • Buttazzo, Giorgio (2011), Sistemas informáticos de tiempo real estricto: algoritmos de planificación predecibles y aplicaciones , Nueva York, NY: Springer.
  • Alan Burns y Andy Wellings (2009), Sistemas en tiempo real y lenguajes de programación (4.ª  ed.), Addison-Wesley, ISBN 978-0-321-41745-9
  • Liu, Jane WS (2000), Sistemas en tiempo real , Upper Saddle River, NJ: Prentice Hall, Capítulo 6.
  • Joseph, M.; Pandya, P. (1986), "Finding response times in real-time systems", BCS Computer Journal , 29 (5): 390– 395, doi : 10.1093/comjnl/29.5.390.
  • Sha, Lui; Goodenough, John B. (abril de 1990), "Teoría de la planificación en tiempo real y Ada", IEEE Computer , 23 (4): 53–62 , doi : 10.1109/2.55469 , S2CID 12647942 
  • Error en la sonda Mars Pathfinder detectado por el equipo de investigación de Microsoft.
  • Lo que realmente sucedió en el rover Pathfinder de Marte, por Mike Jones, de The Risks Digest, vol. 19, número 49.
  • La verdadera razón del error de Mars Pathfinder, según quienes lo experimentaron directamente, en lugar de alguien cuya empresa y, por lo tanto, el valor de sus acciones dependían de la descripción del problema, o alguien que escuchó a alguien hablar sobre el problema.