¿Qué son las aplicaciones en tiempo real?

Texto original de la pregunta: ¿Cuál es la aplicación en tiempo real de C?

Creo que el autor escuchó el término en el contexto del lenguaje de programación C, sin embargo, el término aplicación en tiempo real o sistema en tiempo real tiene un contexto mucho más amplio que la aplicación al lenguaje C solamente.

Creo que estoy completamente calificado para responder esta pregunta después de años de experiencia en programación en tiempo real.

El software califica como en tiempo real cuando una de sus principales limitaciones de tiempo de ejecución es el tiempo. Específicamente, se deben alcanzar períodos dentro de ciertos objetivos. De hecho, los juegos son de alguna manera un buen ejemplo de software en tiempo real, ya que los motores de renderizado tienen que finalizar el cálculo del marco antes de que pueda mostrarse en la pantalla. Sin embargo, son muy suaves .

Y ahora llegamos a un punto muy importante en materia de software en tiempo real. La clasificación del software en tiempo real se basa en la consecuencia de perder un plazo:

  • Difícil : perder una fecha límite es una falla total del sistema; puede significar la muerte de personas a bordo del avión.
  • Firme : los incumplimientos de plazos poco frecuentes son tolerables, pero pueden degradar la calidad de servicio del sistema. La utilidad de un resultado es cero después de su fecha límite.
  • Suave : la utilidad de un resultado se degrada después de su fecha límite, lo que degrada la calidad del servicio del sistema.

Las explicaciones anteriores son difíciles de entender, por lo que las ilustraciones a continuación son más explicativas:

Este gráfico muestra la degradación del valor o la calidad con el tiempo después de perder un plazo para un sistema de tiempo real flexible.

Esta es una degradación mucho más pronunciada del sistema de tiempo real firme, algunos dibujan este gráfico de manera diferente, donde la línea es vertical a cero en la fecha límite y luego continúa en cero.

Y el duro sistema en tiempo real, donde la fecha límite perdida es una pérdida total de valor de calidad.

Estos cuadros explican por qué los motores de los juegos son aplicaciones suaves en tiempo real, ya que perder fotogramas es una molestia para el jugador y no le cuesta la vida a nadie; explican qué significa la fecha límite faltante para un avión; y coloca los sistemas de inversión automatizados en algún lugar entre duro y firme, ya que la oferta perdida no tiene que significar una pérdida total de inversión.

El tiempo real depende mucho del contexto. En las aplicaciones empresariales, generalmente significa respuestas de solicitud que ocurren de inmediato, como servicios web, JMS, etc. Eso no significa que sean instantáneas. Su servicio web puede hacer una consulta en una base de datos haciendo varias uniones y devolver largas listas de datos y luego transformarlos. Pero el usuario o sistema que realiza la solicitud puede esperar una respuesta.

Esto contrasta con los procesos por lotes en los que creo un archivo de datos para su procesamiento, se lo envío a alguien como un banco, tal vez a través de FTP, y no espero una respuesta inmediata, sino una respuesta asincrónica o tal vez no. Recientemente escribí uno que envía archivos a través de FTP y 5 días después uno comienza a sondear para obtener una respuesta.

El software en tiempo real para sistemas integrados significa algo completamente diferente. En ese caso tiene que ver con una serie de cosas como la ejecución de subprocesos. Si solicito a un sensor del motor que averigüe cuánto combustible rociar del inyector en el próximo ciclo, no me sirve de nada si la lectura del sensor llega un par de segundos demasiado tarde.

El tiempo real en embebido puede ser aún más fino en significado que eso. Obviamente, el tiempo real verdadero sería instantáneo y eso es imposible.

En términos simples, las aplicaciones en tiempo real son software que dependen del tiempo, no pueden ser susceptibles a fallas y requieren una acción inmediata y siempre activa.

Un buen ejemplo de una aplicación en tiempo real es el software de gestión de vuelos para el control del aeropuerto: siempre los necesita en línea, y cada solicitud debe ser atendida lo antes posible, y no puede ser inestable, especialmente en ciudades ocupadas como Nueva York y los angeles.