Documento Completo - pdf-PDFA
Documento Completo - pdf-PDFA
Documento Completo - pdf-PDFA
1. Introducción
CACIC 2020
DIIT UNLaM / Red UNCI
ISBN 978-987-4417-90-9 630
CACIC 2020
DIIT UNLaM / Red UNCI
ISBN 978-987-4417-90-9 631
de manera exacta o aproximada. Por otro lado, existen trabajos previos de im-
plementación de estos métodos en un SOTR. En [15] se implementa una variante
del algoritmo de SS aproximado [13] en MaRTE OS5 [16]. En [17] se presenta
una implementación del método de cálculo exacto [14] también sobre MaRTE
OS. Una implementación de un método de cálculo aproximado en LejosRT se
desarrolla en [18].
#include #include
slack.h
CACIC 2020
DIIT UNLaM / Red UNCI
ISBN 978-987-4417-90-9 632
Se considera que las tareas que conforman el sistema se dividen en dos con-
juntos:
TTRs: modeladas a partir del modelo propuesto en [4]. Cada tarea genera
genera una serie infinita de instancias, siendo jk,i la k-ésima instancia de la
TTR i. Cada TTR se caracteriza mediante su periodo (Ti ), su vencimiento
relativo (Di ≤ Ti ), su peor caso de tiempo de ejecución (Ci ), su peor caso
de tiempo de respuesta (Ri ), el SD en el instante crı́tico (SDi (0)), el SD
en el instante actual (SDi (tc )), el tiempo ejecutado por la instancia actual
(ci (tc )) y un contador de instanciaciones. Notar que SD(tc ) = mı́n SDi (tc )
con i = 1, 2, . . . , n.
TNTRs: Debido a su heterogeneidad no cuentan con un modelo especı́fico
asociado.
Los atributos del modelo de tareas son agrupados en una estructura de datos
denominada SsTCB t, que se agrega al Task Control Block (TCB ) de la tarea
mediante la funcionalidad Thread Local Storage (TLS ) de FreeRTOS. Esta es-
tructura y otras definiciones se encuentran en el archivo slack.h.
xSsTaskList: Reúne todas las TTR, sin importar el estado, para simplificar
el el cálculo del SD.
xDeadlineTaskList: Registra los vencimientos absolutos de todas las TTR,
y se mantiene ordenada por el vencimiento más próximo.
xSlackDelayedTaskList: Contiene las TNTR suspendidas por falta de SD.
Estas tareas continuarán su ejecución cuando SD(tc ) > SDmin .
CACIC 2020
DIIT UNLaM / Red UNCI
ISBN 978-987-4417-90-9 633
CACIC 2020
DIIT UNLaM / Red UNCI
ISBN 978-987-4417-90-9 634
CACIC 2020
DIIT UNLaM / Red UNCI
ISBN 978-987-4417-90-9 635
m−1 TNTR 1
m−2 TNTR 2 TNTR 3
...
m−n TNTR 4 TNTR 5
m−n−1 TTR 6
m−n−2 TTR 7
...
1 TTR 8
0 SB idle
Figura 2. Cola de tareas listas organizada para para planificación mediante SS.
3. Resultados Experimentales
3.1. Ejemplo de Ejecución
Se presenta una traza de ejemplo sobre en una placa mbed LPC1768 y FreeR-
TOS v10.1.3. El sistema consta de 4 TTR, {(1, 3, 3), (1, 4, 4), (1, 6, 6), (1, 12, 12)}
con tiempos expresados en segundos, y dos TNTR, TA1 (de máxima prioridad)
y TA2, con un tiempo de ejecución aleatorio no mayor a los 2000 ms.
La figura 3 muestra la traza generada por Tracealyzer8 v3.1.2. Se observa
cómo la ejecución de la primer instancia de TA2 es desalojada por TA1 y luego
al agotarse el SD (en este caso SDmin = 1). FreeRTOS ejecuta entonces la
TTR T1, que como ejecuta un tiempo menor a su peor caso de ejecución genera
SD. Esto permite ejecutar nuevamente a TA2. Se puede ver también cómo en el
instante t = 12 todas las TTR son desplazadas por la ejecución de otra instancia
de TA2. En la salida a través del puerto serial cada lı́nea indica la tarea en
ejecución, si inicia (S) o finaliza (E), el valor del reloj, el SD del sistema, el SD
de las TTR T1 a T4 y el tiempo ejecutado (en ticks) por la tarea.
CACIC 2020
DIIT UNLaM / Red UNCI
ISBN 978-987-4417-90-9 636
CACIC 2020
DIIT UNLaM / Red UNCI
ISBN 978-987-4417-90-9 637
2,500
Con SD 2,5
Sin SD
FreeRTOS
2,000
2
1,000 1
500 0,5
0 0
10 20 30 40 50 60 70 80 90
FU ( %)
4. Conclusiones
Referencias
[1] A. Burns y R. I. Davis, ((A Survey of Research into Mixed Criticality Systems)),
ACM Comput. Surv., vol. 50, n.o 6, 82:1-82:37, 2017.
9
https://github.com/unpsjb-rtsg/slack-freertos
CACIC 2020
DIIT UNLaM / Red UNCI
ISBN 978-987-4417-90-9 638
CACIC 2020
DIIT UNLaM / Red UNCI