Windows NT/2000/XP Enjeux et contraintes techniques Sixième partie COM – Notions avancées C. Casteyde Document diffusé sous licence GNU FDL.

Slides:



Advertisements
Similar presentations
1 School of Computing Science Simon Fraser University CMPT 300: Operating Systems I Ch 4: Threads Dr. Mohamed Hefeeda.
Advertisements

DCOM Technology. What is DCOM? DCOM is just COM with a longer wire DCOM is just COM with a longer wire DCOM extends COM to support communication among.
Threading Models in Visual Basic Language Student Name: Danyu Xu Student ID:98044.
Threading in COM What is an Apartment and Why Do I Care?
Gestion de patrimoine professionnelle Le Compte-conseil Pour tous vos besoins de placement Le Compte-conseil est un compte non discrétionnaire fondé sur.
Michel Pellicioli Les métiers d’accompagnement de la recherche Situation de l’IPHC.
Amin Mesmoudi & Mohand-Saïd Hacid Traitement parallèle et déclaratif de requêtes sur des masses de données issues d'observations astronomiques.
CTF3 : Etat des lieux et projets Jean-Marc Nappa, Jean Tassan, Sébastien Vilalte.
ESPACE NUMERIQUE PERSONNEL (ex-coffre fort numérique) 1 PRESENTATION.
IFT 703 Informatique cognitive Les processus subsymboliques de ACT-R André Mayers Automne
Infections urinaires de l’homme Estelle Creutzer 19/02/2015.
Un bon cœur vaut plus que toutes les têtes du monde.
Le volet juridique des projets  Généralités  Contrat d’ingénierie industrielle  Contrat informatiques.
Research & Technology Date /Référence OPEN Les langages de modélisation en ingénierie système Etat de la pratique et persepectives.
Mathématiques CST MODULE 6 L’optimisation de GRAPHES.
Accélérateur de projets. PONT SALOMON Notre stratégie Deville Rectification est le leader sur le marché de la plaque usinée en acier et en aluminium.
Février 2014 GPU / Xeon Phi Calcul de fonction de corrélation à 2 points sur un grand nombre de galaxies Image : collaboration SDSS Problème : pour effectuer.
M ODÉLISATION UML.  Introduction  Modélisation Objet  Types de relation  Héritage  Association  Contenance  Diagrammes UML  Diagramme d’objets.
1 Administration et paramétrage de K-d’école Module 8 1.Gestion de l’annuaire 2.Autres outils d’administration de l’annuaire 3.Gestion des services internes.
La tuberculose anale: à propos de 4 cas F. Emouhafid, Y. Lbrahmi,M
Macrophytes en cours d’eau Evaluation DCE – Bioindication. Paris avril 2011 Christian Chauvin, Fany Roussel, Alain Dutartre, Vincent Bertrin CARMA.
AMPERES Enseigner de façon dynamique le produit scalaire en 1re S ?
1 TRAAM 2011 Domaine d’application Confort et domotique Domaine d’application Confort et domotique Présenté Par Grégory ANGUENOT.
IFT359 – Programmation fonctionnelle Thème 10 Extension syntaxique II pattern  motif template  gabarit 1.
Développement Durable et Renforcement des Capacités du Gouvernement Prof. Dr. Árpád Kovács Pr é sident du Bureau d’Audit d’Etat de la Hongrie Pr é sident.
Enseignement d’exploration Littérature et société Jeudi 14 octobre 2010 LPO Coeffin Formation académique Académie de la Guadeloupe.
Réunion départementale Mayenne VENDREDI 22 JANVIER À 9H30 AU CH DE MAYENNE.
Tâche 4 Quelques propositions méthodologiques pour suivre le(s) cycle(s) de vie d’une ressource Séminaire ReVEA, juillet 2015, Loriol Catherine Loisy et.
Nahela Robert & Lisa Goll. Qu'est ce que Twitter ? Twitter est un réseau social, permettant de suivre les actualités d’une personne, d’une association,
L’objectif est de connaitre l’anatomie de l’abdomen et d’en prendre en charge les pathologies. Traumatisme de l’abdomen.Objectifs  Introduction  Rappels.
Mémoire de Projet de Fin d'Études
CO 2 maîtrisé | Carburants diversifiés | Véhicules économes | Raffinage propre | Réserves prolongées © IFP DTIMA - UMLV – Convergence O-schéma – 15/11/2007.
Etude des saccades: une version oculomotrice du Stroop Stéphanie Iannuzzi Neuropsychologue INSERM U825 - CHU Purpan Equipe du Dr. Démonet
Problème des deux corps à masse variable Etude du système V391 Pegasi Verheylewegen Emilie Séminaire Systèmes Dynamiques Octobre 2009 Aspirant FNRS.
Dernière sortie 2015 : ce sera long mais pas très difficile.
QUIZ Soutien pour une politique de gestion des médicaments à haut risque Version hôpitaux généraux et Sp Juillet 2016.
Introduction à la physiologie animale
Activité Microélectronique GIP MIND Design SOI pour circuits haute tension Workshop VLSI – 2 juin 2016 Gilles Chaumontet.
IFT359 – Programmation fonctionnelle Thème #4 Fonctions récursives Thème #3 : évaluation par environnement a été présenté avec thème #2.
Gestion du cadre budgétaire Juin Gestion du cadre budgétaire Tout sur la planification budgétaire et les budgets Prévision des revenus totaux, des.
EPS : LES PROGRAMMES DES CYCLES 3 ET 4 Rentrée 2016 Inspection pédagogique régionale EPS.
Docteur MAYAUD Régis Le 17 Mars Alternance veille sommeil En parallèle Alternance jour nuit.
ECUM Emergence de Communautés d'Utilisateurs de MathEnPoche.
Système d’Information de Gestion. GEA2 2 Un étudiant en GEA doit être capable de Comprendre et analyser les besoins en information de gestion. Dialoguer.
STAGE « Réaction chimique » 16 mars 2005 Lycée Jacques Cartier - Saint-Malo.
[Nom du produit] Plan marketing [Nom]. Résumé de la situation marché Passé, présent et avenir du marché –Revoyez les changements qui ont affecté la part.
Développement Très Rapide en Applications de Gestion Créer des logiciels de gestion rapidement Licence Creative Common By SA Matthieu GIROUX -
21/09/2016 II. Quels enjeux de développement durable pose la croissance démographique ? pose la croissance démographique ? ECONOMIQUESSOCIAUX ENVIRONNEMENTAU.
Présentation et survol de la RDA pour les élèves expérimentés Mise en œuvre en 2014 Le texte est écrit au masculin seulement pour en simplifier la lecture.
Démarche de réflexion et d'aménagement en vu d'un avenir durable Richard Wallner -
Stage départemental 204 « Faire des mathématiques à l'école maternelle » Le concept fondamental d'espace à l'école maternelle Un concept à construire par.
6 ème Histoire Thème 1 Gravures Grotte Chauvet. M ISE EN ŒUVRE DIDACTIQUE Gravures Grotte Chauvet.
Formation TICE Décembre 2010 Henri Dunant. Sommaire 1.Sur SCONET lien vers SCONETlien vers SCONET SCONET Absence Livret Personnel de Compétences (LPC)
1 DREAL BOURGOGNE Mise en oeuvre de l'État Exemplaire en DREAL Plan Administration Exemplaire (P.A.E) La Fiche action n°17 du P.A.E. Bilan de consommations.
PRESENTATION JEU D’ENTREPRISE VISUAL-SURF. Chaque entreprise fabrique  2 PRODUITS : des snowboards des funboards  1 NOUVEAU PROJET: des surfs Et prépare.
Prévision de la trajectoire d'une avalanche dense ● Construction d’une simulation numérique de l’écoulement d’une avalanche dense ● Modélisation ● Mise.
La place des conduites addictives dans le cadre d’une démarche de prévention des Risques PsychoSociaux Nathalie Castel Docteur en Psychologie – Experte.
Al.Gribincea, dr.hab., prof.univ. Année académique
Les grandeurs à l’école maternelle Les masses
Installation d'un gestionnaire de messagerie : Thunderbird.
GIND / G3EI : Amplificateurs –O–Opérationnel –D–Des petits signaux –D–De puissance –A–Avec contre réaction Oscillateurs Générateurs de signaux.
Voici notre exposé sur l' : Ultra-Léger- Motorisé ULM ULM ULM ULM ULM ULM ULM ULM ULM ULM ULM ULM ULM ULM ULM ULM ULM ULM ULM ULM ULM ULM ULM ULM ULM ULM.
LA THÉORIE DE L’ÉVOLUTION Préparé par: Oumayma lamine Lycée Cité El Amel Gabès
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
PRODIGE Administration des droits. Formation ● Organisation des données ● Gestion de l'accès aux données ● Droits d'administration ● Droits spécifiques.
1 Design Pattern Rudiments d'UML. 2 UML ● Unified Modeling Language ● Langage uniformisé pour la spécification de modèles objets ● Graphiques standardisés.
Présentation de GUM_MC Jean-Marie Biansan. Rappel de la problématique Mesurandes “d'entrée” pour lesquels on posséde - un estimateur de la valeur - une.
Dynamic Host Configuration Protocol 1 DHCP. Introduction Lorsque vous connectez une machine à un réseau Ethernet TCP/IP, cette machine, pour fonctionner.
Présenté par: Suivie par :
A tutorial on building large-scale services
Presentation transcript:

