Ce modèle comporte des threads connectées par des data ports (cf. figure ci-dessus). Identifier dans ce modèle les threads qui recoivent ou émettent des données. Quel protocole utilise-t-on ici ? => pour répondre à cette question, il faut regarder les connexions et les propriétés : CONNECTIONS C0 : PORT input -> T1.input; C1 : PORT T1.output -> output; PROPERTIES Timing => immediate applies to C0, C1; et CONNECTIONS C0 : PORT input -> T2.input; C1 : PORT T2.output -> T3.input; C2 : PORT T3.output -> output; PROPERTIES Timing => immediate applies to C0, C1, C2; END my_process.sink_impl; Les threads T1 et T2 recoivent des messages de l'extérieur de leur process et émettent des messages respectivement vers l'extérieur de leur process et vers T3. Le thread T3 recoit des messages de T2 et émet des messages vers l'extérieur de son process. Le protocole appliqué est le protocole "immediate" Simuler l'ordonnancement de ce programme. Est ce cohérent avec les priorités des threads ? Pourquoi ? Identifier sur l'ordonnancement les instants où les messages sont émis ou reçus entre T2 et T3. Non ce n'est pas cohérent avec les priorités des threads car l'ordonnancement reflète les communications, c'est à dire les émissions et réceptions de messages. Ainsi T3 est exécutée AVANT T2, même si la priorité de T3 est plus élevée que celle de T2, et ce car T3 doit attendre un message de T2. Les messages sont reçus au début de l'exécution du thread et émis à la fin de l'exécution du thread. Ainsi un message est émis par T2 et recu par T3 aux instants 6, 26, 46, 66, etc Supposons maintenant que la propriété Timing prend la valeur Delayed. Simuler à nouveau l'ordonnancement. Décrire ce qui change dans ce nouvel ordonnancement et déterminer quand les messages sont émis/reçus dans ce second cas. On constate que T3, la tâche qui recoit le message, voit son exécution décalée. Ainsi le message émis par T2 à l'instant 6 et recu par T3 à l'instant 20, le message émis à l'instant 29 et reçu à l'instant 40, etc