Aquí hay un desglose de sus características clave:
* Criticalidad de tiempo: La característica definitoria. El software debe responder a los eventos dentro de un plazo predeterminado. Este plazo a menudo es muy corto, se mide en milisegundos o incluso en microsegundos.
* Comportamiento determinista: Su tiempo de respuesta debe ser predecible y consistente. El software no debe exhibir retrasos o retrasos impredecibles.
* Fiabilidad: La alta fiabilidad es esencial. Las fallas pueden tener repercusiones severas, por lo que el software debe ser robusto y tolerante a errores.
* Gestión de recursos: La gestión eficiente de recursos (CPU, memoria, etc.) es fundamental para garantizar respuestas oportunas.
El software en tiempo real se clasifica en dos tipos principales:
* Duro en tiempo real: Estos sistemas tienen plazos estrictos que * deben * ser cumplidos. Faltar una fecha límite se considera un fracaso, a menudo con consecuencias críticas. Los ejemplos incluyen sistemas de control de vuelo, dispositivos médicos y sistemas de control de procesos industriales.
* en tiempo real suave: Estos sistemas tienen plazos que * deberían * cumplirse, pero perder un plazo no conduce a una falla catastrófica. En cambio, el rendimiento del sistema se degrada (por ejemplo, una calidad de servicio reducida). Los ejemplos incluyen videojuegos, aplicaciones multimedia y algunos robots industriales.
Es importante tener en cuenta que incluso los sistemas "suaves" en tiempo real a menudo tienen requisitos de tiempo estrictos. Si bien un ligero retraso puede ser tolerable, los retrasos significativos hacen que el sistema sea inutilizable.
El desarrollo del software en tiempo real implica técnicas y herramientas especializadas para garantizar su oportunidad y confiabilidad, a menudo incluyendo técnicas para la programación, el manejo de interrupciones y el control de la concurrencia.