La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Systèmes en temps réel Threads et Capsules Optionnels.

Présentations similaires


Présentation au sujet: "Systèmes en temps réel Threads et Capsules Optionnels."— Transcription de la présentation:

1 Systèmes en temps réel Threads et Capsules Optionnels

2 Capsules optionnels - 2 Synopsis Modélisation de la concurrence Types de concurrence Quand les utiliser Modélisation des structures dynamiques Structure interne dynamique Rôles de capsule dynamiques vs statiques Le service de la classe Frame Exemple

3 Capsules optionnels - 3 Types Concurrence Processus Concurrence pesante Un espace dadresses unique et un environnement dexécution unique Peut être sous divisé en un nombre de threads Thread Concurrence légère Un calcul indépendant qui exécute dans lespace dadresses et dexécution du processus qui lenglobe Capsule Une forme de concurrence encore plus légère Exécute dans le contexte dun thread qui lenglobe Concurrence logique qui a une sémantique dexécution jusquà la fin

4 Capsules optionnels - 4 Quand les utiliser Capsules La majorité des requis en concurrence peuvent être traiter avec lutilisation de la concurrence légère des capsules Threads Si on fait un appel de système qui bloque tel que la lecture dun socket Pour les opérations qui demande beaucoup de temps de CPU Si une section de code est critique et que vous voulez élever sa priorité par rapport aux autres capsules Processus Requis pour lexécution sur différents processeurs (client/serveur) Pour augmenter la protection de la mémoire / tolérance des défaillances

5 Capsules optionnels - 5 Modèle monothread

6 Capsules optionnels - 6 Modèle multithread

7 Capsules optionnels - 7 Structure dynamique interne une source commune de complexité dans les systèmes en temps réel, est le besoin de reconfigurer le système durant lexécution, basé sur les changements dynamiques de lenvironnement externe [1] Une approche est de dessiner un système fixe (statique) basé sur le scénario du pire cas Ceci va sûrement nous amener à une solution dispendieuse et inefficace Une autre approche est demployer une forme de gestion des ressources, le plus difficile étant la création et destruction dynamique des composantes de système et de leurs relations

8 Capsules optionnels - 8 Rôles de capsule statiques vs dynamiques Rôles de capsules fixes Créés et détruits simultanément quand la capsule contenant est créée ou détruite En gros, toutes les capsules que nous avons vue à date Rôles de capsule optionnels Pas créés en même temps que la capsule contenant, mais créés / détruits dynamiquement Certaines règles: Une capsule optionnelle qui est instanciée doit être une sous classe compatible à la classification du rôle de la capsule Un rôle de capsule optionnel ne peut être détruit que par son contenant immédiat

9 Capsules optionnels - 9 Capsules Optionnelles Le nombre maximum dinstances de capsules créées dynamiquement est déterminé par la cardinalité (ou facteur de reproductions)

10 Capsules optionnels - 10 Services de la classe Frame de RoseRT Fournit les mécanismes pour créer et détruire les capsules optionnelles Fournit les mécanismes pour créer les threads Classes dimplémentation: Frame:: {type de classe pour un port de service Frame} incarnate( ), incarnationAt( ), destroy( ), classIsKindOf( ), classOf( ), className( ) RTActorID:: {poigné pour linstance dune capsule} isValid( ) RTActorRef:: {contient linfo commune pour chaque rôle} size( )

11 Capsules optionnels - 11 Création dynamique dun rôle de capsule framePort.incarnate( capsule_role, [capsule_class], [initialization_data], [type_descriptor], [logical_thread], [index] ); Les threads séparés peuvent seulement être créés via les capsules optionnels [ dénote les arguments optionnels]

12 Capsules optionnels - 12 Création dynamique dun rôle de capsule (2) Exemple: RTActorID capsuleID; PrinterData myPrintData(14, printJob05); capsuleID = anotherFramePort.incarnate( myDeviceRole, // rôle de la capsule Printer,// classe de la capsule (ou EmptyActorClass) &myPrintData,// données dinitialisation &RTType_PrinterData, // descripteur de type printerThread,// nom du thread logique -1// prochain index disponible );

13 Capsules optionnels - 13

14 Capsules optionnels - 14 Destruction dynamique dun rôle Frame::destroy(RTActorRef) // capsuleRoleName et Frame::destroy(RtActorID) //capsuleID Exemples framePort.destroy(myDeviceRole); // myDeviceRole à été créée par le cadre framework avec la relation dagrégation ou RTActorID myDeviceID = framePort. incarnationAt(capsuleRole, index); //et par la suite framePort.destroy(myDeviceID);

15 Capsules optionnels - 15 Exemple – Jam Controller Nom de rôle de capsule statique

16 Capsules optionnels - 16 Exemple Diagramme de Structure Trois capsules potentiellement instanciées

17 Capsules optionnels - 17 Exercice de capsules optionnelles /Threads ( voir le modèle ThreadsExercise) Téléchargez et dézippez le modèle contenu dans ThreadsExercise.zip Chargé et exécutez le modèle et observez son comportement Étudiez le code contenu dans le model Répondez aux 4 questions

18 Capsules optionnels - 18 Exercice de Threads– Diagramme de classes

19 Capsules optionnels - 19 Exercice de Threads - Questions 1.Comment est-ce que les jammers sont créés et détruits? Expliquez. 2.a. Quel est le nombre maximum de jammers? b. Quel est le nombre maximum actifs? Quelle bandes? c. Pourquoi est-ce que les messages pour la bande G arrivent deux fois plus souvent? 3.a. Sur quel thread est ce que SysController exécute? Sur quel thread les jammers exécutent? Où est-ce que ce dernier thread est définit? b. Quand le JamController bloque (artificiel), que font les jammers actifs? Et pourquoi? c. Ceci peut être perçu comme un comportement qui est indésirable, quel changement de design peut-on faire?

20 Capsules optionnels - 20 Exercice de Threads - Questions (contd) 4.Effacez la dépendance (pas seulement sur le diagramme) entre le JamController et un des jammers pour une bande spécifique. Recompilez et observez le comportement. a. Dans quel énoncé obtenez vous une erreur de compilation? Et pourquoi? b. Que se produirait-il si la bande fournit par SysController était C? Quel type de jammer serait créé, si il y en a un?

21 Capsules optionnels - 21 Références [1] Selic, Gullekson, Ward, Real-Time Object Oriented Modeling, Chapters 6 & 10 Wiley, 1994 [2] RoseRT On-Line Help C++ Language Guide / C++ Services Library [3] RoseRT On-Line Help C++ Language Guide / Services Library Class Reference


Télécharger ppt "Systèmes en temps réel Threads et Capsules Optionnels."

Présentations similaires


Annonces Google