16
Systèmes en temps réel Services de Communication

Systèmes en temps réel Services de Communication

Embed Size (px)

Citation preview

Page 1: Systèmes en temps réel Services de Communication

Systèmes en temps réel

Services de Communication

Page 2: Systèmes en temps réel Services de Communication

Communication (partie 1) - 2

Synopsis

Communication Asynchrones

Communication Synchrones Utilisation des communication synchrones

Problèmes communs

Réception de Messages

Invoqué par chrono

Exemple de brouilleur coordonné

Déferrage d’événements

Page 3: Systèmes en temps réel Services de Communication

Communication (partie 1) - 3

Communications Asynchrones

La capsule qui envoie ne “bloque” pas quand les messages sont en transit

Elle va compléter tous le code de transitions dans la chaîne avant que le(s) message(s) envoyés aient la chance d’être traités

D’autres messages, et autres chaînes de transitions, peuvent même être traités dans l’intérim

Mécaniques: myPort.mySignal( [data] ).send( [priority] ); Voir la classe OutSignal dans la bibliothèque des

Services

optionnel

Page 4: Systèmes en temps réel Services de Communication

Communication (partie 1) - 4

Communications Asynchrones

On se rappel de la sémantique d’exécution jusqu’à la fin: Quand déclenchée, chaque chaîne de transitions

va “naturellement” exécuter jusqu’à la fin. Tout message(s) envoyé durant l’exécution de

code dans la chaîne de transitions va être mis dans une file par le service de traitement de messages le la bibliothèque de services en temps réel

Les messages à priorité égale seront traité PAPS Les autres messages déjà dans la file (derrière

celui qui à commencé la transition originale) vont être traités avant le(s) nouveau(x) message(s) envoyé(s).

Page 5: Systèmes en temps réel Services de Communication

Communication (partie 1) - 5

Communications Synchrones -définit

Fournit un moyen de contourner la sémantique normale d’exécution jusqu’à la fin

La capsule qui envoie (invoque) bloque jusqu’à ce qu’une réponse soit reçu (sémantique d’appel de procédure

Le bloque est efficace même contre la réception de messages à plus haute priorités.

Les communications synchrones imbriqués (nested) sont permises, mais pas circulaire

Page 6: Systèmes en temps réel Services de Communication

Communication (partie 1) - 6

Communications Synchrones -mécaniques

OutSignal.invoke( ) //envoyeur Message replies; Message[] replies =

senderPort.senderSignal( ).invoke(); if (replies[0] != null)

{ code pour traiter une réponse valide }

else {code pour traiter une réponse invalide }

//receveur receiverPort.receiverSignal( ).reply( );

Page 7: Systèmes en temps réel Services de Communication

Communication (partie 1) - 7

Communications Synchrones – découplage du receveur

Le comportement événementiel de RoseRT assure que les états sont toujours en “mode réception”

Les messages reçus sont traités de la même façon (du côté de la réception) peut importe qu’ils soient envoyés asynchrone ou synchrone Découple l’implémentation du receveur/envoyeur Cependant, pour utiliser cette assurance, il faut

que le receveur envoie une réponse dans tous les cas

Page 8: Systèmes en temps réel Services de Communication

Communication (partie 1) - 8

Communications Synchrones– invoqué par chrono

La ponctualité pour la capsule qui envoie (ou son thread) peut requérir qu’une invocation bloque seulement pour une période minimum Le receveur peut aussi être trop lent dans sa réponse Les délais de communication peuvent être trop longs Les communications

Donc une invocation peut avoir besoin d’une temporisation optionnel

Aucun mécanisme d’implémentation en RoseRT Retourne seulement une exception si aucune réponse

est reçu

Page 9: Systèmes en temps réel Services de Communication

Communication (partie 1) - 9

Communications Synchrones -Pourquoi l’utiliser?

Pour contrôler la séquence des événements (changements d’états) exemple: notre coordination de

receveur/brouilleur

Pour assurer la synchronisation exemple: le système de peinture de widget

Pour assurer qu’il n ’y a pas d’interférence entre les threads logiques ou processus (exclusion mutuelle) exemple: une base de données partagée

Page 10: Systèmes en temps réel Services de Communication

Communication (partie 1) - 10

Communications Synchrones -dangers

Peut amener aux interblocages (invocation circulaire)

Peut mettre en danger la ponctualité sur le thread de la capsule qui envoie

Problèmes de communication multiprocesseurs long délais fiabilité (communications pauvres)

Page 11: Systèmes en temps réel Services de Communication

Communication (partie 1) - 11

Exemple – un contrôleur GE

Page 12: Systèmes en temps réel Services de Communication

Communication (partie 1) - 12

Contrôleur

Page 13: Systèmes en temps réel Services de Communication

Communication (partie 1) - 13

Brouilleur

rxJamPort.Jamming( ).send( );// du code pour actuellement // transmettre de l’énergie FR

Asynchrone:

rxJamPort.Jamming( ).invoke();if (replies[0] != null){ // du code pour actuellement // transmettre de l’énergie FR }else { // abandonne le brouillage}

Synchrone:

Page 14: Systèmes en temps réel Services de Communication

Communication (partie 1) - 14

Receveur

Asynchrone:{pas de code}

rxJamPort.ack( ).reply( );//notez que la pointe serait noir // dans ce cas.

Synchrone:

Page 15: Systèmes en temps réel Services de Communication

Communication (partie 1) - 15

Communications Synchrones -problèmes suplémentaires

Invocation – Réponse en présence de chronos

Invocation – Réponse et réponses “longues”

Invocation – Réponse et réponses “délayées”

Voir le fichier modèle: InvokeTest.rtmdl

Page 16: Systèmes en temps réel Services de Communication

Communication (partie 1) - 16

Modèle: “InvokeReplywithTimers” InvokeReplywithTimers - Capsules