Threads et Capsules Optionnels

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

Module Systèmes d’exploitation
Module Systèmes d’exploitation
Module Systèmes d’exploitation
GEF 435 Principes des systèmes d’exploitation
GEF 243B Programmation informatique appliquée
Approche graphique du nombre dérivé
Génie Logiciel 2 Julie Dugdale
INDICATEURS STATISTIQUES ET DEVELOPPEMENT TECHNOLOGIQUE
Réflexivité et réseaux d’ information
Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie III École Normale Supérieure Tétouan Département Informatique
Systèmes en temps réel Sujets divers. Sujets divers - 2 Synopsis Services dexceptions Encore plus sur les services de chrono Cardinalité et structure.
Critère d’ordonnancement en temps réel Partie II
Introduction Aux Systèmes en temps réel
GEF499 Systèmes en temps réel
Critère d’ordonnancement en temps réel Partie III
Systèmes en temps réel Modélisation du comportement en temps réel avec UML.
Patterns & Anti Patterns
GEF499 Systèmes imbriqués à temps réel
Systèmes en temps réel Héritage avec les capsules.
Systèmes en temps réel Services de Communication.
Systèmes en temps réel Classes passives & Passage de données.
Modélisation de la structure en UML (Partie II)
Tolérance aux défaillances de logiciel
Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Considération de temps.
GEF 243B Programmation informatique appliquée
GEF 435 Principes des systèmes dexploitation Communication Interprocessus (CIP) III (Tanenbaum 2.3)
GEF 435 Principes des systèmes dexploitation Structure des systèmes dexploitation (Tanenbaum 1.7)
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
GEF 243B Programmation informatique appliquée
Projet n°4 : Objecteering
26/03/2017 Fonctionnement d ’un cluster sous AIX grâce à HACMP : High Availability Cluster Multi-Processing Raphaël Bosc, IR5.
UML - Présentation.
Objectifs Nous allons concevoir une mise en œuvre contenant un noyau de jeu d’instructions. Nous verrons comment l’architecture de jeu d’instructions.
Cours Présenté par …………..
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Section VI Structures répétitives (suite)
Langage SysML.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Présentation SysML (Systems Modeling Language ) est basé sur UML et remplace la modélisation de classes et d'objets par la modélisation de blocs pour un.
le profil UML en temps réel MARTE
Synchronisation et communication entre processus
Algorithmes Branch & Bound
Serveurs Partagés Oracle
1.2 COMPOSANTES DES VECTEURS
Guy Gauthier, ing., Ph.D. Session automne 2012.
Courbes de Bézier.
Programmation concurrente
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
Universté de la Manouba
PROJET DE GENIE LOGICIEL 2005
Module d’Enseignement à Distance pour l’Architecture Logicielle
Conception des Réalisé par : Nassim TIGUENITINE.
Ordonnancement de tâches
2.2 PRODUIT SCALAIRE ET CALCUL D’ANGLES
Synchronisation Classique
Patrons de conceptions de créations
JEE 5 F.Pfister 2 institut eerie JEE – Une plateforme serveur  Développement et exécution d'applications réparties.
1 Modèle pédagogique d’un système d’apprentissage (SA)
Gérer la sécurité des mots de passe et les ressources
Supports de formation au SQ Unifié
Algorithmique et programmation (1)‏
Le contenu est basé aux transparents du 7 ème édition de «Software Engineering» de Ian Sommerville«Software Engineering» de Ian Sommerville B.Shishedjiev.
Programmation Système et Réseau
La programmation par objets Principes et concepts Etude de Smalltalk.
Hiver 2004SEG2501 Chapître 41 Chapître 4 SDL – structure d’un système et son comportement.
Nouvelles Technologies Internet & Mobile
Gestion des documents internes avec SQL Server 2005 Date de publication : janvier 2006.
Diagrammes de comportement Présentation. Diagramme de séquence  Permet de modéliser les envois de messages entre objets chronologiquement.  Modélisation.
Chapitre 12 Surveillance des ressources et des performances Module S41.
Transcription de la présentation:

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

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 Capsules optionnels - 2

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

Quand les utiliser Capsules Threads Processus La majorité des requis en concurrence peuvent être traiter avec l’utilisation de la concurrence légère des capsules Threads Si on fait un appel de système qui bloque tel que la lecture d’un 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 l’exécution sur différents processeurs (client/serveur) Pour augmenter la protection de la mémoire / tolérance des défaillances Capsules optionnels - 4

Modèle monothread Capsules optionnels - 5

Modèle multithread Capsules optionnels - 6

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 l’exécution, basé sur les changements dynamiques de l’environnement 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 d’employer 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 Capsules optionnels - 7

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 Capsules optionnels - 8

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

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 d’implémentation: Frame:: {type de classe pour un port de service Frame} incarnate( ), incarnationAt( ), destroy( ), classIsKindOf( ) , classOf( ), className( ) RTActorID:: {poigné pour l’instance d’une capsule} isValid( ) RTActorRef:: {contient l’info commune pour chaque rôle} size( ) Capsules optionnels - 10

Création dynamique d’un 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] Capsules optionnels - 11

Création dynamique d’un 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 d’initialisation &RTType_PrinterData, // descripteur de type printerThread, // nom du thread logique -1 // prochain index disponible ); Capsules optionnels - 12

Capsules optionnels - 13

Destruction dynamique d’un 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 “d’agrégation” ou RTActorID myDeviceID = framePort. incarnationAt(capsuleRole, index); //et par la suite framePort.destroy(myDeviceID); Capsules optionnels - 14

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

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

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 Capsules optionnels - 17

Exercice de Threads– Diagramme de classes Capsules optionnels - 18

Exercice de Threads - Questions Comment est-ce que les jammers sont créés et détruits? Expliquez. 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? 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? Capsules optionnels - 19

Exercice de Threads - Questions(cont’d) 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? Capsules optionnels - 20

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” Capsules optionnels - 21