Windows NT/2000/XP Enjeux et contraintes techniques Sixième partie COM – Notions avancées C. Casteyde Document diffusé sous licence GNU FDL

Plan ● Multithreading et COM – Notion d'appartement – Modèles de threading ● Sécurité DCOM ● Les pièges – Les comptes de références – Les conventions d'appel – Interblocages et réentrances – Pertes de liaison réseau ● Conclusion

Multithreading et OLE ● Les nouveaux objets COM peuvent être multithreadés (Windows NT) ● Les anciens objets OLE ne supportent pas d'appels concurrents (Windows 3.1) ● Ils sont conçus pour fonctionner dans le thread principal (thread de la boucle de messages) ● Nécessité de la compatibilité ascendante ● Une technique d'isolation doit être développée

Notion d'appartement ● Contexte d'exécution des objets COM ● Chaque objet appartient à un appartement et un seul, et il ne « déménage » jamais ● Un appartement peut être mono ou multithreadé ● Chaque thread indique son modèle de threading via CoInitializeEx : – soit il est seul dans son appartement, – soit il est dans l'appartement multithreadé du processus.

Notion d'appartement ● Les appels entre deux appartements sont marshallés ● Ils sont exécutés sur l'un des threads de l'appartement ● Les appels sont sérialisés pour les objets des appartements mono threadés ● Il n'y a qu'un appartement multithreadé dans un processus

