Para definir "soft real-time", é mais fácil compará-lo com "hard real-time". A seguir, veremos que o termo "tempo real da empresa" constitui um mal-entendido sobre "tempo real suave".
Falando casualmente, a maioria das pessoas implicitamente tem um modelo mental informal que considera a informação ou um evento como sendo "em tempo real"
• se, ou na medida em que, se manifestar a eles com um atraso (latência) que pode estar relacionado à sua moeda percebida
• ou seja, em um período de tempo em que a informação ou evento tenha valor aceitavelmente satisfatório para eles.
Existem várias definições ad hoc diferentes de "tempo real rígido", mas nesse modelo mental, tempo real rígido é representado pelo termo "se". Especificamente, supondo que as ações em tempo real (como tarefas) tenham prazos de conclusão, o valor aceitavelmente satisfatório do evento em que todas as tarefas concluídas é limitado ao caso especial de todas as tarefas cumprirem seus prazos.
Os sistemas hard real-time 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, que são periódicas, seus horários de chegada, seus períodos, seus prazos, que eles venceram não tem 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 frenagem automotiva e em muitos outros casos, essas suposições podem geralmente ser satisfeitas para que todos os prazos sejam cumpridos.
Este modelo mental é deliberadamente e muito utilmente geral o suficiente para abranger hard e soft em tempo real - 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 que 10% das tarefas perdem seus prazos
- ou nenhuma tarefa atrasa mais de 20%
- ou o atraso médio de todas as tarefas não é mais do que 15%
- ou o atraso máximo entre todas as tarefas é inferior a 10%
Todos esses são exemplos comuns de casos soft em tempo real em muitas aplicações.
Considere a aplicação de uma única tarefa de pegar seu filho depois da escola. Isso provavelmente não tem um prazo real, em vez disso, há algum valor para você e seu filho com base em quando o evento ocorre. Muito cedo desperdiça recursos (como seu tempo) e muito tarde tem algum valor negativo porque seu filho pode ser deixado sozinho e potencialmente em perigo (ou pelo menos ser incomodado).
Ao contrário do caso especial de tempo real rígido estático, o tempo real soft faz apenas as suposições específicas de aplicativos mínimas necessárias sobre as tarefas e o sistema, e incertezas são esperadas. Para pegar seu filho, você tem que dirigir 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 seu sistema (ou seja, permitir o que você espera que seja o pior caso, 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 suaves 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 à medida que o alvo manobra. A satisfação máxima para completar 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 costuma ser muito cara e pode até ser impossível. Nesse caso, você pode ficar menos, mas suficientemente satisfeito se o míssil atingir perto o suficiente 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. Os sistemas soft em tempo real também são muito comuns em muitos sistemas civis, como a automação industrial, embora, obviamente, os militares sejam os mais perigosos e urgentes para se obter um valor aceitável e satisfatório em.
A pedra angular dos sistemas de tempo real é a "previsibilidade". O caso de tempo real difícil está interessado em apenas um caso especial de previsibilidade - ou seja, que todas as tarefas cumprirão seus prazos e o valor máximo possível será alcançado por aquele evento. Esse caso especial é denominado "determinístico".
Existe um espectro de previsibilidade. Determinística (determinismo) é um ponto final (previsibilidade máxima) no espectro de previsibilidade; o outro ponto final é a previsibilidade mínima (não determinismo máximo). A métrica e os pontos finais do espectro devem ser interpretados em termos de um modelo de previsibilidade escolhido; tudo entre esses dois pontos finais são graus de imprevisibilidade (= graus de não determinismo).
A maioria dos sistemas de tempo real (ou seja, os soft) têm previsibilidade não determinística, por exemplo, dos tempos de conclusão das tarefas e, portanto, dos valores obtidos a partir desses eventos.
Em geral (em teoria), a previsibilidade e, portanto, o valor aceitavelmente satisfatório, pode ser feita tão perto do ponto final determinístico quanto necessário - mas a um preço que pode ser fisicamente impossível ou excessivamente caro (como em combate ou talvez até mesmo em pegar seu filho na escola).
O soft real-time requer uma escolha específica do aplicativo de um modelo de probabilidade (não o modelo frequentista comum) e, portanto, o modelo de previsibilidade para raciocinar sobre latências de eventos e valores resultantes.
Voltando à lista de eventos acima que fornecem um valor aceitável, agora podemos adicionar casos não determinísticos, como
- a probabilidade de que nenhuma tarefa perca seu prazo por mais de 5% é maior que 0,87. (Observe o número de critérios de programação expressos lá.)
Em uma aplicação de defesa antimísseis, dado o fato de que no combate o ataque sempre leva vantagem sobre a defesa, qual destes dois cenários de computação em tempo real você prefere:
porque 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 tantos dos mísseis hostis mais ameaçadores (por exemplo, com base em seus alvos) sejam interceptados com sucesso (interceptação próxima conta porque pode mover o míssil hostil para fora do curso);
Reclame que este 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 de tempo real não se aplicam e parece mais difícil do que estática em tempo real rígido, então você não está interessado nisso .
Apesar dos vários mal-entendidos sobre o tempo real soft na comunidade de computação em tempo real, o tempo real soft é muito geral e poderoso, embora potencialmente complexo em comparação com o tempo real rígido. Os sistemas soft em tempo real resumidos aqui têm uma longa história de sucesso de uso fora da comunidade de computação em tempo real .
Para responder diretamente à pergunta do OP:
Um sistema rígido em tempo real pode fornecer garantias determinísticas - mais comumente que todas as tarefas cumprirão seus prazos, a interrupção ou o tempo de resposta da chamada do sistema será sempre menor que x, etc. - SE E SOMENTE SE suposições muito fortes forem feitas e estiverem corretas tudo o que importa é estático e conhecido a 'priori (em geral, tais garantias para sistemas de tempo real hard são um problema de pesquisa aberto, exceto para casos bastante simples)
Um sistema soft real-time não oferece garantias determinísticas, ele se destina a fornecer a melhor pontualidade probabilística analiticamente especificada e realizada e a previsibilidade de oportunidade que são viáveis nas atuais circunstâncias dinâmicas, de acordo com critérios específicos da aplicação.
Obviamente, o tempo real de disco rígido é um caso especial simples de tempo real flexível. Obviamente, as garantias analíticas não determinísticas soft em tempo real podem ser muito complexas de fornecer, mas são obrigatórias nos casos de tempo real mais comuns (incluindo os mais perigosos de segurança crítica, como combate), uma vez que a maioria dos casos em tempo real são dinâmicos, não estático.
"Firm real-time" é um caso especial mal definido de "soft real-time". Não há necessidade desse termo se o termo "soft real-time" for entendido e usado corretamente.
Eu tenho uma discussão mais detalhada e muito mais precisa de tempo real, tempo real rígido, tempo real flexível, previsibilidade, determinismo e tópicos relacionados em meu site real-time.org.