2017-08-14 2 views
2

J'utilise Pusher depuis un certain temps maintenant. J'ai toujours supposé que "temps réel" signifiait "instantané". Dernièrement, j'ai pas dans cet article: https://en.wikipedia.org/wiki/Real-time_computing, et une phrase empoigne mon attention:Pourquoi des solutions comme pusher prétendent être "temps réel"?

« programmes en temps réel doivent garantir une réponse dans un délai spécifié contraintes »

Ils donnent un exemple basé sur l'audio traitement:

« Prenons un exemple de DSP audio, si un processus nécessite 2,01 secondes pour analyser, ou traiter 2,00 secondes de son, il est en temps réel. Cependant, si cela prend 1,99 secondes, il est ou peut être dans un processus de DSP en temps réel «

Mes questions:. 1. Cette définition applique uniquement aux périphériques matériels/électroniques ou peuvent être appliquées à 2. Si cela s'applique aux logiciels, s'applique-t-il aux services à distance tels que Pusher? 3. Quelle est la contrainte de temps pour que Pusher soit considéré comme "temps réel"? 4. Quelle est la contrainte de temps pour d'autres services WebRTC, Firebase?

Répondre

5

Désolé pour le poste long qui ne répond pas spécifiquement à votre question, mais j'espère que ca va vous améliorer estand où la définition "en temps réel" vient. Oui, c'est une confusion compréhensible que «temps réel» signifie «instantané». Mais si vous commencez vraiment à y réfléchir, vous découvrirez bientôt que «instantané» est difficile à définir.

Que signifie instantané? 0 (zéro) secondes temps de réponse (comme dans 0 sec 0 ms 0 ns 0 ps) à partir de l'heure de la commande à l'heure de la réponse est physiquement impossible. Nous pouvons alors essayer de dire que instantané signifierait que le temps de réponse-commande est perçu instantanément, c'est-à-dire qu'il ne serait pas considéré comme un retard. Mais alors ... que signifie exactement "perçu instantanément"? Perçu par les humains? Ok, c'est bien, nous arrivons quelque part. L'œil humain et le traitement de l'image du cerveau sont une machine très très complexe qui ne fonctionne pas vraiment en fps, mais nous pouvons utiliser des données pour les approximer. Un œil humain peut "percevoir une image projetée à l'écran pendant 1/250ème de seconde". Ce serait 0.004 secondes ou 250 fps. Donc, par cette approximation, un programme graphique serait en temps réel s'il avait un temps de réponse < 0,004 sec ou serait plus rapide que @ 250 fps. Mais nous savons que dans la pratique, les jeux sont perçus comme lisses par la plupart des gens à seulement 60 fps, ou 0.01666 secondes. Alors maintenant, nous avons deux réponses différentes. Pouvons-nous en quelque sorte les justifier tous les deux? Oui. Nous pouvons dire qu'en théorie le temps réel signifierait 0.004 secondes, mais en pratique 0.01666 secondes est suffisant.

Nous pourrions être heureux et arrêter ici, mais nous sommes sur un voyage de découverte. Alors, pensons plus loin. Souhaitez-vous qu'un système d'automatisation avionique en temps réel ait un temps de réponse de 0.01666 secondes? Est-ce que vous estimez acceptable un temps de réponse de 0.01666 secondes pour un système de centrale nucléaire en temps réel? Est-ce qu'un système de contrôle d'huile où une vanne prend physiquement 15 secondes pour se fermer est défini comme "temps réel" si le temps d'achèvement de la commande est de 0.0166 secondes? La réponse à toutes ces questions est définitivement non. Pourquoi? Répondez-y et vous répondrez pourquoi le "temps réel" est défini comme suit: "Les programmes en temps réel doivent garantir une réponse dans les limites de temps spécifiées".Je suis désolé, je ne suis pas du tout familier avec "Pusher", mais je peux répondre à votre première question et une partie de votre deuxième: "temps réel" peut être appliqué à tout système qui doit "réagir" ou répondre à une forme d'entrée. Ici, le «système» est plus générique que vous ne le pensez. Un cerveau serait qualifier, mais dans le contexte de l'ingénierie signifie l'ensemble de la pile: matériel + logiciel.

3
  1. Cette définition applique uniquement aux périphériques matériels électroniques/ou peut être appliquée à un logiciel aussi?

Il s'applique également aux logiciels. Tout ce qui a des contraintes de temps difficiles. Il y a des systèmes d'exploitation en temps réel, par exemple, et même une spécification en temps réel pour Java.

  1. Si pour les logiciels, ne s'applique à des services à distance comme Pusher?

Difficile de voir comment, si un réseau est impliqué. Plus probablement, ils signifient juste "opportun", ou peut-être que c'est juste une façon bâclée de dire "pousser le modèle", comme son nom l'indique. Un grand nombre d'utilisateurs sur ce site semblent penser que «temps réel» signifie «monde réel». En informatique, cela signifie un système capable de répondre à de dures contraintes en temps réel. La définition de Wikipedia que vous avez citée est correcte mais l'exemple n'est pas très satisfaisant.

  1. Quelle est la contrainte de temps pour que le poussoir soit considéré comme "temps réel"?

La question est mal formée. La vraie question est de savoir si Pusher peut vraiment répondre à des contraintes en temps réel, et seulement alors quelle pourrait être leur valeur minimale. Cela ne semble pas du tout possible sans le support du système d'exploitation et du réseau.

  1. Quelle est la contrainte de temps pour d'autres services comme WebRTC, Firebase?

Ditto.

+0

répondre. Une petite idée: (pas du tout familier avec le poussoir, mais) une application réseau peut être "en temps réel" sans le support du système/OS. Une réponse de temporisation peut être considérée comme une réponse acceptable pour certains systèmes. – bolov

+0

@bolov Je suppose que oui, mais les systèmes d'exploitation non-temps réel ne peuvent même pas garantir un délai d'attente sans ajouter de la latence. – EJP

1

La plupart des interprétations du terme «temps réel» se réfèrent au type statique traditionnel, souvent appelé «temps réel dur». Bien qu'il n'y ait pas beaucoup de consensus sur les significations des termes «temps réel dur» et «temps réel mou», je donne des définitions, fondées sur des principes scientifiques premiers, de ces termes et d'autres termes essentiels dans Introduction to Fundamental Principles of Dynamic Real-Time Systems.