Las computadoras se utilizan para controlar una amplia variedad de sistemas que van desde maquinas domesticas  sencillas hasta plantas enteras de fabricación. Estas computadoras interactúan directamente con dispositivos de hardware. El software de dichos sistemas es software de tiempo real embebido que debe reaccionar a eventos generados por el hardware y emitir señales  de control de respuesta a estos eventos. Esta embebido a sistemas de hardware más grandes y debe responder, en tiempo real a eventos del entorno del sistema. Los sistemas de tiempo real embebidos son diferentes de otros tipos de sistemas de software. Su correcto funcionamiento depende de que el sistema responda a los eventos dentro de un corto intervalo de tiempo.se puede definir un sistema en tiempo real como sigue:

Un sistema de tiempo real es un software cuyo correcto funcionamiento depende de los resultados  producidos  por el mismo y del instante de tiempo en el que se producen estos resultados. Un sistema de tiempo real blando (soft) es un sistema  cuyo funcionamiento degrada si los resultados no se producen correctamente de acuerdo con los requerimientos temporales especificados. Un sistema de tiempo real duro (hard) es un sistema cuyo funcionamiento es incorrecto si los resultados no se producen de acuerdo a la especificación temporal.

Una forma de ver un sistema en tiempo real es como un sistema de estimo/respuesta. Dado un estímulo de entrada, el sistema debe producir la correspondiente salida. Se puede, por lo tanto, definir el comportamiento de un sistema de tiempo real haciendo una lista de estímulos recibidos por el sistema, las respuestas asociadas y el tiempo real en que dicha respuestas deben producirse.

Los estímulos pueden pertenecer a dos clases:

  1. Estímulos periódicos. Ocurren a intervalos de tiempos predicibles .por ejemplo, el sistema debe de tener un sensor cada 50 mili segundos y realizar una acción respuesta) dependiendo del valor de ese sensor (estimulo).
  2. Estímulos aperiódicos. Ocurren de forma irregular. Normalmente son provocados utilizando el mecanismo de interrupciones de la computadora. un ejemplo de dicho estimo podría ser una interrupción para indicar que una trasferencia  de E/S sea completado y que los datos están disponibles en un buffer.

Los estímulos periódicos en un sistema de tiempo real son generados normalmente por sensores asociados al sistema. Estos proporcionan información sobre el estado del entorno del sistema.las respuestas son dirigidas a un conjunto de actuadores  que controlan a un equipo como una bomba que influye el entorno del sistema .los estimulo  aperiódicos pueden generarse por actuadores o sensores.

arquitectura_preempt

Un sistema real tiene que responder a estímulos que ocurren en diferentes instantes de tiempo por lo tanto se tiene que organizar su arquitectura  para que, tan pronto como se reciba un estímulo, el control sea trasferido al manejador adecuado.

Por consiguiente los sistemas de tiempo real se diseñan como un conjunto de procesos concurrentes que cooperan entre si .con el objeto de soportar la gestión de estos procesos, la plataforma de ejecución  para la mayoría de los sistemas de tiempo real incluye un sistema operativo en tiempo real.las facilidades que proporcionan este sistema operativo son accedidas  a través del sistema de soporte de tiempo de ejecución (run-time sistema) para el lenguaje de programación de tiempo real utilizado.

La generalización de este estimulo-repuesta   de un sistema de tiempo real conduce a un modelo arquitectónico genérico abstracto en el que al tres tipos de procesos, los procesos de computacionales  calculan la respuesta requerida para el estímulo recibido del sistema :los procesos de control de actuadores  controlan el funcionamiento del actuador. Este modelo permite recoger rápidamente los datos desde el sensor(antes de la siguiente entrada esté disponible) y permiten que su procesamiento y la respuesta asociada al actuador se realicen mas tarde.

Los lenguajes de programación desarrollados para sistemas de tiempo real tiene que incluir  facilidades para acceder al hardware del sistema, y debería ser posible predecir la duración  de operaciones particulares. Los lenguaje a nivel de sistemas, como C,que permiten genera código eficiente también se utilizan en general.

La aventaja de utilizar  un lenguaje de programación de sistemas de bajo nivel como c es que permite el desarrollo de sistemas de bajo nivel como  C es que permiten el desarrollo de programas muy eficientes. Sin embargo estos programas no incluyen construcciones para soportar la concurrencia o la gestión de recursos compartidos.