Pour définir «temps réel souple», il est plus facile de le comparer avec «temps réel dur». Ci-dessous, nous verrons que le terme «temps réel ferme» constitue un malentendu à propos de «temps réel doux».
Parlant avec désinvolture, la plupart des gens ont implicitement un modèle mental informel qui considère l'information ou un événement comme étant "en temps réel"
• si, ou dans la mesure où, il leur est manifeste avec un retard (latence) qui peut être lié à sa devise perçue
• c'est-à-dire, dans un laps de temps où l'information ou l'événement a une valeur acceptable pour eux.
Il existe de nombreuses définitions ad hoc différentes du «temps réel dur», mais dans ce modèle mental, le temps réel dur est représenté par le terme «si». Plus précisément, en supposant que les actions en temps réel (telles que les tâches) ont des délais d'exécution, la valeur satisfaisante de l'événement où toutes les tâches sont terminées est limitée au cas particulier où toutes les tâches respectent leurs délais.
Les systèmes en temps réel dur font l'hypothèse très forte que tout ce qui concerne l'application, le système et l'environnement est statique et connu a 'priori - par exemple, quelles tâches, qu'elles sont périodiques, leurs heures d'arrivée, leurs périodes, leurs délais, qu'elles ont gagné 'pas de conflits de ressources, et globalement l'évolution temporelle du système. Dans un système de commande de vol d'aéronef ou un système de freinage automobile et dans de nombreux autres cas, ces hypothèses peuvent généralement être satisfaites de sorte que toutes les échéances soient respectées.
Ce modèle mental est délibérément et très utilement assez général pour englober à la fois dur et mou en temps réel - le soft est accommodé par l'expression «dans la mesure où». Par exemple, supposons que l'événement de fin de tâche a une valeur sous-optimale mais acceptable si
- pas plus de 10% des tâches ne respectent les délais
- ou aucune tâche n'est plus de 20% en retard
- ou le retard moyen de toutes les tâches ne dépasse pas 15%
- ou le retard maximum parmi toutes les tâches est inférieur à 10%
Ce sont tous des exemples courants de cas logiciels en temps réel dans de nombreuses applications.
Envisagez l'application d'une tâche unique consistant à aller chercher votre enfant après l'école. Cela n'a probablement pas de date limite réelle, mais il y a une valeur pour vous et votre enfant en fonction du moment où cet événement a lieu. Trop tôt gaspille des ressources (comme votre temps) et trop tard a une certaine valeur négative parce que votre enfant pourrait être laissé seul et potentiellement en danger (ou du moins incommodé).
Contrairement au cas spécial statique en temps réel dur, le temps réel souple ne fait que le minimum d'hypothèses spécifiques à l'application nécessaires concernant les tâches et le système, et des incertitudes sont attendues. Pour aller chercher votre enfant, vous devez vous rendre à l'école en voiture et le temps pour le faire est dynamique en fonction de la météo, des conditions de circulation, etc. Vous pourriez être tenté de sur-approvisionner votre système dans le pire des cas, le temps de conduite), mais encore une fois, cela gaspille des ressources (votre temps et l'occupation du véhicule familial, en refusant peut-être l'utilisation par d'autres membres de la famille).
Cet exemple peut ne pas sembler coûteux en termes de gaspillage de ressources, mais considérons d’autres exemples. Tous les systèmes de combat militaires sont en temps réel doux. Par exemple, envisagez de lancer une attaque aérienne sur un véhicule terrestre hostile en utilisant un missile guidé avec des mises à jour pour les manœuvres cibles. La satisfaction maximale pour terminer les tâches de mise à jour du cours est obtenue par une frappe destructrice directe sur la cible. Mais une tentative de surapprovisionnement en ressources pour s'assurer de ce résultat est généralement beaucoup trop coûteuse et peut même être impossible. Dans ce cas, vous serez peut-être moins mais suffisamment satisfait si le missile frappe suffisamment près de la cible pour la désactiver.
De toute évidence, les scénarios de combat comportent un grand nombre d'incertitudes dynamiques possibles qui doivent être prises en compte par la gestion des ressources. Les systèmes en temps réel doux sont également très courants dans de nombreux systèmes civils, tels que l'automatisation industrielle, bien que les systèmes militaires soient évidemment les plus dangereux et les plus urgents pour obtenir une valeur acceptable.
La clé de voûte des systèmes en temps réel est la «prévisibilité». Le cas dur en temps réel ne s'intéresse qu'à un seul cas particulier de prévisibilité - c'est-à-dire que les tâches respecteront toutes leurs échéances et que la valeur maximale possible sera atteinte par cet événement. Ce cas particulier est appelé «déterministe».
Il existe un spectre de prévisibilité. Le déterminisme (déterminisme) est un point final (prévisibilité maximale) sur le spectre de prévisibilité; L'autre point final est la prévisibilité minimale (non-déterminisme maximal). La métrique et les points finaux du spectre doivent être interprétés en fonction d'un modèle de prévisibilité choisi; tout entre ces deux points extrêmes est des degrés d'imprévisibilité (= degrés de non-déterminisme).
La plupart des systèmes en temps réel (à savoir les systèmes souples) ont une prévisibilité non déterministe, par exemple, des temps d'achèvement des tâches et donc des valeurs tirées de ces événements.
En général (en théorie), la prévisibilité, et donc la valeur acceptable de manière acceptable, peut être rendue aussi proche que nécessaire du point final déterministe - mais à un prix qui peut être physiquement impossible ou excessivement cher (comme au combat ou peut-être même en aller chercher votre enfant à l'école).
Le temps réel doux nécessite un choix spécifique à l'application d'un modèle de probabilité (pas le modèle fréquentiste commun) et donc d'un modèle de prévisibilité pour raisonner sur les latences d'événements et les valeurs résultantes.
En nous référant à la liste ci-dessus des événements qui fournissent une valeur acceptable, nous pouvons maintenant ajouter des cas non déterministes, tels que
- la probabilité qu'aucune tâche ne rate son échéance de plus de 5% est supérieure à 0,87. (Notez le nombre de critères de planification exprimés ici.)
Dans une application de défense antimissile, étant donné qu'en combat, l'attaque a toujours l'avantage sur la défense, lequel de ces deux scénarios de calcul en temps réel préférez-vous:
parce que la destruction parfaite de tous les missiles hostiles est très improbable ou impossible, affectez vos ressources défensives pour maximiser la probabilité qu'autant de missiles hostiles parmi les plus menaçants (par exemple, en fonction de leurs cibles) soient interceptés avec succès (l'interception rapprochée compte car elle peut déplacer le missile hostile hors de sa trajectoire);
se plaindre que ce n'est pas un problème informatique en temps réel car il est dynamique au lieu de statique, et les concepts et techniques traditionnels en temps réel ne s'appliquent pas, et cela semble plus difficile que le temps réel statique, donc cela ne vous intéresse pas .
Malgré les divers malentendus sur le temps réel doux dans la communauté informatique en temps réel, le temps réel doux est très général et puissant, bien que potentiellement complexe par rapport au temps réel dur. Les systèmes en temps réel doux tels que résumés ici ont une longue histoire d'utilisation réussie en dehors de la communauté informatique en temps réel .
Pour répondre directement à la question OP:
Un système en temps réel dur peut fournir des garanties déterministes - le plus souvent que toutes les tâches respecteront leurs délais, l'interruption ou le temps de réponse à l'appel système sera toujours inférieur à x, etc. - SI ET UNIQUEMENT SI des hypothèses très fortes sont formulées et sont correctes. tout ce qui compte est statique et connu a 'priori (en général, de telles garanties pour les systèmes temps réel durs sont un problème de recherche ouvert sauf pour des cas assez simples)
Un système en temps réel souple n'offre pas de garanties déterministes, il est destiné à fournir la meilleure opportunité probabiliste et la meilleure prévisibilité de l'actualité, spécifiées et accomplies de manière analytique, qui soient réalisables dans les circonstances dynamiques actuelles, selon des critères spécifiques à l'application.
Il est évident que le temps réel dur est un simple cas particulier de temps réel souple. De toute évidence, les assurances non déterministes analytiques en temps réel souples peuvent être très complexes à fournir, mais sont obligatoires dans les cas en temps réel les plus courants (y compris les cas critiques pour la sécurité les plus dangereux tels que le combat) car la plupart des cas en temps réel ne sont pas dynamiques. statique.
«Firm real-time» est un cas particulier mal défini de «soft real-time». Il n'est pas nécessaire d'utiliser ce terme si le terme «temps réel logiciel» est compris et utilisé correctement.
J'ai une discussion plus détaillée beaucoup plus précise du temps réel, du temps réel dur, du temps réel doux, de la prévisibilité, du déterminisme et des sujets connexes sur mon site web real-time.org.