Appels sortant Appartement A Client Appel sortant Reprise d'exécution Attente active (boucle de messages) Appartement B Objet serveur Thread de traitement Exécution Requête Réponse

Plan ● Multithreading et COM – Notion d'appartement – Modèles de threading ● Sécurité DCOM ● Les pièges – Les comptes de références – Les conventions d'appel – Interblocages et réentrances – Pertes de liaison réseau ● Conclusion

Création in-process ● Les objets COM des processus sont placés dans l'appartement du thread qui les crée ● Les objets des serveurs in-process sont créés : – dans un appartement qui leur convient, – choisi en fonction d'un « modèle de threading » défini en base de registres. ● Le premier thread « appartment threaded » du processus crée l'appartement principal (OLE)

Création in-process CO M Base de registres Localisation Modèle de threading CLSID CoCreateInstance Appartement B Objet serveur DLL Appartement A Objet serveur DLL Client Proxy/Stub

Modèles de threading in-process ● Il existe cinq modèles de thread pour les serveurs COM in- process : – mono threadé (objets OLE classiques), – apartment threaded (objets mono threadés), – free threaded (objets multi threadés purs), – both threaded (objets simples), – neutre (changements de contexte limités). ● Spécifié par la clef « ThreadingModel » en base de registres

Modèle monothreadé ● Utilisé pour les objets sans clef ThreadingModel ● Mode de compatibilité pour les anciens objets ● Utilise le premier appartement monothreadé de l'application ● Création de l'appartement si nécessaire (fortement déconseillé) ● Le thread de l'appartement doit exécuter une boucle de messages

