El término análisis de programación en la computación en tiempo real incluye el análisis y la prueba del sistema de programación y los algoritmos utilizados en las aplicaciones en tiempo real. En informática , el análisis de programación en tiempo real es la evaluación, prueba y verificación del sistema de programación y los algoritmos utilizados en las operaciones en tiempo real. Para operaciones críticas, se debe probar y verificar el rendimiento de un sistema en tiempo real.
Un sistema de programación en tiempo real está compuesto por el programador, el reloj y los elementos de hardware de procesamiento. En un sistema de tiempo real, un proceso o tarea tiene capacidad de programación; Las tareas son aceptadas por un sistema en tiempo real y completadas según lo especificado por la fecha límite de la tarea, dependiendo de la característica del algoritmo de programación. [1] La preocupación del modelado y evaluación de un sistema de programación en tiempo real se basa en el análisis de la capacidad del algoritmo para cumplir con una fecha límite del proceso. Una fecha límite se define como el tiempo necesario para procesar una tarea.
Por ejemplo, en un algoritmo de programación en tiempo real, una fecha límite podría establecerse en cinco nanosegundos. En una operación crítica, la tarea debe procesarse en el tiempo especificado por la fecha límite (es decir, cinco nanosegundos). Una tarea en un sistema de tiempo real debe completarse "ni demasiado pronto ni demasiado tarde; ..". [2] Se dice que un sistema no es programable cuando las tareas no pueden cumplir con los plazos especificados. [3] Una tarea puede clasificarse como un proceso periódico o aperiódico. [4]
Clasificaciones
Los criterios de un tiempo real se pueden clasificar en duros , firmes o blandos . El planificador establece los algoritmos para ejecutar tareas de acuerdo con un orden específico. [4] Existen múltiples modelos matemáticos para representar un sistema de programación, la mayoría de las implementaciones del algoritmo de programación en tiempo real se modelan para la implementación de configuraciones de monoprocesadores o multiprocesadores. El algoritmo de programación más desafiante se encuentra en multiprocesadores, no siempre es factible implementar un algoritmo de programación monoprocesador en un multiprocesador. [4] Los algoritmos utilizados en el análisis de programación "pueden clasificarse como preventivos o no preventivos" . [1]
Un algoritmo de programación define cómo procesa las tareas el sistema de programación. En términos generales, en el algoritmo de un sistema de programación en tiempo real, a cada tarea se le asigna una descripción, una fecha límite y un identificador (que indica la prioridad). El algoritmo de programación seleccionado determina cómo se asignan las prioridades a una tarea en particular. Un algoritmo de programación en tiempo real se puede clasificar como estático o dinámico. Para un programador estático, las prioridades de las tareas se determinan antes de que se ejecute el sistema. Un programador dinámico determina las prioridades de las tareas mientras se ejecuta. [4] Los elementos de hardware aceptan las tareas en un sistema de programación en tiempo real desde el entorno informático y se procesan en tiempo real. Una señal de salida indica el estado de procesamiento. [5] Una fecha límite de tarea indica el tiempo establecido para completar cada tarea.
No siempre es posible cumplir con el plazo requerido; por lo tanto, se debe realizar una verificación adicional del algoritmo de programación. Se pueden implementar dos modelos diferentes utilizando un algoritmo de programación dinámica; se puede asignar una fecha límite de tarea de acuerdo con la prioridad de la tarea (fecha límite más temprana) o se asigna un tiempo de finalización para cada tarea restando el tiempo de procesamiento de la fecha límite (menor laxitud). [4] Los plazos y el tiempo de ejecución de la tarea requerido deben entenderse de antemano para asegurar el uso efectivo de los tiempos de ejecución de los elementos de procesamiento.
Prueba y verificación
La verificación del rendimiento y la ejecución de un algoritmo de programación en tiempo real se realiza mediante el análisis de los tiempos de ejecución del algoritmo. La verificación del rendimiento de un programador en tiempo real requerirá probar el algoritmo de programación en diferentes escenarios de prueba, incluido el tiempo de ejecución del peor de los casos . Estos escenarios de prueba incluyen el peor de los casos y los casos desfavorables para evaluar el rendimiento del algoritmo. Los cálculos de tiempo necesarios para el análisis de los sistemas de programación requieren evaluar el algoritmo a nivel de código. [4]
Se pueden aplicar diferentes métodos para probar un sistema de programación en un sistema en tiempo real. Algunos métodos incluyen: verificaciones de entrada / salida y análisis de código. Un método consiste en probar cada condición de entrada y realizar observaciones de las salidas. Dependiendo del número de insumos, este enfoque podría resultar en un gran esfuerzo. Otro método más rápido y económico es un enfoque basado en el riesgo en el que se seleccionan entradas críticas representativas para las pruebas. Este método es más económico, pero podría dar lugar a conclusiones menos que óptimas sobre la validez del sistema si se utiliza el enfoque incorrecto. Los requisitos de reevaluación después de los cambios en el sistema de programación se consideran caso por caso.
Las pruebas y la verificación de los sistemas en tiempo real no deben limitarse a las verificaciones de entrada / salida y códigos, sino que también se realizan en aplicaciones en ejecución que utilizan métodos intrusivos o no intrusivos.
Ver también
Referencias
- ^ a b Leung, Joseph; Zhao, Hairong (noviembre de 2005). Análisis de programación en tiempo real (PDF) (Informe técnico). DOT / FAA / AR-05/27.
- ^ Liu, Zhiming; Joseph, Mathai (17 de febrero de 2001). "Verificación, Refinamiento y Programación de Programas en Tiempo Real". Informática Teórica . 253 (1): 119-152. CiteSeerX 10.1.1.50.2896 . doi : 10.1016 / s0304-3975 (00) 00091-8 .
- ^ Sorin, Manolache; Petru, Eles; Zebo, Peng (noviembre de 2004). "Análisis de Programabilidad de Aplicaciones con Tiempos de Ejecución de Tareas Estocásticas" (PDF) . Transacciones ACM en sistemas informáticos integrados . 3 (4): 706–735. doi : 10.1145 / 1027794.1027797 . S2CID 17526360 . Consultado el 4 de diciembre de 2015 .
- ^ a b c d e f Audsley, N .; Burns, A. (1990). Programación del sistema en tiempo real (PDF) (Informe técnico). Universidad de York, Reino Unido.
- ^ Castanet, R .; Laurençot, P. "Prueba de sistemas en tiempo real" . 15ª Conferencia Mundial sobre Ensayos No Destructivos . AIPnD . Consultado el 4 de diciembre de 2015 .
enlaces externos
- Comité técnico de IEEE sobre sistemas en tiempo real
- Computación en tiempo real (tema de Elsevier)
- https://www.cs.rutgers.edu/~pxk/416/notes/08-rt_scheduling.html
- RT.js: programación práctica en tiempo real para aplicaciones web