- Un sistema de tiempo real debe producir resultados correctos dentro de plazos estrictos, coordinado con procesos físicos y con comportamiento determinista.
- La arquitectura de un STR combina hardware específico, RTOS, algoritmos de planificación (como EDF) y mecanismos de concurrencia seguros.
- Fiabilidad, seguridad, tolerancia a fallos y eficiencia temporal son requisitos clave en sectores como industria, transporte, defensa, telecomunicaciones y medicina.
- Los RTOS y los lenguajes de tiempo real permiten diseñar aplicaciones embebidas capaces de responder a eventos externos con latencias acotadas y previsibles.
Los sistemas electrónicos en tiempo real están metidos hasta la médula en nuestra vida diaria, aunque muchas veces pasen desapercibidos. Desde el airbag del coche hasta el control del tráfico aéreo, pasando por un simple horno microondas, todos dependen de que el sistema informático no solo haga las cosas bien, sino que las haga en el momento justo. Si se pasa de tiempo, aunque sea por poco, se considera que ha fallado, aunque el cálculo sea perfecto.
La gracia (y la dificultad) de estos sistemas está en que tienen que interactuar con el mundo físico siguiendo plazos muy concretos. No basta con ser “rápido”: deben ser previsibles, estables y estar sincronizados con lo que pasa fuera del ordenador. Por eso el diseño, el análisis y las pruebas de un sistema de tiempo real son bastante más delicados que en un sistema convencional de propósito general.
Qué es un sistema de tiempo real y en qué se diferencia de un sistema rápido
Un sistema de tiempo real (STR) es básicamente un sistema digital que controla o supervisa un proceso físico con unas restricciones temporales claras. No solo debe producir resultados correctos desde el punto de vista lógico, sino garantizar que la respuesta llega dentro de un intervalo de tiempo definido; si no se cumple ese plazo, se considera fallo del sistema.
Ejemplos muy claros de este comportamiento son la activación del airbag o el ABS de un coche, un robot que tiene que atrapar una pelota en el aire, o el sistema de gestión del motor de un vehículo moderno. En todos estos casos, una reacción fuera de tiempo, aunque llegue unos milisegundos tarde, puede ser inútil o incluso peligrosa.
La palabra “tiempo” en este contexto quiere decir que el funcionamiento correcto depende de cuándo se produce la respuesta, no solo de cuál es. Y “real” implica que el sistema debe reaccionar a los eventos externos durante su evolución real, usando una escala de tiempo coherente con la del entorno físico que controla.
Esto contrasta con un sistema simplemente “rápido”, donde solo importa que la salida aparezca lo antes posible, sin tener que sincronizarse con el mundo exterior. Un servidor web muy potente puede ser rápido, pero no es necesariamente un sistema de tiempo real si no tiene plazos estrictos ligados a eventos físicos.
También conviene distinguirlos de los sistemas en línea: estos pueden estar siempre conectados y atendiendo peticiones (por ejemplo, un navegador o un sistema de reservas), pero no tienen por qué respetar plazos rígidos coordinados con procesos físicos, así que no son automáticamente sistemas de tiempo real; sin embargo, en aplicaciones web modernas la búsqueda en tiempo real puede requerir latencias y garantías similares.
Ejemplo práctico: control de semáforos en una intersección
Un caso muy ilustrativo de tiempo real en sistemas electrónicos es el de un sistema de control de semáforos en una intersección con mucho tráfico. Aquí no vale con cambiar luces “más o menos” a tiempo: hay que tomar decisiones continuamente en función de lo que está pasando en la calle.
En primer lugar, se realiza el censado del tráfico. Se colocan sensores (lazos inductivos, cámaras, sensores infrarrojos, etc.) en los carriles y pasos de peatones para detectar vehículos y personas. Estos dispositivos envían datos constantemente al controlador central, que se alimenta así de información fresca del entorno.
En el centro de control, un ordenador embebido procesa los datos en tiempo real, aplicando algoritmos que calculan el número de vehículos en cola, la ocupación de cada carril o el número de peatones esperando. Con esa información determina cuánto debe durar cada fase del semáforo en cada dirección.
Después viene la toma de decisiones. El sistema decide, por ejemplo, alargar el verde en la dirección más saturada para reducir la congestión o priorizar un paso de peatones si lleva demasiado tiempo esperando. Estas decisiones se basan en políticas predefinidas de optimización y en los requisitos de seguridad y fluidez.
Una vez tomada la decisión, el controlador actúa sobre los actuadores que gobiernan las luces. Cambia el estado de los semáforos con precisión de milisegundos, respetando ámbar, todo rojo, interbloqueos y demás requisitos de seguridad, asegurando una transición fluida entre fases.
Todo esto se hace con optimización continua: el sistema monitoriza el tráfico sin pausa y ajusta en tiempo real los tiempos de verde, ámbar y rojo para adaptarse a cambios bruscos (una caravana, un paso de ambulancia, variación de flujos por franjas horarias, etc.). Aquí se ve claramente por qué hablamos de tiempo real: la lógica de control tiene sentido solo si las decisiones se ejecutan dentro de determinados plazos.
Historia y evolución de los sistemas de tiempo real
El origen de la computación en tiempo real está muy ligado al control de procesos industriales y aeroespaciales en la segunda mitad del siglo XX. Ya en 1965 se publicaron textos de referencia que sentaban las bases de estos sistemas, y poco después Liu y Layland formalizaron en 1973 la definición matemática de planificación en sistemas de tiempo real estricto y flexible.
En la simulación por ordenador se empezó a hablar de simulaciones en tiempo real cuando el modelo informático se ejecutaba tan rápido como el proceso físico que representaba. Aquí apareció un dilema clásico: o se aumenta la fidelidad del modelo y se sacrifica velocidad, o se baja la precisión para alcanzar o superar el tiempo real.
Lo mismo pasó con las interfaces gráficas y los motores de videojuegos: para que la experiencia sea fluida, deben reaccionar lo bastante rápido a entradas de usuario y cambios de escena, manteniendo un número de fotogramas por segundo alto y constante.
Desde los años 60 y 70, los sistemas de tiempo real han ido madurando gracias a lecciones aprendidas de casos reales muy sonados, algunos casi desastrosos, que ayudaron a refinar las técnicas de análisis temporal y planificación.
Casos emblemáticos: Apolo 11 y Mars Pathfinder
Uno de los incidentes más famosos en la historia temprana del tiempo real fue la sobrecarga del ordenador del módulo lunar del Apolo 11. Durante el descenso, el sistema de guiado comenzó a lanzar alarmas (como la famosa 1202) indicando que la CPU iba retrasada respecto a su carga de trabajo.
Según los relatos de la misión, si esas alarmas hubiesen persistido, la fiabilidad de los datos de navegación para la tripulación habría quedado comprometida y la misión podría haberse abortado. Finalmente, basándose en simulaciones previas y experiencia, se decidió seguir adelante, y el módulo Eagle consiguió aterrizar en la Luna con éxito.
En esencia, se trataba de una situación de sobrecarga de procesador: había más cómputo del que la CPU podía realizar dentro de los plazos, sobre todo cuando se añadió el procesamiento asociado a la alarma a la carga normal. Este episodio dejó clara la importancia de mantener márgenes de recursos suficientes en sistemas donde el coste del fallo es inaceptable.
Otro caso muy estudiado es el de la nave espacial Mars Pathfinder. Aquí el problema no fue tanto de sobrecarga bruta, sino de un fenómeno conocido como inversión de prioridades, que provocó la pérdida de plazos a pesar de que la CPU tenía un margen de capacidad aparentemente razonable.
En un sistema con planificación expulsiva, la inversión de prioridades ocurre cuando una tarea de alta prioridad queda bloqueada por una de baja prioridad que posee un recurso compartido (por ejemplo, un mutex) y, mientras tanto, una tarea de prioridad media interrumpe a la de baja. El resultado es que la tarea crítica queda bloqueada indirectamente por una tarea menos importante, rompiendo las garantías de tiempo real.
Para mitigar este riesgo se emplea el protocolo de herencia de prioridad. Cuando una tarea de alta prioridad se ve bloqueada por otra de prioridad más baja, el planificador eleva temporalmente la prioridad de la tarea baja hasta el nivel de la alta. Así evita que tareas de prioridad intermedia la interrumpan, permitiendo que libere el recurso lo más rápido posible y devolviendo después su prioridad original.
Estos casos dejaron claro que diseñar un STR no es solo “tener margen suficiente de CPU”, sino también entender la teoría de planificación y sincronización, y comprobar temporalmente todo el sistema (hardware, firmware y software) en conjunto.
Componentes básicos de un sistema de tiempo real
Un STR típico está formado por una combinación de hardware específico, software y elementos de interfaz con el proceso físico. No se limita a un simple programa: es un sistema integrado que tiene que responder a estímulos externos dentro de plazos conocidos.
En el lado físico encontramos el sistema a controlar: puede ser cualquier proceso susceptible de regulación, como una planta industrial, un motor, una línea de producción, un semáforo, un robot o un equipo médico. El STR mide su estado y aplica acciones de control para mantenerlo dentro de los parámetros deseados.
Entre el mundo físico y el ordenador hay una interfaz de señales, formada por conversores analógico-digital (ADC) y digital-analógico (DAC), así como circuitería de acondicionamiento. Esta capa adapta tensiones, corrientes y formatos de señal para que puedan ser leídos y generados por el sistema digital.
Un elemento clave es el reloj de tiempo real, que genera interrupciones periódicas en cada periodo de muestreo. Gracias a él se sincronizan las tareas de adquisición de datos, control y actuación, garantizando que las mediciones y las órdenes se emiten exactamente cuando toca.
El sistema suele incluir una consola para el operador humano, con mandos de arranque y parada, interfaces para ajustar parámetros y mecanismos para forzar modos manuales. Además, se utilizan pantallas para mostrar estados, alarmas, tendencias y cualquier información relevante para monitorizar el proceso.
Los cambios de estado importantes se almacenan en una base de datos de tiempo real, que permite recordar qué ha pasado, investigar fallos y extraer estadísticas para mejorar la gestión. Esta información histórica crece con el tiempo y alimenta decisiones de mantenimiento, optimización o rediseño.
En muchos entornos industriales se dispone de un sistema de monitorización remota, que permite supervisar y, en ocasiones, actuar sobre la planta desde centros de control distribuidos. Esto es fundamental cuando una instalación depende de otra (por ejemplo, una planta que provee materia prima a otra), y las decisiones en una impactan en toda la cadena.
En el corazón del STR está el computador embebido, cuyo software suele dividirse en varios tipos de módulos: algoritmos de control digital (reguladores, filtros, lazos de realimentación), registro de datos, interfaces de dirección y gestión, y la interacción directa con el operador.
Características clave: tiempo, concurrencia, seguridad y eficiencia
Los sistemas de tiempo real suelen tratar problemas de gran tamaño y complejidad, con múltiples variables, dispositivos externos y condiciones cambiantes. Esto obliga a cuidar mucho la arquitectura, la planificación y los mecanismos de comunicación entre tareas.
Como los datos proceden del mundo físico, el sistema debe manejar números reales (puntos flotantes, escalados fijos, etc.) que representen magnitudes como temperatura, presión, velocidad o tensión. La precisión en la representación y el cálculo puede ser determinante para la calidad del control.
La seguridad y la fiabilidad son normalmente críticas: un fallo puede causar pérdidas económicas serias, daños materiales, accidentes personales o impactos ambientales. Por eso se integran técnicas de tolerancia a fallos, redundancia y estrategias de degradación controlada.
La concurrencia es otra seña de identidad. Un STR suele ejecutar varias tareas en paralelo lógico: lectura de sensores, control, comunicaciones, registro, interfaz de usuario, etc. Esto obliga a gestionar recursos compartidos, evitar condiciones de carrera y garantizar que las secciones críticas no rompen los plazos temporales.
La eficiencia no es un lujo, es una necesidad. Un STR debe ser lógico y temporalmente correcto, pero además optimizado para aprovechar al máximo CPU, memoria y dispositivos de E/S. El reto está en encontrar un equilibrio entre margen temporal, coste de hardware y complejidad del software.
Los dispositivos de entrada/salida suelen ser especializados y fuertemente acoplados al proceso físico. No hablamos solo de puertos genéricos, sino de buses de campo, sensores inteligentes y protocolos de comunicación diseñados para minimizar la latencia y garantizar tiempos de entrega acotados.
Tipos de sistemas de tiempo real: duro, blando y firme
Según la severidad con la que tratan los errores temporales, los STR se clasifican en varias categorías. En un sistema de tiempo real estricto o duro (hard real-time), todos los plazos deben cumplirse sin excepción. Un solo incumplimiento puede provocar consecuencias graves o, como mínimo, invalidar el resultado.
Ejemplos típicos de tiempo real duro incluyen el control de vuelo, ciertos sistemas médicos críticos, o protecciones de infraestructuras eléctricas. En estos casos, un resultado correcto pero tardío no sirve de nada; el sistema debe estar diseñado para que, bajo ningún escenario previsto, falle su límite de tiempo.
Los sistemas de tiempo real blando o no estricto (soft real-time) permiten que, de vez en cuando, algún plazo se sobrepase. La utilidad del resultado disminuye con el retraso, pero puede seguir siendo aprovechable. Es el caso de aplicaciones multimedia o de adquisición de datos, donde algunos fotogramas perdidos o muestras retrasadas degradan la calidad, pero el sistema sigue funcionando.
Entre ambos extremos se encuentran los sistemas de tiempo real firme (firm real-time). Aquí se tolera que ocasionalmente se pierdan plazos, pero cuando una respuesta llega tarde pierde totalmente su valor y se descarta. Un ejemplo clásico son los sistemas de vídeo o telecomunicaciones en tiempo real: un frame que llega tarde se tira para mantener la sincronía del flujo.
Arquitecturas: abiertos/cerrados y centralizados/distribuidos
Los sistemas de tiempo real también se pueden clasificar por su grado de apertura tecnológica. Los sistemas propietarios emplean tecnologías y protocolos cerrados, controlados por un único proveedor, lo que puede dar buen rendimiento pero limita la interoperabilidad y la evolución.
En cambio, los sistemas abiertos utilizan estándares y protocolos públicos que facilitan la integración de componentes de distintos fabricantes, la reutilización de software y la migración progresiva a nuevas plataformas.
Otra distinción importante es entre sistemas centralizados y distribuidos. En un enfoque centralizado, un nodo principal se encarga de coordinar la comunicación y el procesamiento crítico, mientras que los demás nodos actúan como terminales o periféricos relativamente simples.
En una arquitectura distribuida, el procesamiento y la comunicación se reparten entre varios nodos inteligentes que cooperan de forma más o menos autónoma. Esto permite escalabilidad, redundancia y cercanía al proceso físico, pero complica la sincronización temporal y la coordinación global.
Determinismo, latencia de interrupción y responsividad
El determinismo es un atributo central de los STR: es la capacidad de predecir con alta probabilidad cuánto tardará una tarea en arrancar y terminar. No se trata de ser el más rápido posible, sino de que el tiempo de respuesta sea conocido y acotado.
La latencia de interrupción mide el tiempo desde que se genera una interrupción externa (por ejemplo, un sensor que avisa de un evento) hasta que el sistema comienza a atenderla. Este valor es crítico porque muchas peticiones de servicio provienen del entorno físico y no admiten demoras arbitrarias.
La responsividad se centra en el tiempo que tarda una tarea en ejecutarse una vez que la interrupción ha sido aceptada. Incluye factores como el tiempo de arranque de la rutina de servicio, la duración del procesamiento asociado y el impacto de interrupciones anidadas o preempciones.
Normalmente se realiza un análisis cuantitativo del determinismo y la responsividad para caracterizar el sistema: por ejemplo, se puede exigir que el 95 % de las tareas terminen dentro de cierto plazo. A partir de ahí, las aplicaciones que corren sobre el RTOS deben diseñarse para no caer en el rango de peor rendimiento esperado.
Control del sistema por parte de los procesos y fiabilidad
En muchos sistemas de tiempo real avanzados, los propios procesos de la aplicación disponen de un control muy fino sobre el sistema. Pueden declarar explícitamente su prioridad, sus necesidades de memoria (qué parte debe permanecer en caché, qué política de swapping se admite, etc.) y los privilegios que requieren.
Aunque a primera vista pueda parecer un modelo anárquico, en realidad se basa en tipos de procesos bien definidos y restricciones claras. Es habitual que se establezcan requisitos como: “los procesos de mantenimiento no deben superar el 3 % de uso de CPU, salvo en ventanas de baja carga claramente delimitadas”.
La fiabilidad va más allá de estar libre de fallos puntuales. Un STR debe mantener la calidad del servicio dentro de unos límites acordados durante largos periodos de tiempo, garantizando tiempos de respuesta acordes con las especificaciones incluso ante perturbaciones razonables.
Además, se exige tolerancia a fallos: si ocurre un problema grave (fallo de hardware, error humano, perturbación externa), el sistema debe preservar el máximo de datos y funcionalidad posible, y degradar su comportamiento priorizando las tareas críticas de mayor prioridad.
Lenguajes y programación en tiempo real
En la práctica, muchos STR están embebidos y deben interactuar con multitud de componentes externos, por lo que la programación concurrente y el control directo de dispositivos son fundamentales. Los lenguajes modernos ofrecen primitivas para hilos, comunicación y sincronización, pero en tiempo real hay que usarlas con mucho cuidado, especialmente en frameworks web y servicios como Laravel en tiempo real.
La eficiencia de la implementación es clave: característica “bonitas” del lenguaje pueden salir caras en términos de tiempo de respuesta, uso de CPU o consumo de memoria. Por eso, en sistemas embebidos se evalúa con lupa cada abstracción antes de adoptarla.
Dos lenguajes con presencia destacada en el mundo del tiempo real son Ada y Java con extensiones de tiempo real. Ada nació precisamente con la intención de soportar sistemas críticos, y ha ido incorporando mejoras para reforzar sus capacidades en este ámbito.
En el caso de Java, las funcionalidades de tiempo real se añadieron más tarde, con especificaciones como la Real-Time Specification for Java y la Real-Time Core Extension, que introducen modelos de memoria y planificación más adecuados para RTOS.
Sistemas operativos de tiempo real (RTOS)
Un sistema operativo de tiempo real (SOTR o RTOS) es el núcleo software que proporciona el marco sobre el que se construyen aplicaciones con plazos temporales estrictos. Se le exige que sus servicios (planificación, interrupciones, sincronización, E/S…) se comporten de forma predecible.
A diferencia de un sistema operativo generalista, un RTOS está optimizando para ejecutar tareas repetitivas en plazos muy ajustados. El objetivo no es “hacer muchas cosas” sino garantizar que la tarea más importante se ejecute cuando debe, sin sorpresas.
Por eso suelen ser sistemas mucho más ligeros, sin florituras gráficas ni servicios innecesarios, con tamaños de pocos megabytes y una filosofía de diseño minimalista. Menos código implica menos latencias imprevistas y menos puntos de fallo, lo cual encaja con las necesidades de tiempo real.
Históricamente, los RTOS comenzaron a desarrollarse en los años 60 y 70 para aplicaciones militares, aeroespaciales e industriales. En las décadas siguientes surgieron productos comerciales conocidos como VxWorks, QNX o variantes de Solaris en tiempo real, muy utilizados en telecomunicaciones, automoción y sistemas embebidos.
Con el auge del IoT en los años 2000 y 2010, RTOS ligeros como FreeRTOS se han vuelto muy populares en dispositivos conectados de bajo consumo. Paralelamente, se han propuesto extensiones POSIX en tiempo real para unificar interfaces y facilitar la portabilidad del software.
Hoy muchos RTOS se integran con técnicas de inteligencia artificial y machine learning para optimizar la planificación, predecir fallos o adaptar parámetros de control en tiempo de ejecución. Todo ello, eso sí, sin perder de vista las garantías temporales.
El mercado de RTOS mueve varios miles de millones de dólares y se espera que crezca de forma sostenida en los próximos años, impulsado por dispositivos médicos, automatización industrial, automoción y sistemas críticos de infraestructura.
Requisitos que debe cumplir un buen RTOS
Un RTOS moderno debe ser multitarea y preemptivo, de manera que pueda expulsar tareas de menor prioridad para ejecutar inmediatamente una más urgente. La programación basada en prioridades es el paradigma predominante: siempre corre la tarea más importante que esté lista para ejecutarse.
Además, tiene que proporcionar mecanismos de comunicación y sincronización (colas, semáforos, mutex, eventos) pensados para minimizar bloqueos innecesarios y evitar fenómenos como la inversión de prioridades, aplicando protocolos de herencia o techo de prioridad cuando proceda.
Esencial que el comportamiento temporal del RTOS sea bien conocido: latencias máximas de interrupción, tiempos de cambio de contexto, tiempos de ejecución de primitivas de sincronización, etc. Sin estos datos, resulta imposible demostrar que una aplicación cumple sus plazos.
Algoritmos de planificación: EDF y otros modelos
La planificación de tareas es una de las piedras angulares de los STR. Entre los algoritmos más estudiados destaca Earliest Deadline First (EDF), un planificador de prioridad dinámica óptimo en muchos contextos de tiempo real.
EDF asigna prioridad a las tareas en función de su plazo absoluto de finalización: la tarea con la fecha límite más cercana tiene la mayor prioridad en cada instante. Esto garantiza, bajo ciertas condiciones, que si existe un plan factible que cumpla todos los plazos, EDF lo encontrará.
Este algoritmo es preventivo: si durante la ejecución de una tarea llega otra con un plazo más apremiante, el sistema puede interrumpir la tarea actual y ceder la CPU a la nueva. Para implementar EDF se suele emplear una cola de prioridad ordenada por tiempo restante hasta la fecha límite.
Una de las ventajas de EDF es que puede alcanzar utilizaciones de CPU cercanas al 100 % manteniendo los plazos, siempre que el conjunto de tareas sea planificable. Además, se adapta bien a entornos dinámicos donde cambian los plazos o los tiempos de ejecución estimados.
Por ejemplo, si tenemos dos procesos P1 y P2 con períodos y tiempos de cómputo distintos, EDF se encargará de dar siempre preferencia a la instancia cuya fecha límite absoluta sea más cercana, alternando su ejecución conforme van llegando nuevas activaciones y se van recalculando los deadlines.
Sin embargo, EDF no está exento de inconvenientes. En situaciones con altísimas cargas de tareas y cambios frecuentes puede volverse complejo de implementar de forma eficiente, y bajo ciertas condiciones pueden aparecer problemas de inanición para tareas con plazos relativamente largos.
Otros algoritmos bien conocidos en tiempo real incluyen Rate Monotonic (RM) y Deadline Monotonic (DM), que utilizan prioridades fijas basadas en el periodo o en el plazo relativo de las tareas. Cada uno tiene sus condiciones de optimalidad y su campo de aplicación preferente.
Aplicaciones típicas de los sistemas de tiempo real
Los STR están en todas partes. En la industria de procesos se utilizan para controlar y supervisar líneas de producción de alimentos, bebidas, químicos, fármacos, etc., garantizando que las variables clave se mantienen dentro de sus límites y que el producto final tiene la calidad esperada.
En el transporte, aviones, trenes, automóviles y barcos dependen de sistemas de navegación, control y seguridad en tiempo real. Desde los sistemas de frenado ABS hasta el control de tracción y estabilidad, pasando por los sistemas de gestión de tráfico ferroviario o marítimo.
Las telecomunicaciones modernas se apoyan en tiempo real para gestionar el flujo de información en redes de alta velocidad: conmutación de paquetes, transmisión de voz y vídeo en directo, garantía de calidad de servicio y reducción de latencias son tareas donde el cumplimiento de plazos es esencial.
En el ámbito de la defensa, los sistemas de vigilancia, radar, guerra electrónica y protección frente a ciberataques utilizan plataformas de tiempo real para detectar y responder a amenazas en cuestión de milisegundos o menos, protegiendo infraestructuras críticas y recursos estratégicos.
En medicina, equipamientos como monitores de constantes vitales, respiradores, marcapasos o bombas de infusión funcionan con software de tiempo real que debe reaccionar de forma segura a cambios en el estado del paciente, muchas veces con consecuencias de vida o muerte si se fallan los plazos.
Más allá del mundo digital, también se puede ver el tiempo real en procesos biológicos. Por ejemplo, una semilla solo germina cuando las condiciones ambientales están dentro de unos rangos y tiempos concretos (humedad, temperatura, luz). Si germinara en cuanto toca la tierra, sin respetar esos tiempos, probablemente no sobreviviría. Es una metáfora útil de cómo un sistema que no se ajusta a su entorno temporal puede fracasar.
Si miramos el panorama completo, los STR se extienden por telecomunicaciones, multimedia, control industrial, robótica, aviónica, ferrocarriles, automoción, electrodomésticos, experimentos científicos y sistemas médicos. Y la lista sigue creciendo a medida que se desarrollan nuevas tecnologías.
En todos estos entornos se necesitan protocolos de comunicación específicos para tiempo real, como CAN, Token Bus, TDMA-TTP, CSMA/CD adaptados, o esquemas tipo Positive Acknowledge or Retransmit (PAR), que reducen los tiempos de transmisión y dan garantías sobre cuándo llegan los datos.
Junto a todo esto, se ha ido afinando una ingeniería de software de tiempo real propia, con metodologías de flujo de datos, estructuras de datos y orientación a objetos adaptadas a representar interrupciones, cambios de contexto, comunicaciones asíncronas y recuperación ante errores con requisitos temporales duros.
Con todo lo anterior, se entiende mejor por qué los sistemas de tiempo real son ya una pieza imprescindible de la infraestructura tecnológica moderna: son los responsables de que miles de procesos críticos y cotidianos funcionen de manera segura, fiable y sin que el usuario tenga que pensar en todo lo que ocurre “por debajo” en fracciones de segundo.
Tabla de Contenidos
- Qué es un sistema de tiempo real y en qué se diferencia de un sistema rápido
- Ejemplo práctico: control de semáforos en una intersección
- Historia y evolución de los sistemas de tiempo real
- Casos emblemáticos: Apolo 11 y Mars Pathfinder
- Componentes básicos de un sistema de tiempo real
- Características clave: tiempo, concurrencia, seguridad y eficiencia
- Tipos de sistemas de tiempo real: duro, blando y firme
- Arquitecturas: abiertos/cerrados y centralizados/distribuidos
- Determinismo, latencia de interrupción y responsividad
- Control del sistema por parte de los procesos y fiabilidad
- Lenguajes y programación en tiempo real
- Sistemas operativos de tiempo real (RTOS)
- Requisitos que debe cumplir un buen RTOS
- Algoritmos de planificación: EDF y otros modelos
- Aplicaciones típicas de los sistemas de tiempo real