Modèle apartment threaded ● ThreadingModel = 'Apartment' ● Les objets sont placés dans un appartement mono threadé ● Création de l'appartement si nécessaire ● Pas nécessairement l'appartement principal ● Nécessaire pour les contrôles ActiveX ● Le thread de l'appartement doit exécuter une boucle de messages

Modèle free threaded ● ThreadingModel = 'Free' ● Les objets sont placés dans l'appartement multithreadé ● Création de l'appartement si nécessaire ● Les objets doivent être thread-safe ● Pas de boucle de messages nécessaire ● Utilisation d'un pool de thread OLE pour les appels entrants

Modèle both threaded ● ThreadingModel = 'Both' ● Les objets sont placés dans l'appartement du thread créateur ● Pas de création d'appartement à la volée ● Les objets doivent être thread-safe ● Les objets doivent être réentrants ● Pas de callback asynchrones

Modèle neutre ● ThreadingModel = 'Neutral' ● Les objets sont placés dans l'appartement neutre (unique par processus, sans thread associé) ● Tous les appels sont directs (pas de changement de contexte) ● Marshalling systématique mais simplifié (pour les appels sortants) ● Même contraintes que les objets both threaded

Plan ● Multithreading et COM – Notion d'appartement – Modèles de threading ● Sécurité DCOM ● Les pièges – Les comptes de références – Les conventions d'appel – Interblocages et réentrances – Pertes de liaison réseau ● Conclusion

Sécurité DCOM ● Paramétrable globalement ou au niveau de chaque composant dans DCOMCnfg ● Comprend les droits d'exécution des serveurs et d'autorisation d'accès ● Plusieurs niveaux d'authentification sont possibles ● Les serveurs peuvent définir leur propre politique d'accès (CoInitializeSecurity) ● Depuis XP SP2, des limites globales sont définies

DCOMCnfg

Utilisateurs COM/DCOM ● Les utilisateurs particuliers sont : – le « système » (obligatoire), – l'utilisateur « interactif » (requiert une session ouverte), – l'utilisateur « anonyme » (utilisateur des systèmes distants authentifiés), – « tout le monde ». ● En dehors d'un domaine : – comptes avec mot de passe identiques et non vides, – utilisateurs systèmes sont invités ou anonymes selon la stratégie de sécurité locale utilisée.

Plan ● Multithreading et COM – Notion d'appartement – Modèles de threading ● Sécurité DCOM ● Les pièges – Les comptes de références – Les conventions d'appel – Interblocages et réentrances – Pertes de liaison réseau ● Conclusion

Comptes de références ● La durée de vie des objets est contrôlée par comptes de références ● Ne prend pas en compte les mécanismes de connexion applicatifs ● En réseau, l'applicatif doit surveiller ses clients ● Une erreur de compte peut être catastrophique : – utilisation d'objets détruits (jardinage, crash ultérieur), – non libération d'objets (client fautif non connu).

Plan ● Multithreading et COM – Notion d'appartement – Modèles de threading ● Sécurité DCOM ● Les pièges – Les comptes de références – Les conventions d'appel – Interblocages et réentrances – Pertes de liaison réseau ● Conclusion

Conventions d'appel ● Les conventions d'appel doivent être fixées : – la représentation des données doit être la même, – le passage des paramètres doit être fixé, – règles de passage de paramètres strictes, – allocation et libération de la mémoire via IMalloc. ● Rappel : les paramètres de sortie doivent être : – alloués par l'appelé, – libérés par l'appelant, – l'appelé ne doit pas modifier les paramètres d'entrée.

