O software em tempo real é um software que deve reagir a entradas dentro de um tempo limitado específico. Essa restrição é crucial para sua função, e a falha no cumprimento dos prazos pode ter sérias conseqüências. Essas consequências variam de inconvenientes menores (uma leve gagueira em um videogame) a falhas catastróficas (um sistema de controle de aeronaves com defeito).
Aqui está um colapso de suas principais características:
*
crítica de tempo: O recurso definidor. O software deve responder a eventos dentro de um prazo predeterminado. Esse prazo geralmente é muito curto, medido em milissegundos ou mesmo microssegundos.
*
Comportamento determinístico: Seu tempo de resposta deve ser previsível e consistente. O software não deve exibir atrasos ou atrasos imprevisíveis.
*
Confiabilidade: A alta confiabilidade é essencial. As falhas podem ter repercussões graves, portanto o software deve ser robusto e tolerante a erros.
*
Gerenciamento de recursos: Gerenciamento de recursos eficientes (CPU, memória, etc.) é fundamental para garantir respostas oportunas.
O software em tempo real é categorizado em dois tipos principais:
*
Hard Time Real: Esses sistemas têm prazos rígidos que * devem * ser cumpridos. Faltar um prazo é considerado um fracasso, geralmente com consequências críticas. Os exemplos incluem sistemas de controle de vôo, dispositivos médicos e sistemas de controle de processos industriais.
*
Soft em tempo real: Esses sistemas têm prazos que * devem ser cumpridos, mas falta um prazo não leva a uma falha catastrófica. Em vez disso, o desempenho do sistema degrada (por exemplo, qualidade de serviço reduzida). Exemplos incluem videogames, aplicativos multimídia e alguns robôs industriais.
É importante observar que mesmo sistemas em tempo real "suaves" geralmente têm requisitos de tempo rigorosos. Embora um pequeno atraso possa ser tolerável, atrasos significativos tornam o sistema inutilizável.
O desenvolvimento de software em tempo real envolve técnicas e ferramentas especializadas para garantir sua pontualidade e confiabilidade, geralmente incluindo técnicas para agendamento, manuseio de interrupções e controle de simultaneidade.