Un sistema de tiempo real es un sistema que responde a un estímulo externo dentro de un tiempo especificado, no depende solo de que la lógica e implementación de los programas computacionales sea correcto, también se debe conocer exactamente el tiempo que le tomará al sistema responder a un determinado evento. Este tiempo debe ser invariable/constante y además si las restricciones de tiempo no son respetadas se dice que el sistema ha fallado.
Los sistemas de tiempo real pueden dividirse en dos tipos diferentes:
- Tiempo real estricto (hard real-time): Cuando es absolutamente necesario que la respuesta se produzca dentro del límite especificado, en otro caso producirá daños no deseados o un error fatal en el sistema. Ej.: control de vuelo.
- Tiempo real no estricto(soft real-time): Son aquellos en los que los tiempos de respuesta son importantes pero el sistema seguirá funcionando correctamente aunque los tiempo limites no se cumplen y pese a que el plazo no se cumplió aún tiene sentido planificar y completar la tarea.
CARACTERÍSTICAS
- Determinismo: Se refiere a cuanto es el tiempo que toma una tarea en iniciarse después de una interrupción, esto es importante porque los sistemas de tiempo real necesitan que ciertas tareas se ejecuten antes de que otras puedan iniciar.
- Tamaño y complejidad: A menudo los problemas relacionados con sistemas en tiempo real se convierten en problemas de gran tamaño y complejidad, es por ello que los sistemas de tiempo real precisan mantenimiento constante y mejoras durante su ciclo de vida, deben evolucionar continuamente.
- Manipulación de números reales: Es la manera de representar los valores leídos del mundo real en un computador.
- Seguridad y fiabilidad: Los sistemas en tiempo real suelen estar relacionados con procesos en los que los fallos tienen consecuencias graves, por lo tanto la tolerancia a fallos es un factor de vital importancia en su diseño.
- Concurrencia: En general, un mismo sistema ha de responder a distintos estímulos realizando distintos procesos ligados entre sí o independientes. Se deben realizar procesos de control concurrentes, por lo que es necesario disponer de herramientas que permitan programación concurrente.
- Eficiencia: Esta característica es exigible a todo tipo de sistemas, aun mas en sistemas que pueden ser críticos, como los STR(critico respecto al tiempo). Con esta característica se pretende asegura que el funcionamiento lógico del sistema es correcto y óptimo.
- Dependencia del tiempo: Como ya hemos visto el tiempo es el factor distintivo de los STR, a los que se les exige no solo una corrección lógica, si no que cumplan unos determinados requerimientos temporales. Su comportamiento temporal tiene que ser determinista, y a la hora del diseño, hay que prever el peor de los casos.
- Dispositivos de E/S especiales: La conexión con el exterior está adaptada a los procesos que se controlan y a menudo condicionan el funcionamiento de sistema. Las interacciones con el exterior pueden ser activas o pasivas, es decir, el sistema debe controlar el acceso al medio físico, o bien el medio físico perturba de alguna manera al sistema de control.
Existen unas propiedades que permiten distinguir los sistemas de tiempo real de los que no lo son y aquí te nombramos las siguientes:
* Garantía de plazos: Todas las tareas ejecutan su actividad dentro de plazo cada vez que se activan (los plazos de todas las tareas están garantizados)
* Tiempo de respuesta máximo: En un sistema de tiempo real se trata de acotar el tiempo de respuesta en el peor de los casos de todas las tareas.
* Estabilidad: Si a causa de una sobrecarga del sistema no se pueden ejecutar todas las tareas dentro de plazo, se debe garantizar que, al menos, un subconjunto de tareas críticas cumpla los plazos.
HERRAMIENTA UTILIZADA PARA MODELAR EN STR
Podemos apoyarnos en UML para el modelado de sistemas en tiempo real y al hacerlo podemos tener en cuenta las siguientes pautas:
* Capturar y entender los requerimientos usando un modelo de casos de uso.
* Estudiar las distintas partes que conforman al sistema y cómo interactúan estas. Reflejando las interfaces, protocolos e intercambio de señales. Para tal fin nos podemos apoyar de los diagramas de clases, estructura compuesta y comunicación.
* Estudiar el comportamiento del sistema en el tiempo y el dependiente del estado usando diagramas de interacción, diagramas de transición de estados y diagramas de tiempo.
Por supuesto esta no es una relación exhaustiva, en caso de ser necesario adicione los diagramas que sean necesarios, lo importante como siempre es tener una comprensión aceptable del problema y especificar una solución que lo resuelva.