Gestion de la mémoire ● Le non respect des conventions d'appel est systématiquement catastrophique : – destruction multiple de blocs (jardinage), – non destruction de blocs (leaks), – destruction par les stubs après l'appel (méthode fautive inconnue). ● Les types de données sont complexes : – BSTR (chaînes « Pascal »), OLESTR (chaînes C), – VARIANT, SAFEARRAY (tableau VB).

Plan ● Multithreading et COM – Notion d'appartement – Modèles de threading ● Sécurité DCOM ● Les pièges – Les comptes de références – Les conventions d'appel – Interblocages et réentrances – Pertes de liaison réseau ● Conclusion

Étreintes fatales ● Les objets free threaded : – ont leurs requêtes effectuées sur des threads de travail, – ne sont jamais réentrés sur le même thread, – mais peuvent être accédés par plusieurs threads. ● Les sections critiques sont nécessaires, mais : – peuvent provoquer des interblocages entre appartements, – doivent être relâchées dans les appels sortants.

Étreintes fatales Appartement A (multithreadé) Thread 1 Thread 2 Lock() p->f() Lock() Appartement B P Client 1 4

Réentrances ● Lors d'un appel depuis un appartement monothreadé : – OLE crée une boucle de messages temporaire, – attend la réponse de l'appel, – peut traiter des appels entrants vers un objet de l'appartement. ● Les objets single, apartment, both et neutral threaded doivent donc être réentrants.

Réentrances Appartement A boucle de messages Objet variable d'instance V Méthode V = 2 if (V == 1) p->f(); V == 2 ! Réentrance Appartement B Objet serveur Appartement C Client

Réentrances ● Les objets monothreadés doivent donc : – soit ne pas faire d'appel « sortant » de l'appartement, – soit avoir une machine à état complète, – soit travailler sur des variables locales. ● Les sections critiques sont inopérantes : – les réentrances sont effectuées sur le même thread, – au mieux, cela provoquerait un auto-bloquage.

Plan ● Multithreading et COM – Notion d'appartement – Modèles de threading ● Sécurité DCOM ● Les pièges – Les comptes de références – Les conventions d'appel – Interblocages et réentrances – Pertes de liaison réseau ● Conclusion

Contrôle de la liaison ● Il n'est pas possible de fixer les timeouts réseau ● En cas de chute du serveur : – 30 à 40 secondes par appel (blocage des autres clients), – timeout non systématique (sur lien local). ● En cas de chute du client, 8 mn de latence ● Forçage de la destruction des ressources clients impossible (AddRef maintenu par DCOM) ● Nécessité de lancer un thread par canal de communication

Threads de communication Connexion Thread de notification Machine A Serveur Machine B Client 1 Abonnemen t Notification Machine C Client 1

Déploiement réseau ● Configuration du déploiement non centralisée ● Configuration difficile ● Gestion des droits difficile et non maîtrisable ● Architecture centralisée (serveur de domaine) ● Conflits avec DHCP (rétablissement des liaisons) ● Requiert une infrastructure réseau propre

Plan ● Multithreading et COM – Notion d'appartement – Modèles de threading ● Sécurité DCOM ● Les pièges – Les comptes de références – Les conventions d'appel – Interblocages et réentrances – Pertes de liaison réseau ● Conclusion

Les contraintes COM/DCOM ● COM/DCOM est technique et dangereux : – gestion des ressources difficile (ressources mémoire, comptes de références), – gestion du multithreading difficile, – très difficile à déboguer, – contrôle de la liaison réseau quasi impossible, – gestion de la sécurité difficile.

Conclusion ● COM est difficile à maîtriser en détail ● Requiert une expertise importante ● En réseau, cette technologie est inutilisable ● Le déploiement est rendu technique en raison des problèmes de sécurité ● Ces contraintes doivent être prises en compte dès la conception des applications