Para definir "tempo real suave", é mais fácil compará-lo com "tempo real difícil".
Falando casualmente, a maioria das pessoas tem implicitamente um modelo mental informal que considera informações ou eventos como "em tempo real"
• se, ou na medida em que isso, for manifestado a eles com um atraso (latência) que possa estar relacionado à sua moeda percebida
• ou seja, em um período de tempo em que as informações ou eventos tenham um valor aceitável satisfatório para eles.
Existem inúmeras definições ad hoc diferentes de "tempo real difícil", mas nesse modelo mental, tempo real difícil é representado pelo termo "se". Especificamente, supondo que as ações em tempo real (como tarefas) tenham prazos de conclusão, o valor aceitável aceitável do evento que todas as tarefas concluídas é limitado ao caso especial em que todas as tarefas cumprem seus prazos.
Sistemas rígidos em tempo real fazem suposições muito fortes de que tudo sobre o aplicativo, o sistema e o ambiente é estático e conhecido a priori - por exemplo, quais tarefas são periódicas, horários de chegada, períodos e prazos, que eles venceram possui conflitos de recursos e, em geral, a evolução do tempo do sistema. Em um sistema de controle de voo de aeronave ou sistema de freio automotivo e em muitos outros casos, essas premissas geralmente podem ser satisfeitas para que todos os prazos sejam cumpridos.
Esse modelo mental é deliberada e muito útil o suficiente para abranger tanto o tempo real quanto o real - o soft é acomodado pela frase "na medida em que". Por exemplo, suponha que o evento de conclusão da tarefa tenha um valor abaixo do ideal, mas aceitável, se
- não mais de 10% das tarefas perdem seus prazos
- ou nenhuma tarefa está atrasada em mais de 20%
- ou o atraso médio de todas as tarefas não ultrapassa 15%
- ou o atraso máximo entre todas as tarefas é inferior a 10%
Todos esses são exemplos comuns de casos simples em tempo real em muitas aplicações.
Considere o aplicativo de tarefa única de buscar seu filho depois da escola. Provavelmente, esse prazo não tem um prazo real; em vez disso, você e seu filho terão algum valor com base em quando esse evento ocorrerá. Muito cedo desperdiça recursos (como seu tempo) e muito tarde tem algum valor negativo, pois seu filho pode ser deixado sozinho e potencialmente prejudicial (ou pelo menos incomodado).
Diferentemente do caso especial estático em tempo real rígido, o tempo real suave faz apenas as suposições mínimas específicas do aplicativo necessárias sobre as tarefas e o sistema, e são esperadas incertezas. Para pegar seu filho, você precisa ir até a escola, e o tempo para fazer isso é dinâmico, dependendo do clima, das condições do tráfego etc. Você pode ficar tentado a provisionar demais o sistema (por exemplo, permitir o que você espera que seja o no pior caso, o tempo de condução), mas novamente isso está desperdiçando recursos (seu tempo e ocupando o veículo da família, possivelmente negando o uso por outros membros da família).
Esse exemplo pode não parecer caro em termos de desperdício de recursos, mas considere outros exemplos. Todos os sistemas de combate militar são leves em tempo real. Por exemplo, considere realizar um ataque de aeronave a um veículo terrestre hostil usando um míssil guiado com atualizações para ele como manobras de destino. A satisfação máxima para concluir as tarefas de atualização do curso é alcançada por um ataque destrutivo direto no alvo. Mas uma tentativa de provisionar recursos em excesso para garantir esse resultado geralmente é muito cara e pode até ser impossível. Nesse caso, você pode ficar menos satisfeito o suficiente se o míssil atingir um alvo suficientemente próximo do alvo para desativá-lo.
Obviamente, os cenários de combate têm muitas incertezas dinâmicas possíveis que devem ser acomodadas pelo gerenciamento de recursos. Sistemas leves em tempo real também são muito comuns em muitos sistemas civis, como automação industrial, embora obviamente os militares sejam os mais perigosos e urgentes para obter um valor aceitável satisfatório.
A pedra angular dos sistemas em tempo real é a "previsibilidade". O caso difícil em tempo real está interessado em apenas um caso especial de previsibilidade - ou seja, que todas as tarefas cumpram seus prazos e o valor máximo possível será alcançado por esse evento. Esse caso especial é chamado de "determinístico".
Existe um espectro de previsibilidade; a maioria dos sistemas em tempo real (ou seja, soft) possui previsibilidade não determinística, por exemplo, do tempo de conclusão das tarefas e, portanto, dos valores obtidos com esses eventos. Em geral, a previsibilidade e, portanto, o valor, podem ser feitos o mais próximo possível do ponto final determinístico, mas a um preço que pode ser fisicamente impossível ou excessivamente caro (como em combate ou talvez em buscar seu filho na escola).
O tempo real flexível requer uma escolha específica de aplicativo de um modelo de probabilidade (não o modelo freqüente comum) e, portanto, de previsibilidade para raciocinar sobre latências de eventos e valores resultantes.
Voltando à lista acima de eventos que fornecem valor aceitável, agora podemos adicionar casos não determinísticos, como
- a probabilidade de que nenhuma tarefa perca seu prazo em mais de 5% é maior que 0,87.
Em um aplicativo de defesa antimísseis, considerando que o ataque sempre tem vantagem sobre a defesa, qual desses dois cenários de computação em tempo real você prefere:
como a destruição perfeita de todos os mísseis hostis é muito improvável ou impossível, atribua seus recursos defensivos para maximizar a probabilidade de que muitos dos mísseis hostis mais ameaçadores (por exemplo, com base em seus alvos) sejam interceptados com sucesso (a intercepção próxima conta porque pode mover o míssil hostil fora do curso);
reclame que esse não é um problema de computação em tempo real porque é dinâmico, em vez de estático, e os conceitos e técnicas tradicionais em tempo real não se aplicam; portanto, você não está interessado em fazer pesquisa e desenvolvimento para soft-time em tempo real.
Apesar dos vários mal-entendidos sobre soft time em tempo real na comunidade de computação em tempo real (mas não em outros campos não computacionais), o soft time em tempo real é muito geral e poderoso, e potencialmente muito complexo em comparação com o rígido em tempo real.
Para responder diretamente à pergunta do OP:
um sistema rígido em tempo real pode fornecer garantias determinísticas - geralmente que todas as tarefas cumprem seus prazos, a interrupção ou o tempo de resposta da chamada do sistema sempre será menor que x etc. - SE E SOMENTE SE SUGESTÕES muito fortes forem feitas e estiverem corretas tudo o que importa é estático e conhecido a priori (em geral, essas garantias para sistemas difíceis em tempo real são um problema de pesquisa aberto, exceto em casos bastante simples)
um sistema flexível em tempo real não oferece garantias determinísticas, destina-se a fornecer a melhor oportunidade probabilística especificada analiticamente e previsibilidade de oportunidade que sejam viáveis nas atuais circunstâncias dinâmicas, de acordo com critérios específicos da aplicação. Obviamente, o tempo real difícil é um caso especial simples de tempo real suave. Obviamente, as garantias analíticas não determinísticas em tempo real podem ser muito complexas, mas são obrigatórias nos casos mais comuns em tempo real (incluindo os mais críticos e perigosos como o combate), pois a maioria dos casos é dinâmica e não estática.
Tenho uma discussão detalhada e muito mais precisa sobre tempo real, tempo real, tempo real, tempo real suave, previsibilidade, determinismo e tópicos relacionados no meu site real-time.org .