250 likes | 359 Views
Extension du modèle de composants CORBA avec accès concurrent à des données partagées. Travail réalisé par : Landry BREUIL PFE, ISIMA Encadrants : Gabriel ANTONIU Christian PEREZ. Calculateur. Calculateur. Producteur. Contrôleur. Données.
E N D
Extension du modèle de composants CORBA avec accès concurrent à des données partagées Travail réalisé par : Landry BREUIL PFE, ISIMA Encadrants : Gabriel ANTONIU Christian PEREZ
Calculateur Calculateur Producteur Contrôleur Données BesoinApplication distribuée avec stockage de données Lancer Surveiller Lire / Écrire Lire Écrire
Plan • 1. Concepts utilisés • 2. Modélisations possibles • 3. Mise en oeuvre
Concepts utilisés • 1. Concepts • CCM • JuxMem • Proposition d'intégration • 2. Modélisations possibles • 3. Mise en oeuvre
Composant CORBA CCM : modèle de composants CORBASchématisation Interface principale du composant Facettes « provides » Réceptacles « uses » Puits d' événements « consumes » Sources d' événements « emits» Attributs « attributes »
CCM : modèle de composants CORBA • Modèle de développement • séparation des rôles • indépendant du langage • Déclaration IDL3 • Implémentation / Compilation • Assemblage par tierce partie • Exécution
Calculateur Producteur Contrôleur Stockage CCM : modèle de composants CORBAApplication = assemblage de composants
Calculateur Producteur Contrôleur Stockage Données CCM : modèle de composants CORBAApplication = assemblage de composants ? ? ?
Processus Processus Processus Données JuxMem Partage de données distribuées sur grilles : JuxMem Interface d'accès / programmation Allouer Lire / Écrire Écrire Lire
Composant A Composant B Données JuxMem Proposition d'intégrationInteraction des modèles Allouer Lire / Écrire Lire
Calculateur Calculateur Producteur Contrôleur Données Rappel du besoinApplication distribuée avec stockage de données Lancer Surveiller Lire / Écrire Lire Écrire
Producteur Contrôleur Données JuxMem Réponse au besoinIntégration entre CCM et JuxMem Lancer Surveiller Calculateur Allouer Lire / Écrire Lire Écrire
Modélisations possibles • 1. Concepts utilisés • 2. Modélisations possibles • Composant à donnée interne • Composant et donnée externe • Proposition : un modèle intermédiaire • 3. Mise en oeuvre
A C B Modélisations possiblesModèle 1 : composant à donnée interne interface data_access { boolean set(in octet value, in short offset); octet get( in short offset); void acquire(); void release(); }; component A { uses data_access data_used; }; component B { uses data_access data_used; }; component C { provides data_access data_shared; }; Données Problème : Peu flexible, centralisé
A C B Modélisations possiblesModèle 2 : composant ET données externes interface data_access { boolean set(in octet value, in short offset); octet get( in short offset); void acquire(); void release(); }; component A supports data_access {}; component B supports data_access {}; component C supports data_access {}; Données Problème : Gestion explicite des accès concurrents
A C B Modélisations possiblesNotre Proposition : modèle intermédiaire • Extension de l'IDL3 => IDL3+ • Type de port orienté données • Mots clés «accesses» «shares» • Accès via une interface locale • Flexible • Plutôt décentralisé • Equilibrage de charge data_ref Données
Composant B Composant A Couche d'abstraction de l'accès à la donnée Données Système de gestion de données Modélisations possiblesArchitecture en couches
Mise en oeuvre • 1. Concepts utilisés • 2. Modélisations possibles • 3. Mise en oeuvre • Exemple IDL3+ • Implémentations du modèle intermédiaire • Compilation de l'IDL3+
A C B Exemple IDL3+Langage IDL3 étendu typedef Octet data_space[1000]; component A { accesses data_space data_used; }; component B { accesses data_space data_used; }; component C { shares data_space data_shared; }; data_ref Données
Contexte CCM : généré par le compilateur IDL3 Exécuteur : écrit par le développeur Conteneur CCM : généré par le compilateur IDL3 Implémentation du modèle intermédiaireFonctionnement interne d'un composant CCM Object Request Broker
Contexte intermédiaire Exécuteur Contexte CCM Conteneur intermédiaire Conteneur CCM Implémentation du modèle intermédiaireEncapsulation de l'exécuteur • Au-dessus de CCM • Encapsulation • Redirection d'appels • Transparent / CORBA • Référence vers donnée • Gestion de données Object Request Broker
Couche d'abstraction de l'accès à la donnée Fichier local NFS JuxMem Implémentation du modèle intermédiaire3 systèmes de gestion de données juxmem_alloc(size); id = juxmem_map(..); juxmem_acquire(..); juxmem_acquireR(..); juxmem_release(..); x = juxmem_read(..); juxmem_write(val); id = mkstemp(..); id = open(..); close(..); lockf(..); lseek(..); x = read(..); write(val); id = mkstemp(..); id = open(..); close(..); flock(..); lseek(..); x = read(..); write(val);
Compilation IDL3+ Description IDL3+ Implémentation C++ Exécutif Compilateur IDL3+ Compilateur C++ Code Généré C++ Binaire Compilateur IDL3 Description IDL3 Code CCM C++
Conclusion • Extension du langage IDL3 en IDL3+ • Spécification d'un compilateur • Développement de prototypes • Définition de scénarios de tests • Expérimentation en cours sur Grid’5000 • Suite possible projet LEGO (ANR Calcul Intensif)