ARTO : un modèle d'objet adaptable pour la qualité de...

130
N° d’ordre 02 ISAL 0069 Année 2002 Thèse ARTO : un modèle d’objet adaptable pour la qualité de service Présentée devant L’institut national des sciences appliquées de Lyon Pour obtenir Le grade de docteur Formation doctorale : Informatique et Systèmes Coopératifs pour l’Entreprise École doctorale : École doctorale Informatique et Information pour la Société Par José-Lino CONTRERAS (Ingénieur) Soutenue le 6 décembre 2002 devant la Commission d’examen Jury MM. Directeur Jean Louis SOURROUILLE, Professeur Rapporteur Charles ANDRE, Professeur Rapporteur Laurence DUCHIEN, Professeur Mario PALUDETTO, MC HDR 1

Transcript of ARTO : un modèle d'objet adaptable pour la qualité de...

Page 1: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

N° d’ordre 02 ISAL 0069 Année 2002

Thèse

ARTO : un modèle d’objet adaptable pour la qualité de service

Présentée devant L’institut national des sciences appliquées de Lyon

Pour obtenir

Le grade de docteur

Formation doctorale : Informatique et Systèmes Coopératifs pour l’Entreprise École doctorale : École doctorale Informatique et Information pour la Société

Par

José-Lino CONTRERAS (Ingénieur)

Soutenue le 6 décembre 2002 devant la Commission d’examen

Jury MM.

Directeur Jean Louis SOURROUILLE, Professeur Rapporteur Charles ANDRE, Professeur Rapporteur Laurence DUCHIEN, Professeur Mario PALUDETTO, MC HDR

1

Page 2: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

ARTO : un modèle d’objet adaptable pour la qualité de service

Résumé

Le contexte d’exécution des applications est devenu plus versatile et moins prédictible en raison de la complexité croissante des systèmes informatiques modernes (multiprocessus, systèmes distribués, etc.). Cette situation complique le développement et le fonctionnement des applications dans les domaines sensibles aux propriétés dynamiques des systèmes, tels que le temps réel et le multimédia. Une connaissance partielle du contexte d’exécution n'est pas suffisante pour la construction de ces applications, et il est de plus en plus difficile d’obtenir cette connaissance par la voie analytique. D’un autre coté, les approches heuristiques apportent des solutions non optimales et rendent inévitable l’incertitude sur le comportement des applications pour les aspects non fonctionnels tels que le temps et la précision des réponses.

Les objets ARTO réduisent l'effet des changements inattendus du contexte d’exécution en adaptant dynamiquement leur comportement. Ils décident comment agir en fonction de critères propres et du contexte afin de faire au mieux pour satisfaire les services demandés. Les contraintes temporelles sont traitées comme faisant partie des propriétés qui définissent la Qualité de Service et sont le principal critère de décision pour l'adaptation des objets ARTO. Des fautes temporelles peuvent intervenir, mais la solution est destinée à des systèmes temps réel tolérant des défaillances sporadiques. Mots-Clés: qualité de service – approche objet – adaptabilité – temps réel – architectures à méta niveaux ARTO : an adaptable object model for quality of service Abstract

Application execution contexts have became more versatile and less predictable due to the increasing complexity of modern computer systems (multi process, distributed systems, etc.). This situation makes more difficult the development and execution of applications affected by dynamic properties of systems, such as real time and multimedia. A partial knowledge of the execution context is not enough to build such applications and the required knowledge is more and more difficult to obtain by analytical approaches. On the other side, heuristics approaches give non optimal solutions and make uncertain non functional aspects such as timing and precision of replies. ARTO objects decrease the effect of unexpected execution context variations by dynamically adapting their behavior. They base their decisions on their own criteria and on execution context in order to satisfy the requested services. Time constraints are treated as part of the Quality of Service properties and are the main criteria for the object’s adaptation. As temporal faults may happen the solution is oriented to real time systems accepting sporadic faults. Keywords: quality of service – objet orientation – adaptability – real time – meta-level architectures

2

Page 3: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Remerciements

Je voudrais remercier premièrement à la France, un

pays que m’a donné l’opportunité de connaître et

vivre sous un concept de société humanitaire et

solidaire, un pays qui grâce à son peuple peut être

encore un phare pour une humanité qui tombe dans

l’obscurité. Deuxièmement, je voudrais remercier à

l’INSA de Lyon, au Département d’Informatique et au

laboratoire L3i, pour m’avoir accueilli pendant des

années dans un cadre humain chaleureux et amical.

Troisièmement je veux remercier à Jean-Louis pour

son soutien permanent sans lequel ce travail ne serait

pas arrivé au but.

Lyon, novembre 2002

3

Page 4: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

1 INTRODUCTION........................................................................................................................................ 8

2 PROBLEME A RESOUDRE, BESOINS................................................................................................. 11

2.1 TRAITEMENT DES ASPECTS NON FONCTIONNELS....................................................................................... 11

2.2 PREDICTIBILITE ET CONTEXTE D'EXECUTION ............................................................................................ 13

2.3 LE PROBLEME A RESOUDRE....................................................................................................................... 14

2.3.1 Approche Statique ........................................................................................................................... 14 2.3.2 Approche Dynamique...................................................................................................................... 15

2.4 DOMAINE D'APPLICATION ENVISAGE ........................................................................................................ 16

2.5 BESOINS.................................................................................................................................................... 16

3 QOS ............................................................................................................................................................. 18

3.1 INTRODUCTION ......................................................................................................................................... 18

3.2 NOTION DE QOS ....................................................................................................................................... 18

3.3 PROPRIETES DE LA QOS............................................................................................................................ 19

3.4 CONCEPTS ET TERMINOLOGIE ................................................................................................................... 20

3.4.1 Le service dans la QoS. ................................................................................................................... 20 3.4.2 Caractéristiques de la QoS. ............................................................................................................ 20 3.4.3 Besoins de QoS et paramètres de QoS. ........................................................................................... 21 3.4.4 Contrats de QoS .............................................................................................................................. 21 3.4.5 Gestion de QoS et Politiques de gestion de QoS............................................................................. 21 3.4.6 Fonctions de Gestion de QoS et Mécanismes de QoS. .................................................................... 22 3.4.7 Catégories de QoS........................................................................................................................... 22

3.5 GESTION DE LA QOS................................................................................................................................. 22

3.5.1 Gestion Intrusive et non-Intrusive................................................................................................... 23 3.5.2 Couches de gestion de la QoS ......................................................................................................... 24 3.5.3 Phases ............................................................................................................................................. 25

3.6 EVALUATION/OPTIMISATION DE LA QOS.................................................................................................. 31

3.6.1 Fonctions d'utilité............................................................................................................................ 31 3.6.2 Critères de QoS............................................................................................................................... 32 3.6.3 Dimensions Multiples...................................................................................................................... 34 3.6.4 Optimisation de la QoS ................................................................................................................... 36 3.6.5 Optimisation hors ligne................................................................................................................... 36 3.6.6 Optimisation en ligne ...................................................................................................................... 37

4 SYSTEMES TEMPS REEL...................................................................................................................... 38

4.1 LE FACTEUR TEMPS................................................................................................................................... 38

4.2 LES CONTRAINTES TEMPORELLES ............................................................................................................. 39

4.3 LA VALEUR DU SERVICE EN FONCTION DU TEMPS ..................................................................................... 39

4.4 LA DATE D'ECHEANCE............................................................................................................................... 40

4.5 L'ORDONNANCEMENT............................................................................................................................... 40

4.6 APPROCHES STATIQUE ET DYNAMIQUE .................................................................................................... 40

4.7 TYPES D'ORDONNANCEMENT .................................................................................................................... 42

4

Page 5: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

4.8 LE SUPPORT POUR LE TEMPS REEL ............................................................................................................ 42

TECHNOLOGIES DE BASE........................................................................................................................ 44

5 OBJET ACTIF ........................................................................................................................................... 44

5.1 OBJET ACTIF ET PROCESSUS ...................................................................................................................... 44

5.1.1 Objet Actif ....................................................................................................................................... 44 5.1.2 Envois de messages ......................................................................................................................... 45 5.1.3 Programmation des processus. ....................................................................................................... 46 5.1.4 Composants de l'objet actif ............................................................................................................. 47 5.1.5 Nombre de threads .......................................................................................................................... 49 5.1.6 Création des threads ....................................................................................................................... 49 5.1.7 Concurrence.................................................................................................................................... 50

5.2 CONTROLE DES OBJETS ACTIFS ................................................................................................................. 50

5.2.1 Contrôle de la concurrence............................................................................................................. 50 5.2.2 Contrôle intra-objet ........................................................................................................................ 51 5.2.3 Contrôle inter objet ......................................................................................................................... 51 5.2.4 Contraintes d’état............................................................................................................................ 51 5.2.5 Communication entre objets............................................................................................................ 52 5.2.6 Synchronisation des appels ............................................................................................................. 52

5.3 BENEFICE DU MODELE D’OBJET ACTIF ...................................................................................................... 53

5.4 MODELES D'OBJET ACTIF POUR LE TEMPS REEL. ...................................................................................... 54

5.4.1 ACCORD......................................................................................................................................... 54 5.4.1.1 L'état de l'objet ............................................................................................................................................ 56

5.4.1.2 Communication entre objets........................................................................................................................ 57

5.4.1.3 Contrôle de concurrence.............................................................................................................................. 57

5.4.1.4 Ordonnancement ......................................................................................................................................... 57

5.4.2 DRO ................................................................................................................................................ 58 5.4.2.1 Traitement de messages............................................................................................................................... 59

5.4.2.2 Communication entre objets........................................................................................................................ 59

5.4.2.3 Le protocole de communication .................................................................................................................. 60

5.4.2.4 Meilleur effort et souffrance minimale........................................................................................................ 60

5.4.2.5 Objets du Meta niveau................................................................................................................................. 61

5.4.3 ROOM et UML for Real-Time......................................................................................................... 62 5.4.3.1 Objets Actifs de ROOM.............................................................................................................................. 62

5.4.3.2 Communication en ROOM ......................................................................................................................... 62

5.4.3.3 Modèles ROOM .......................................................................................................................................... 63

5.4.3.4 Modélisation du comportement................................................................................................................... 64

6 ARCHITECTURES REFLECHIES A META NIVEAUX .................................................................... 67

6.1 ARCHITECTURES REFLECHIES................................................................................................................... 67

6.1.1 La réification................................................................................................................................... 68 6.1.2 Connexion causale .......................................................................................................................... 69 6.1.3 Types de réflexion ........................................................................................................................... 69

6.2 ARCHITECTURES A META NIVEAUX........................................................................................................... 70

6.3 ARCHITECTURES A META-NIVEAUX ORIENTEES OBJET.............................................................................. 70

6.4 REFLEXION ET ORIENTATION OBJET......................................................................................................... 71

6.4.1 Modèles de réflexion ....................................................................................................................... 73 6.4.2 Protocoles à méta-objet (Meta Objects Protocols, MOP) .............................................................. 75

5

Page 6: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

6.5 EXEMPLES D'ARCHITECTURES REFLECHIES .............................................................................................. 75

6.5.1 Open C++....................................................................................................................................... 75 6.5.1.1 Systèmes distribués dans Open C++ : la Communauté d'Objets ................................................................. 77

6.5.2 ABCL/R ........................................................................................................................................... 78 6.5.3 ABCL/R2 ......................................................................................................................................... 80

7 ARCHITECTURE DE ARTO .................................................................................................................. 83

7.1 NIVEAU DE BASE : LES OBJETS .................................................................................................................. 83

7.2 NIVEAU META : LES META-OBJETS............................................................................................................ 83

7.3 RELATION OBJET - META-OBJET .............................................................................................................. 84

7.4 REIFICATION............................................................................................................................................. 84

7.5 REFLEXION ............................................................................................................................................... 85

7.6 MODELE D'EXECUTION ............................................................................................................................. 85

7.6.1 Les Objets de base........................................................................................................................... 86 7.6.2 Les méta-objets (MOs) .................................................................................................................... 86 7.6.3 L'objet Applicatif ............................................................................................................................. 87 7.6.4 Messages ......................................................................................................................................... 87 7.6.5 Les modes de l'application .............................................................................................................. 87

8 REALISATION.......................................................................................................................................... 89

8.1 NIVEAU DE LA GESTION ............................................................................................................................ 89

8.2 QOS GEREE PAR LES META-OBJETS .......................................................................................................... 89

8.2.1 Connaissances du MO..................................................................................................................... 90 8.2.1.1 Connaissances sur l'Objet............................................................................................................................ 90

8.2.1.2 Connaissance sur le contexte l’exécution .................................................................................................... 91

8.2.1.3 Informations propres ................................................................................................................................... 91

8.2.1.4 Informations collectives .............................................................................................................................. 91

8.3 CONTROLE DU COMPORTEMENT DE L'OBJET ............................................................................................. 91

8.3.1 Actions de gestion : sélection de message et de méthode................................................................ 92 8.4 CRITERE PRINCIPAL DE QOS ..................................................................................................................... 92

8.4.1 Contrainte temporelle ..................................................................................................................... 92 8.5 TRAITEMENT DES MESSAGES : DECISIONS A DEUX NIVEAUX..................................................................... 92

8.5.1 Messages ......................................................................................................................................... 93 8.5.1.1 Importance .................................................................................................................................................. 93

8.5.1.2 Paramètres ................................................................................................................................................... 94

8.5.1.3 Etapes d'un message .................................................................................................................................... 94

Traitement local ........................................................................................................................................... 96 8.5.2.1 Disponibilité des threads ............................................................................................................................. 97

8.5.2.2 Réservation de threads................................................................................................................................. 97

8.5.2.3 Ensemble des méthodes associé à un message ............................................................................................ 97

8.5.2.4 Traitement des messages urgents ................................................................................................................ 99

8.5.2.5 Validité du message .................................................................................................................................... 99

8.5.2.6 Compatibilité avec les méthodes en cours d’exécution ............................................................................... 99

8.5.2.7 Décision locale ............................................................................................................................................ 99

8.5.3 Traitement global .......................................................................................................................... 100

6

Page 7: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

8.5.3.1 Optimisation de la QoS ............................................................................................................................. 101

8.5.3.2 Une solution par la voie heuristique .......................................................................................................... 101

8.5.3.3 Planification des exécutions ...................................................................................................................... 102

8.5.3.4 Ordonnancement EDF............................................................................................................................... 102

8.5.3.5 Ordonnancement sur la base des WCETs.................................................................................................. 102

8.5.3.6 Ordonnancement avec la méthode la plus rapide ...................................................................................... 102

8.5.3.7 En cas de surcharge : privilégier les messages les plus importants ........................................................... 102

8.5.3.8 Exécution de la méthode la plus longe possible ........................................................................................ 103

8.5.3.9 Allocation de la CPU................................................................................................................................. 105

8.6 CONTRATS .............................................................................................................................................. 105

8.6.1 Accords implicites ......................................................................................................................... 105 8.6.2 Négociations explicites.................................................................................................................. 106

8.6.2.1 Réception de messages.............................................................................................................................. 106

8.6.2.2 Messages garantis...................................................................................................................................... 106

8.6.2.3 Demande d'information ............................................................................................................................. 106

8.7 TECHNIQUES POUR L'ADAPTABILITE ....................................................................................................... 106

8.7.1 Traitement selon le mode .............................................................................................................. 106 8.7.2 Polymorphisme.............................................................................................................................. 107 8.7.3 Exécutions spéciales...................................................................................................................... 107

8.7.3.1 Task pair.................................................................................................................................................... 107

8.7.3.2 Exécution de type N/M.............................................................................................................................. 108

8.7.4 Autres mécanismes ........................................................................................................................ 109 8.7.4.1 Délégation ................................................................................................................................................. 109

8.7.4.2 Actions avant et après................................................................................................................................ 110

8.7.4.3 Réservation de temps de CPU ................................................................................................................... 110

9 PROCESSUS DE DEVELOPPEMENT................................................................................................. 111

9.1 VISION GENERALE DU PROCESSUS DE DEVELOPPEMENT ......................................................................... 111

9.2 MODELISATION AVEC UML.................................................................................................................... 112

10 RESULTATS............................................................................................................................................ 115

10.1 EFFET DU NOMBRE DE THREADS ............................................................................................................. 116

10.2 RESERVATION DE THREAD ...................................................................................................................... 117

10.3 EFFET DE LA POLITIQUE LOCALE............................................................................................................ 117

10.4 POLITIQUE LOCALE ET IMPORTANCE DES MESSAGES ............................................................................. 118

10.5 POLYMORPHISME.................................................................................................................................... 119

10.6 POLYMORPHISME ET POLITIQUE LOCALE ................................................................................................ 120

10.7 POLYMORPHISME ET IMPORTANCE DES MESSAGES ................................................................................. 121

11 CONCLUSIONS....................................................................................................................................... 122

12 BIBLIOGRAPHIE................................................................................................................................... 127

13 COMMUNICATIONS : .......................................................................................................................... 130

7

Page 8: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

1 Introduction

La puissance et la complexité des systèmes informatiques ont augmenté notablement dans les

dernières années, que ce soit en termes de matériel ou de logiciel. Les systèmes d’exploitation

multiprocesseurs, les réseaux d’ordinateurs, les nouveaux outils informatiques, etc., ont modifié le

scénario dans lequel s'inscrivent les applications. En conséquence, les contextes dans lesquels les

applications s'exécutent sont devenus plus dynamiques, plus variables et moins prévisibles. Cette

situation importe peu si l'utilisateur se satisfait d'outils informatiques plus puissants et moins chers.

Cependant, elle complique fortement le développement et le fonctionnement des applications dans des

domaines tels que les systèmes temps réel et le multimédia, où les propriétés dynamiques des systèmes

jouent un rôle essentiel. Dans des applications de ce type, la connaissance et la prédiction du

comportement du système sont importantes sinon indispensables, comme dans le cas des systèmes

temps réel dur. De nombreux systèmes ne requièrent qu'une connaissance partielle du contexte

d'exécution pour que la construction d'applications soit faisable. Pour les autres, il est de plus en plus

difficile d'obtenir une connaissance suffisante par la voie analytique. D'un autre coté, les solutions

apportées par les approches heuristiques ne sont pas optimales et rendent inévitable l'incertitude sur le

comportement des applications pendant leur exécution. Il faut préciser que cette situation n'affecte pas

les aspects fonctionnels des applications, lesquels peuvent être assurés par des techniques et

mécanismes au niveau langage de programmation et système d'exploitation. Ces sont plutôt les aspects

non fonctionnels qui sont affectés par la dynamique des systèmes, comme par exemple le facteur

temps, la précision des réponses ou la périodicité des exécutions. Bien que les fonctionnalités des

applications soient assurées, leur qualité en termes non fonctionnels est difficile à préciser.

Ce travail propose une approche pour faire face à cette situation. D'une façon très générale,

l'idée principale est introduire des mécanismes d'adaptation dans les applications afin de flexibiliser

leur comportement et réduire ainsi les effets nocifs de variations imprévues dans leur contexte

d'exécution. En considérant que la prédiction totale des événements affectant le système n'est pas

possible, la solution n'est pas adaptée aux systèmes qui requièrent une certitude totale sur le

fonctionnement. Elle est plutôt orientée vers des systèmes qui tolèrent un certain degré de défaillance

sur des aspects non fonctionnels, et qui peuvent accepter des dégradations sporadiques de leurs

performances (en cas extrême, des arrêts et redémarrages) sans que leur intégrité soit affectée. C’est le

cas de systèmes tels que les systèmes multimédias, des systèmes de contrôle de train, d’ascenseur ou

d’une ligne de production qui peuvent s'arrêter sans risque vital (mais pas sans conséquences) à tout

moment. Ce n'est pas approprié, par exemple, pour un système de pilotage d’avion dont un arrêt de

fonctionnement en plein vol n'est pas envisageable!

Un domaine d’application particulier envisagé pour l’utilisation de cette approche est celui des

systèmes temps réel mous. Ils ont des besoins non fonctionnels liés aux temps et acceptent une

8

Page 9: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

certaine flexibilité sur le respect des contraintes. L'idée est que les systèmes soient conçus pour

respecter les contraintes dans des situations normales. Mais dans des conditionnes inusuelles, telles

que surcharge ou défaillance, toutes les contraintes ne sont pas garanties. Cependant, le système

continuera à fonctionner dans un mode dégradé et les services les plus importants ou critiques

continueront à être satisfaits. En utilisant l'approche proposée, il est attendu une augmentation de la

sûreté de fonctionnement des systèmes car ils continueront à fonctionner même sous des conditions

défavorables et non prévues.

Pour le traitement des aspects temporels, l'approche choisie est de les considérer comme

faisant partie des critères de qualité de service (QoS) des applications. De façon générale, les objets

clients demandent la réalisation de services et expriment leurs besoins non fonctionnels en spécifiant

des contraintes de différentes natures parmi lesquelles figurent les contraintes temporelles. Ces besoins

sont traduits par des demandes de QoS aux objets serveurs. Plusieurs critères de QoS peuvent

apparaître dans l'expression des besoins des clients comme la précision ou qualité d'un résultat, mais le

critère temporel reste le principal. Les objets serveurs reçoivent des requêtes pour des services qu'ils

exécutent avec la meilleure QoS possible en fonction des possibilités déterminées par leur contexte

d'exécution.

Comme il est peu utile de fixer les niveaux de QoS avant exécution, l'approche proposée se

base sur une prise de décision dynamique pour gérer la QoS. En considérant leur état particulier et leur

contexte d’exécution au moment d'exécuter les requêtes, les serveurs décident de la manière de

répondre en termes de QoS. Pour augmenter la flexibilité et les possibilités d’une réponse appropriée,

les objets sont munis de plusieurs opérations fonctionnellement équivalentes pour rendre des services.

Ils choisissent celle qui satisfait au mieux la QoS demandée en fonction des circonstances actuelles.

De cette façon, les objets adaptent leur comportement selon la QoS demandée et le contexte

d’exécution.

Finalement, l'approche proposée débouche sur la définition d'un modèle d'objet autonome

adaptable. Un facteur important pour la conception de ce modèle a été la préservation de qualités

logicielles reconnues, ce qui s'est traduit par le respect des principes de l’approche objet. Pour

augmenter les propriétés comme la réutilisation, la portabilité et l'extensibilité, les aspects orthogonaux

de l'application (traitement séquentiel, contrôle de concurrence, directives d'implémentation, etc.) sont

décrits dans un mode déclaratif et de façon aussi indépendante que possible. Une séparation des

aspects liés au problème utilisateur de tous les autres aspects est souhaitable. Pour cela l’architecture

conçue pour l’objet permet cette séparation des aspects propres au domaine du problème de ceux

appartenant au contexte d’exécution.

Ce document est organisé en 10 chapitres. Le chapitre 2 présente les problèmes et besoins à

résoudre. Dans le chapitre 3, la problématique de la Qualité de Service est présentée. Le chapitre 4

décrit les objets pour et en rapport avec le temps réel. Le chapitre 5 étudie les objets actifs, leur lien

avec les processus et les problèmes de concurrence. Le chapitre 6 est consacré aux architectures

9

Page 10: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

réfléchies. L’architecture proposée pour l’objet actif adaptable est décrite dans le chapitre 7. La mise

en œuvre, la description et la réalisation son décrits dans les chapitres 8 et 9. Finalement, le chapitre

10 présente les résultats obtenus.

10

Page 11: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

2 Problème à résoudre, besoins

En général, les applications informatiques sont construites à partir de spécifications

fonctionnelles et non fonctionnelles imposées par les utilisateurs pour lesquelles elles sont conçues.

Dans certains cas, la satisfaction des besoins non fonctionnels peut conditionner fortement la

satisfaction des utilisateurs. Par exemple, dans une application multimédia, lorsqu'un service

périodique de transmission d'images est demandé, la satisfaction de l'utilisateur ne dépend pas

seulement de l'arrivée des images au destinataire mais aussi de leur régularité. Dans certains domaines

d'application tels que les systèmes temps réel dur, dont les contraintes temporelles doivent être

absolument respectées, ces aspects non fonctionnels jouent un rôle critique.

Plusieurs types de contraintes non fonctionnelles sont possibles, comme l'utilisation d'un

langage de programmation ou d'un système d'exploitation particulier, la précision des résultats des

calculs, le délai de transmission des données, etc. Ce travail ne concerne que les contraintes liées à

l'exécution des services.

2.1 Traitement des aspects non fonctionnels

Une approche possible pour traiter ces aspects non fonctionnels est de les considérer comme

des facteurs qui déterminent la qualité de service (QoS) des applications. De cette façon, les

contraintes non fonctionnelles des services demandés sont traduites en des besoins de QoS à satisfaire

par les fournisseurs de services. Une relation à respecter pour que les applications soient toujours

satisfaisantes est que la qualité de service fournie ( QoSF ) soit plus grande ou égale à la qualité de

service demandée ( QoSD ):

QoSD ≤ QoSF (1)

Il faut noter que, en général, pour un service quelconque la QoSD et la QoSF peuvent varier

pendant l'exécution (Fig. 2.1).

QoS D

QoS F

temps Fig. 2.1 La QoS fournie est toujours plus grande que la QoS demandée.

11

Page 12: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Des fautes de QoS apparaissent lorsque la relation (1) n'est pas respectée (zones pour

lesquelles QoSF < QoSD dans la Fig. 2.2).

Un d

relation (1)

prévues car

fournie ne p

fini. Des an

pourra offri

être vérifiée

Mêm

sont pas pri

fournie soit

Q

QQ

Fig

QoSD

QoSF

temps

zones dontQoSF < QoSD

Fig. 2.2. La QoS n'est pas toujours satisfaite.

D

es problèmes difficile à résoudre par les développeurs est de savoir avant réalisation si la

sera ou non satisfaite. D'un côté la QoSD peut être connue pour toutes les situations

elle est spécifiée par les clients à partir de leurs besoins. Par contre, la QoS réellement

eut être qu'estimée, et elle ne sera connue qu'au moment où le service sera effectivement

alyses aident à déterminer si le niveau de QoS prévu (QoSP), c'est à dire que l'application

r pendant l'exécution, sera supérieur à la QoS demandée. La relation (2) ci-dessous doit

:

QoSD ≤ QoSP (2)

e si les analyses montrent que la relation (2) sera satisfaite, comme tous les facteurs ne

s en compte, il est toujours possible en théorie que pendant l'exécution la QoS réellement

inférieure à la QoS demandée. (voir Figure 2.3).

oS D

oS F

temps

oS P

.2.3. La QoS P est plus grande que la QoS D, mais la QoS F ne l'est pas toujours.

12

Page 13: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

La QoS souhaitée pour un service peut aussi être exprimée sous forme d'intervalle de valeurs.

Dans ce cas, la QoS fournie doit se trouver dans l'intervalle pour satisfaire la requête (Figure 2.4).

QoS Dmin

QoS F

QoS P

QoS Dmax

Fig. 2.4. La QoS D définie comme un intervalle de valeurs.

Quels que soient les besoins de QoS, l'idée principale est qu'ils soient toujours satisfaits.

2.2 Prédictibilité et contexte d'exécution

Il faut noter que l'analyse statique de l'exécution d'un système peut être très difficile voire

impossible à réaliser en raison de la complexité des éléments impliqués. Par exemple dans les

systèmes muti-processeurs, les conséquences des interruptions ou de l'activité du système

d'exploitation sur le comportement des applications sont difficiles à déterminer. Aussi difficile à

prédire est le comportement des applications dans les environnements distribués dont les temps de

communication et de latence ne sont pas toujours connus.

Toute application s'exécute dans un contexte particulier déterminé par les systèmes matériels

et logiciels avec lesquels elle interagit ou partage des ressources : le système d'exploitation et ses

services (gestion des processus, gestion de la mémoire, etc.), les processeurs et le matériel en général,

les services de communication, les autres applications en exécution, etc. C'est dans ce contexte que les

applications trouvent les ressources dont elles ont besoin pour leur exécution. Si les ressources

souhaitées sont disponibles lorsque l'application les requiert, les services auront une qualité

satisfaisante. Dans le cas contraire, la qualité maximale attendue risque de ne pas être fournie. En

conséquence, le contexte d'exécution est un facteur déterminant de la qualité de service que les

applications fournissent. Du point de vue du développeur, un contexte d'exécution optimal serait un

contexte analysable a priori, avec des comportements prédictibles et mesurables, et qui pourrait

toujours fournir les ressources requises par les applications. Bien que les caractéristiques de ressources

matérielles telles que la taille de la mémoire vive ou la vitesse du processeur soient connues, les

quantités réellement disponibles au moment où les applications les demandent ne sont pas toujours

prédictibles. En conséquence les relations (1) et (2) sont difficiles à assurer.

13

Page 14: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

2.3 Le problème à résoudre

Le problème principal à résoudre dans ce travail est de concevoir un modèle objet permettant

de gérer la QoS afin de satisfaire les besoins non fonctionnels des services face à des variations

dynamiques et imprévisibles du contexte d'exécution des applications. En général, deux approches

sont utilisées pour la gestion de la QoS. D'un côté l'approche statique dans laquelle l'application est

construite pour assurer a priori la satisfaction des besoins QoS, et d'un autre côté l'approche

dynamique dans laquelle les niveaux de QoS à fournir sont décidés pendant l’exécution. Dans ce

dernier cas la satisfaction de la QoS demandée n'est pas garantie.

2.3.1 Approche Statique

Dans l’approche statique, toutes les valeurs et actions affectant la QoS sont décidées dans la

phase de développement et le code les incorpore de manière implicite. Pour déterminer les niveaux de

QoS avant exécution, l'approche statique se base sur la prédiction du comportement des supports

matériel et logiciel sur lesquels les applications seront exécutées et nécessite la connaissance totale des

événements affectant le système et le contexte d'exécution. Ces informations et celles des besoins de

QoS sont prises en compte par les développeurs pour construire des applications capables de fournir la

QoS souhaitée. Des analyses exhaustives détermineront si les niveaux de QoS souhaités par les clients

seront ou non satisfait.

Les applications dérivées de cette approche sont fortement déterminées par les résultats des

analyses, et tous les niveaux de QoS sont définis et fixés dans le programme. Une fois que

l'application est lancée, aucune considération additionnelle sur la QoS n'est faite. Si la conception et

construction de l'application sont correctes, les besoins de QoS seront satisfaits tant que le contexte

d'exécution agit comme prévu.

Un des principaux désavantages de cette approche est que chaque modification de l'application

ou du contexte d'exécution requiert de nouvelles analyses concernant tout le processus de

développement. Comme les aspects QoS sont inclus dans le code (d'une façon non explicite), toute

modification doit être soigneusement étudiée.

Cependant il faut noter que cette approche est le choix obligatoire lorsque le système

n’accepte aucune défaillance et son principal avantage est la prédictibilité de la solution qu'elle

produit.

Il est possible de rendre le contexte d'exécution prédictible. Il faut pour cela avoir des

systèmes matériels et informatiques dont la disponibilité des ressources et l'affectation est totalement

prédictible. C'est le cas, par exemple, des systèmes faits sur mesure dont tous les éléments sont conçus

et construits pour satisfaire les besoins en QoS des applications. Evidemment, le coût de telles

solutions est important.

14

Page 15: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

2.3.2 Approche Dynamique

Dans l'approche dynamique les décisions relatives à la gestion de la QoS sont prises pendant

l'exécution. Comme la QoS à fournir n'est pas connue auparavant, elle n'est pas figée dans le

programme et elle est décidée dynamiquement. Les applications doivent être munies de mécanismes

pour déterminer la QoS à fournir en considérant les besoins des clients, les capacités de service, et le

contexte d'exécution.

Un avantage important de cette approche est qu'elle est moins dépendante d'une connaissance

détaillée du système sur lequel l'application sera exécutée. S'il faut des analyses, elles ne sont pas aussi

exigeantes que dans l'approche statique. Un autre avantage est que les applications ne sont pas

construites pour une situation particulière et elles peuvent être adaptées facilement à de nouvelles

situations.

Cette approche est appropriée dans les cas où la prédiction des événements et du

comportement du système n’est pas possible. Elle est particulièrement appropriée pour les applications

présentant des degrés de liberté dans la façon de rendre un service et une tolérance vis à vis de la

qualité de service effectivement obtenue. Les effets négatifs des situations imprévues peuvent être

surmontés ou au moins réduits par une gestion adéquate de la QoS.

Finalement, il faut considérer la possibilité d'améliorer la QoS de base en augmentant les

ressources matérielles (une plus grande disponibilité de cycles de processeur, de bande passante de

communication, de mémoire vive, etc.). Cette possibilité peut être guidée par l'expérimentation, la

simulation ou par des analyses statiques. Cependant il restera toujours l'incertitude sur les effets des

Aspect Statique Dynamique Connaissance du

système et du contexte

d'exécution

totale

basique

Contenu du code de l'application

Code pour la satisfaction fonctionnelle (aspects QoS implicites)

Code pour la satisfaction fonctionnelle +

code pour le traitement de la QoS Satisfaction de la QoS à l'exécution

L'exécution de services satisfait totalement la QoS

(garanti par des analyses)

Décisions en ligne pour : a) la satisfaction de la QoS minimale, et b)

pour fournir la meilleure QoS en fonction du contexte d'exécution

Portabilité, réutilisation

Très limitée. Chaque contexte demande des nouvelles analyses et conceptions.

Potentiellement haute. Des changements de contexte demandent des analyses pour

assurer la QoS minimale seulement.

Séparation des aspects

Aspects QoS non visibles. Ils sont implicites dans le code.

Séparation claire entre les aspects fonctionnels et de QoS.

Analyse temporelle

Exhaustive, toutes les situations doivent être analysées.

Basique, seulement les situations critiques doivent être assurées.

Table 2.1. Comparaison entre les approches Statique et Dynamique.

15

Page 16: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

aléas qui peuvent affecter négativement la QoS pendant l'exécution.

La Table 2.1 montre une comparaison entre les approches statique et dynamique.

2.4 Domaine d'application envisagé

Le domaine d'application envisagé dans ce travail est celui des systèmes temps réel

comportant des activités critiques1 et non critiques. C'est un domaine mixte entre le temps réel "mou"

et "dur". Du côté dur, les activités critiques devront garantir la satisfaction de leur QoS. Tandis que du

côté mou, la flexibilité dont on dispose pour respecter les contraintes des activités non critiques

permettra de décider de la QoS à fournir. Elle sera satisfaite au mieux dans la mesure des possibilités

au moment de l'exécution des services.

L'aspect temporel exprimé dans les requêtes des clients sera traité comme des besoins de QoS.

C'est le critère le plus important et il guidera la prise de décision pendant l'exécution.

2.5 Besoins

En considérant le problème à résoudre, le domaine d'application envisagé et le contexte

informatique de ce travail, il est souhaitable que la solution ait certaines propriétés. Les besoins pour la

solution sont les suivants :

• Premièrement pour la gestion de la QoS il faut une approche dynamique car c'est la seule

approche possible lorsque les contextes d'exécution sont imprédictibles. De plus, elle permet

une dégradation contrôlée de la QoS dans les situations difficiles. La connaissance complète

du comportement du contexte requise par l'analyse statique est pratiquement impossible à

obtenir dans de nombreux systèmes. Comme les niveaux de QoS à fournir sont figés dans le

code l'analyse statique ne peut faire face à des situations imprévues ou tirer parti des

possibilités qui se présentent pendant l'exécution pour fournir la meilleure QoS possible.

• Séparation des traitements. Il est souhaitable que le traitement des aspects fonctionnels du

problème de l'utilisateur soit séparé du traitement des aspects non fonctionnels. Les

mécanismes introduits pour la gestion de la QoS ne doivent pas interférer ni se mélanger

avec ceux du problème de l'utilisateur. Ainsi la modification d'aspects non fonctionnels

n'interfèrera pas avec les aspects fonctionnels.

• Etant donné le domaine d'application envisagé, l'aspect principal à considérer parmi les

contraintes non fonctionnelles est l'aspect temporel des requêtes. Le critère principal de QoS

est la réduction des fautes temporelles. Cependant, d'autres critères sont aussi prévus, tels

que l'importance des requêtes et la précision des réponses. Tout autre critère de QoS doit

pouvoir être ajouté au modèle.

1 Activités critiques: activités dont les contraintes doivent être absolument respectées.

16

Page 17: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

• Réactivité. Les requêtes pour des services critiques doivent être traitées en priorité par les

serveurs. Ils doivent pouvoir exécuter un service critique arrivant à n'importe quel moment.

• Les qualités logicielles de l'approche objet telles que l'encapsulation ou l'indépendance des

objets doivent être respectées. Pour préserver l'indépendance des objets la messagerie doit

être transparente et indépendante de leur localisation. C'est particulièrement nécessaire pour

les applications distribuées dont la localisation des destinataires est généralement inconnue.

• Pour des raisons de portabilité il est souhaitable que les mécanismes de gestion de QoS

soient indépendants du contexte d'exécution.

17

Page 18: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

3 QoS

Ce chapitre présente les concepts et la terminologie de la QoS qui serviront de cadre

conceptuel pour le traitement de la QoS dans le modèle envisagé. Bien que le sujet ait été traité depuis

longtemps déjà, les systèmes distribués, le multimédia et les réseaux de communication, pour ne citer

qu'eux, ont créé de nouveaux contextes pour l’exécution des applications. Le fait que la QoS soit un

aspect important dans ce nouveau contexte a motivé de nombreux groupes de recherche à concevoir de

nouvelles approches. En particulier des organisations internationales impliquées dans la définition de

modèles ou cadres de référence (standard) ont fait des propositions générales intéressantes.

3.1 Introduction

L'intérêt pour la QoS a engendré une grande activité de recherche ces dernières années.

Plusieurs approches et architectures ont été proposées pour résoudre les problèmes liés à la QoS. Elles

se centrent généralement sur une des couches logicielles intervenant dans la réalisation de services

[Campbell96]. Cependant depuis quelques années des organisations internationales travaillent à

l'élaboration de standards pour faciliter le traitement de la QoS. C'est le cas du travail conjoint de

ISO/IEC et ITU2 pour la proposition d'un modèle de référence pour systèmes distribués ouverts

[ISO93]. Dans le document décrivant les "fondations", la QoS est définie brièvement comme "un

ensemble de besoins de qualité dans le comportement collectif d'un ou plusieurs objets" [ISO95].

Ultérieurement le groupe démarrait l’élaboration d’un cadre général comportant des concepts,

terminologies et définitions de QoS [ISO97] afin de fournir une base commune orientant le

développement et l'amélioration de standards qui spécifient ou référencent la QoS. Bien que l'objectif

initial ait été de clarifier la description de la QoS pour le modèle de l'interconnexion des systèmes

ouverts OSI [ISO94], le cadre a été conçu sans lien avec une architecture particulière, permettant ainsi

son application dans les autres domaines des technologies de l'information.

3.2 Notion de QoS

En termes généraux la QoS est une propriété relative et arbitraire associée à la réalisation d'un

service. C'est à celui qui demande le service, le client, de définir les aspects qui déterminent la qualité

du service. C'est au fournisseur du service, généralement appelé le serveur, de trouver les moyens pour

satisfaire les besoins de QoS des clients. Bien que la QoS ait plusieurs significations, généralement

elle caractérise les aspects non fonctionnels de la réalisation de services. La sécurité, la précision, la

régularité, la ponctualité, la fiabilité, la disponibilité, etc. sont des exemples de propriétés qui peuvent

faire partie de la qualité des services.

2 ISO : International Organisation for Standardization; IEC : International Electrotechnical Commission; ITU : International Telecommunication Union; ITU-T : ITU Telecommunication Standardization Sector

18

Page 19: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

La figure 3.1 illustre une relation seulement fonctionnelle entre client et serveur. Les besoins

du client sont satisfaits par l'exécution des services demandés (requête) au serveur.

Dans la figure 3.2 les besoins du client incluent les besoins de QoS. La satisfaction du client

ne dépend pas seulement de la réalisation du service mais aussi de la façon dont il est rendu. Dans une

telle situation le serveur doit prendre en compte les besoins de QoS du client. Par exemple, si le client

demande un service dans un délai quelconque, pour que le besoin de QoS soit satisfait le serveur doit

fournir le service dans le délai souhaité.

client: serveur:

requête

réponse

besoins fonctionnels

exécution de services

Figure 3.1. Relation client serveur limitée à l'aspect fonctionnel.

client: serveur:

requête

réponse + QoS

besoins fonctionnels et de QoS

exécution de serviceavec prise en comptedes besoins QoS

Figure 3.2. Besoins fonctionnels et de QoS dans la relation client serveur.

3.3 Propriétés de la QoS

Même si la QoS est une notion relative et arbitraire, elle a des propriétés importantes à savoir :

• Elle est due à ce que les clients s'intéressent aux aspects non fonctionnels associés à la

fourniture de services.

• Elle peut être garantie dans certaines périodes du cycle de vie d'un système (par exemple

pendant charge normale).

19

Page 20: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

• Elle est négociable. La QoS associée à certaines fonctions d'un système est sujette à

modifications.

• Elle peut être composée. Les composants d'un système apportent les propriétés de QoS qui

concourent à produire la QoS du système auquel ils appartiennent.

3.4 Concepts et terminologie

Les concepts et définitions utilisés sont résumés ci dessous. La plupart d'entre eux sont adaptés

des documents sur la QoS de ISO/IEC et ITU.

3.4.1 Le service dans la QoS.

Dans le cadre de la QoS, le terme service doit être considéré dans un sens très général. Un

service a pour origine la requête qu'un client fait à un serveur pour demander la réalisation d'une

action. La réalisation de l'action fournit le service. Quelques exemples de services : la réservation de

ressources, l'exécution d'un code, une recherche d'information, la communication de données.

3.4.2 Caractéristiques de la QoS.

"Les caractéristiques de QoS représentent un aspect de la QoS d'un système, service ou

ressource, qui peut être quantifié et qui est défini indépendamment de la façon dont il est représenté ou

contrôlé" [ISO97]. Les caractéristiques de QoS servent à modéliser le comportement réel des aspects

qu'elles caractérisent. Exemples de caractéristiques : le délai de la transmission de données, la

précision d'une réponse, la confidentialité d'un service, la disponibilité d'une ressource.

Définition des caractéristiques. Toute caractéristique doit être définie avec précision afin de la

quantifier sans ambiguïté. Par exemple, la caractéristique délai peut être définie comme :

délai : "le temps écoulé (T2 - T1) entre deux événements E1 et E2, qui arrivent respectivement aux

temps T1 et T2 ".

Quantification des caractéristiques. La quantification des caractéristiques aussi doit être bien précisée.

Par exemple, pour le délai défini ci-dessus, la quantification peut être définie comme :

"une unité de temps quelconque telle que minute, seconde, milliseconde, etc., faisant référence à

une origine de temps connue"

Il faut noter que les valeurs des caractéristiques de QoS ne sont pas restreintes aux nombres.

Elles peuvent aussi être des vecteurs, matrices, noms d'états, etc.

20

Page 21: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

3.4.3 Besoins de QoS et paramètres de QoS.

Les besoins des clients doivent être exprimés en besoins de QoS. Ils servent de guide aux

fonctions de gestion de la QoS, et peuvent affecter une ou plusieurs instances d'interaction entre client

et serveur. Les besoins de QoS peuvent être liés à une ou plusieurs caractéristiques de QoS. Par

exemple, lorsqu'un client demande un service avec un délai inférieur à 2 secondes, et une précision

minimale de 12 bits, le besoin de QoS est lié à deux caractéristiques : délai et précision.

Communication des besoins de QoS.

Les besoins de QoS connus par le serveur peuvent être des paramètres transmis dans les

requêtes ou être issus du contexte de QoS. Lorsqu'un serveur a besoin du service d'un autre serveur

pour réaliser un service, il doit lui transmettre les besoins de QoS. L'enchaînement des requêtes peut

concerner plusieurs niveaux nécessitant chacun des transformations de besoins de QoS. Un exemple

de cette situation est la négociation de QoS qui se déroule à travers les niveaux du modèle OSI pour

établir une connexion entre nœuds [ISO94]. A chaque niveau les besoins de QoS sont traduits en

besoins de QoS adaptés au niveau suivant.

Les paramètres de QoS sont des valeurs qui transmettent des besoins de QoS et qui sont

passés de client à serveur. Plusieurs types de paramètres sont possibles : une valeur désirée (précision

de 12 bits), un niveau maximal ou minimal (délai maximal de 2 secondes), un seuil (attente maximum

de 10 secondes), un intervalle, une liste de valeurs, etc.

Les besoins de QoS peuvent aussi être exprimés dans un contexte de QoS. Cela signifie que le

serveur dispose des informations concernant la QoS à fournir. Par exemple, elles peuvent être inclues

comme des règles de traitement ou dérivées des modes opératoires du système. L'avantage dans ce cas

est la réduction des interactions entre clients et serveurs puisque les paramètres ne sont pas échangés.

3.4.4 Contrats de QoS

Les contrats de QoS sont des accords sur la QoS établis entre client et serveur. Ils définissent

entre autres, les niveaux de QoS à fournir, les actions à effectuer en cas d'événement particulier, les

consignes pour le traitement des requêtes, la validité ou durée des accords, les responsabilités du client

et du serveur, la façon de modifier ou suspendre un accord, etc. Pendant la validité des accords le

client et le serveur doivent faire tous leurs efforts pour les respecter.

3.4.5 Gestion de QoS et Politiques de gestion de QoS

La Gestion de QoS est un terme général qui désigne l'ensemble des activités réalisées par un

système afin de surveiller, contrôler et administrer la QoS. Les règles qui déterminent les

caractéristiques et fonctions de QoS à utiliser pour un service définissent une politique de QoS. Les

activités de Gestion de QoS sont guidées par les besoins de QoS, le contexte du système et les

21

Page 22: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

politiques de QoS en vigueur pour les activités. La gestion de la QoS est réalisée conformément aux

politiques de QoS du système.

3.4.6 Fonctions de Gestion de QoS et Mécanismes de QoS.

Les fonctions de gestion de QoS sont toutes les fonctions conçues pour aider à la satisfaction

des besoins de QoS. Normalement elles sont composées d'un ou plusieurs mécanismes de QoS réalisés

par une ou plusieurs entités. Parmi les activités supportées par les fonctions de gestion on trouve :

• L'établissement de la QoS pour un ensemble de caractéristiques de QoS

• La surveillance des valeurs de QoS fournies

• Le maintien de la QoS fournie le plus proche possible de la QoS attendue.

• Le contrôle des cibles de QoS

• Les requêtes d’informations sur la QoS

• Les alertes résultant d'événements relatifs à la QoS

Les mécanismes de QoS sont des actions bien précises qui servent de support aux fonctions de

gestion. C'est à travers eux que la gestion de la QoS se concrétise.

3.4.7 Catégories de QoS

Les besoins et caractéristiques de QoS peuvent être groupés en catégories de QoS lorsqu'ils

ont des similitudes. Ces catégories représentent un ensemble particulier de besoins de QoS imposés

par les particularités des applications. Par exemple, dans un système sensible au temps, les

caractéristiques de type temporel (date d’échéance, délai, périodicité, etc.) constitueront une catégorie.

Plusieurs catégories de QoS peuvent coexister dans un système. Par exemple lorsque les aspects

sécurité, temps, fiabilité font partie des besoins de QoS.

3.5 Gestion de la QoS

La QoS dépend de facteurs matériels et logiciels affectant l'exécution des services. Comme

elle ne peut pas être modifiée directement, c'est par des actions sur un ou plusieurs de ces facteurs

qu'elle peut être gérée, parmi lesquels :

• Les propriétés et quantités de ressources affectées au fournisseur de services

• Le comportement des couches informatiques de base qui supportent l'exécution (système

d'exploitation, système de communication, etc.)

• La charge du système

• Le comportement du serveur vis à vis du traitement des requêtes.

22

Page 23: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Les actions de gestion modifient le mode opératoire du système afin d'obtenir la QoS

souhaitée. L'affectation de ressources, le contrôle d'admission de nouveaux clients, la sélection des

requêtes à exécuter, la sélection d'une méthode pour le service à fournir, etc. sont des exemples

d’actions par lesquelles la QoS peut être gérée.

La gestion est présente dans tout le cycle de vie de la réalisation d'un service. Elle agit

différemment selon l'étape dans laquelle elle s'effectue. En général trois étapes sont identifiées :

• Avant de démarrer le service. Des activités de prédiction sont requises pour prévoir les

mécanismes les plus appropriés pour la gestion de QoS.

• Au moment de démarrer le service. Lorsque des négociations entre client et serveur sont

nécessaires pour établir les accords relatifs à la QoS.

• Pendant la réalisation du service. Pour contrôler le respect des accords de QoS face à des

changements de conditions d'exécution. Tant les besoins de QoS des clients que l'offre de

QoS des serveurs ou le contexte d'exécution peuvent changer sans préavis.

3.5.1 Gestion Intrusive et non-Intrusive

La gestion est dite non-intrusive lorsque l'application ne participe pas à la gestion de la QoS.

Les fonctions de gestion se situent en dehors l'application, dans le support logiciel / matériel

d'exécution, par exemple dans le système d'exploitation. Un avantage de cette approche est que

l'application n'est pas modifiée pour des raisons de QoS, et la séparation entre la solution fonctionnelle

et les traitements liés à la QoS est claire. Un autre avantage est que les mécanismes de gestion peuvent

traiter les besoins QoS de plusieurs applications, ce qui est particulièrement nécessaire pour la bonne

utilisation des ressources partagées.

La gestion de type intrusive est celle dans laquelle l'application participe à la gestion de la

QoS. L'avantage principal est une plus grande flexibilité de gestion permettant des fonctions et

politiques de gestion spécifiques à chaque application. Cependant la mise en œuvre est plus lourde et

un problème important intervient si les applications décident indépendamment de l'utilisation de

ressources partagées. Il est nécessaire d'avoir un système de gestion centralisé pour décider de

l'utilisation des ressources partagées en considérant les décisions sur la QoS prises par chaque

application. Dans cette approche la QoS est gérée par l'environnement et l'application. La figure 3.3

suivante illustre ces deux types de gestion.

23

Page 24: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Il f

façon optim

et appropri

solution acc

3.5.2 Co

Les

logicielles

plupart des

Grosso mo

QoS peut s

le Système

Il f

couche. El

plusieurs sy

logiciel inte

Un

(Real Time

interactifs.

couchehaute

intermédia

basse

Support d'exécution(logiciel et matériel)

GestionQoS

Apl 1 Apl 2

Support d'exécution(logiciel et matériel)

GestionQoS

Apl 1 Apl 2G. QoS G. QoS

(a) (b) Figure 3.3. Gestion type non-intrusive (a), et intrusive (b).

aut noter que seule l’application connaît ses besoins et elle est la seule capable d’utiliser de

ale les ressources qui lui sont affectées. La possibilité de gérer la QoS de façon spécifique

ée aux besoins particuliers de chaque application fait que la gestion intrusive est la seule

eptable pour le domaine d'application envisagé.

uches de gestion de la QoS

mécanismes de gestion de la QoS peuvent agir à différents niveaux parmi les couches

situées entre les ressources matérielles (couche basse) et l'application (couche haute). La

travaux de recherche proposent des solutions de gestion centrées sur un endroit précis.

do, et d'une façon arbitraire, on peut identifier trois couches dans lesquelles la gestion de la

e dérouler : haute, intermédiaire et basse. La table 3.2 montrer le rapport des couches avec

d’Exploitation et des exemples de types de gestion pour chacune d’elles.

aut cependant noter que la gestion de la QoS n'est pas nécessairement restreinte à une seule

le peut agir en plusieurs points parmi des couches du système. Il est aussi possible que

stèmes de gestion co-existent. Par exemple, lorsque la gestion de la QoS est réalisée par un

rmédiaire en même temps que la gestion menée par le système d'exploitation.

exemple de gestion en couche basse est le protocole de transport de bout en bout RTP

Transport Protocol) [RTP96] pour des applications temps réel, telles que l'audio et la vidéo

RTP opère au-dessus des services UDP (User Datagram Protocol du model TCP/IP) et ne

Endroit Type de gestion Au-dessus du Système d'Exploitation. Au niveau de l’application, au niveau du

gestionnaire de QoS, etc. ire Au niveau du Système d'Exploitation. Gestion de processus (threads), CPU,

mémoire, timers, etc. Au-dessous du Système d'Exploitation. Gestion de bande passante, de

communication de données, du stockage, de l’affichage, des ports, etc.

Figure 3.2. Couches pour la gestion de la QoS.

24

Page 25: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

s'intéresse pas à la réservation de ressources ni ne garantit la QoS pour les services temps réel. Le

protocole qui utilise RTP permet un contrôle minimal sur l'envoi et la qualité des données. Il permet

entre autres de mesurer la QoS de la communication de données, de transporter les informations des

participants d'une session et de contrôler l'utilisation des ressources réseau.

Dans la couche intermédiaire c'est le système d'exploitation qui traditionnellement gère

l'utilisation des ressources et par conséquent la QoS. Mais les versions commerciales courantes n’ont

pas de mécanismes très élaborés spécifiques pour la gestion de la QoS. Du côté de la recherche, de

nombreux groupes travaillent à la conception de systèmes d'exploitation avec des mécanismes

spécifiques pour gérer la QoS. Certains d'entre eux s'orientent vers les applications multimédia

[Leslie97], d'autres vers la communications de données [Miller96], et d'autres encore vers des

applications temps réel [Blair94].

Une approche pour la gestion dans la couche haute parmi les plus explorées par les groupes de

recherche est celle où une couche logicielle intermédiaire (middleware) se charge de la gestion de la

QoS. Elle reçoit les demandes de QoS provenant des applications et prend des décisions qui sont

ensuite traduites par des requêtes au système d'exploitation. Un exemple de cette approche est le

Dynamic QoS Manager (DQM) [Brand98]. Dans DQM chaque application doit déclarer ses modes

opératoires et le bénéfice global qu'ils apportent au système en fonction des ressources utilisées. Avec

cette information, DQM détermine l’affectation des ressources et le mode dans lequel chaque

application doit opérer afin d'optimiser le bénéfice global. Le modèle bénéfice versus ressources

utilisé par DQM est une version dérivée des "QoS Levels" [Tokuda93].

Une autre idée pour la gestion à haut niveau est d’inclure des mécanismes de gestion de QoS

dans chaque application pour qu’elles-mêmes puissent gérer leur QoS de manière indépendante.

L'avantage principal est la possibilité que chacune ait ses propres critères de décision les plus

appropriés à ses besoins.. Au niveau des applications la gestion peut être de type centralisé ou

distribué dans les composants. Cependant il ne faut pas oublier que l'utilisation optimale de ressources

partagées demande une politique centralisée et une instance de gestion globale à toutes les applications

doit être mise en œuvre.

Ce dernier cas de gestion offre une plus grande flexibilité en raison de sa granularité plus fine.

Elle est aussi la seule solution praticable si les composants de l’application ont des besoins particuliers

de gestion de la QoS.

3.5.3 Phases

Les activités nécessaires pour la gestion de la QoS sont effectuées dans différents instants du

cycle de vie d’un service. En général les phases ou états par lesquels passe la gestion sont la

prédiction, l'établissement et la phase opératoire.

25

Page 26: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Phase de Prédiction

Le but de la phase de prédiction est l’acquisition de connaissances afin de déterminer les

conditions et possibilités du système concernant la QoS. Des informations sur le matériel, telles que la

vitesse du processeur, la quantité de mémoire vive disponible ou les durées des services de base

(système d'exploitation et communication), etc. doivent être connues. Si les valeurs disponibles sont

approximatives, elles pourront être précisées pendant l’exécution.

Phase d'établissement

Dans cette phase, un accord est trouvé entre client et serveur pour le niveau de QoS qui sera

fourni. Cet accord est le résultat de négociations mais il peut être re-négocié si les conditions

d'exécution changent. Par exemple lorsqu'un nouveau client ou serveur entre en scène.

• Types d’accords

Les accords dépendent principalement des besoins du client, des caractéristiques de QoS

concernées, des possibilités de service des serveurs et des politiques de QoS en vigueur. Une

sémantique précise est nécessaire pour que les parties puissent interpréter d’une façon correcte les

informations qu’elles se communiquent.

• Niveau des accords

Différents niveaux d'accords sont possibles en fonction du compromis sur la garantie de la

QoS. Trois niveaux sont proposés dans [ISO97] :

• Meilleur effort (best effort) : c’est le niveau d’accord le plus faible. Les serveurs font au

mieux pour satisfaire les besoins de QoS. Aucune garantie n'est donnée sur la QoS fournie.

• Obligatoire (compulsory) : dans ce niveau d’accord le service est suspendu si le serveur ne

peut pas fournir la QoS accordée. La QoS accordée n'est pas assurée.

• Garantie (guaranteed) : c’est le niveau d’accord le plus haut et la satisfaction de la QoS

demandée est assurée. Un service n’est pas accepté si le niveau de QoS ne peut être

maintenu.

Dans la phase d'établissement sont aussi définies les actions à réaliser lorsque le niveau de

QoS atteint une certaine valeur préétablie. Par exemple envoyer un signal au client ou au serveur,

enregistrer la valeur pour l'historique, etc.

Phase opératoire

L’objectif principal de la phase opératoire est de maintenir la QoS accordée pendant la phase

d’établissement. Les principales activités de cette phase sont :

26

Page 27: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

• L'observation de la QoS. Il est nécessaire de connaître la QoS fournie pour savoir si les

accords en vigueur sont respectés ou non.

• Le maintien de la QoS. Des actions correctives sont nécessaires afin de maintenir le niveau

de QoS au niveau accordé.

• Demande d'informations sur la QoS entre clients et serveurs.

• Contrôle du client. S'assurer que le client n'utilise pas plus de ressources que celles qui lui

ont été affectées.

Mécanismes de correction

Un aspect important pour le maintien de la QoS dans la phase opératoire est la façon dont

s'effectuent les actions correctives. Deux approches sont présentées dans [ISO97] :

Correction interne. Elle est réalisée à l'intérieur du serveur par une boucle de rétro contrôle qui, à partir

des mesures de la performance interne, ajuste la QoS fournie en modifiant les paramètres de

fonctionnement. Les opérations à réaliser sont :

a) calculer la performance du système (PS) nécessaire pour fournir la QoS souhaitée

b) mesurer la performance actuelle

c) évaluer la différence entre la performance nécessaire et la performance mesurée

d) faire les corrections appropriées pour arriver à la performance nécessaire.

La valeur des paramètres affectant la QoS doit être fixée de façon à produire la QoS souhaitée.

Un processus traduit l'expression des besoins de QoS en valeurs pour les paramètres du système (type

et quantité de ressources, mode opératoire, bande passante, politique de traitement des requêtes, etc.).

Une fois que les valeurs sont calculées, elles sont comparées aux valeurs actuelles issues de

l'observation du système. La différence induit des actions correctives qui agiront sur la performance et

par conséquent sur la QoS (voir Figure 3.4).

27

Page 28: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Correction externe. Les

la performance requise e

calculée à partir des diff

a) mesurer la va

b) traduire en va

c) calculer la dif

d) agir sur les pa

A partir des me

est calculée. La différe

correction sur des param

telle que la QoS fournie

dans la figure Fig. 3.5.

QoSfournie

QoSsouhaitée

QoS

PS

PerformanceActuelle

PerformanceNécessaire

Actions deCorrection

Fourniseur de services

Fig. 3.4. Mécanisme de correction interne

mécanismes de contrôle sont situés à l'extérieur du serveur. La différence entre

t la performance actuelle, qui sert à déterminer les actions correctives, est

érences de QoS. Les opérations sont :

leur des performances relatives au service

leurs de QoS

férence entre QoS souhaitée et mesurée

ramètres du serveur liés à la QoS

sures de la performance actuelle du système, la valeur de QoS correspondante

nce entre QoS souhaitée et QoS calculée est ensuite traduite en actions de

ètres du système. Ces corrections ramèneront le système à une performance

sera égale à la souhaitée. Le mode d'action de la correction externe est illustré

28

Page 29: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

QoSfournie

QoSsouhaitée

QoS

PS

PerformanceActuelle

Actions deCorrection

QoS

PS

Fourniseur de services

QoS

QoS fournie(calculée)

Fig. 3.5. Mécanismes de correction externe.

Pour illustrer la manière dont agissent les mécanismes de correction interne et externe,

prenons l'exemple suivant. Supposons que le délai d'un service dépend de la quantité de CPU affectée

au système par période (1, 2 ou 3 milisecondes) et de la période elle-même, comme le montrent les

courbes de la figure 3.6. (voir aussi figure 3.7)

2

4

65

Figure 3 .

Lorsque le client so

48 ms maximum, pour 2 ms

48 ms

2 ms

Figure 3.7. Périod

période [ms]

délai

20 40 60

00

00

00 00

48

2 ms/p3 ms/p

1 ms/p

.6. Délai en fonction de l'utilisation de CPU par période

uhaite le service dans un délai maximal de 400 ms, la période doit être de

de temps d’utilisation de CPU par période (voir figure 3.7).

48 ms 48 ms 48 ms 48 msTemps de CPU

e et utilisation de la CPU pour un délai de service de 400 ms.

29

Page 30: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Correction interne. Le délai maximal de 400 ms est traduit en une valeur de 48 ms pour la

période (figure 3.6). Cette valeur est comparée avec la période actuelle mesurée. Supposons que cette

période soit de 60 ms, alors il faudra une réduction de 12 ms à la période actuelle. Le processus de

correction interne est illustré dans la figure 3.8.

période ≤ 48 ms

période actuelle = 60 ms

période = - 12 ms

QoS = délai ≤ 400 ms

QoS

p

Figure 3.8. Valeurs impliquées dans la correction interne.

Correction externe. La période actuelle mesurée de 60 ms correspond à un délai de 500 ms

(QoS fournie). La comparaison de cette valeur avec le délai maximal souhaité de 400 ms (QoS

souhaitée) montre une différence de 100 ms, à réduire. En appliquant cette valeur à la courbe de

performance versus QoS (inverse de la courbe de la figure 3.6 ) la valeur dont il faut réduire la période

est de 12 ms. Le processus de correction externe est illustré dans la figure 3.9.

période = - 12 ms

période actuelle = 60 ms

QoS = - 100 msQoS = délai ≤ 400 ms

QoS

p

QoS

p

QoS = délai = 500 ms

Figure 3.9. Valeurs impliquées dans la correction externe.

Note : le délai souhaité de 400 ms peut aussi être atteint en conservant la période actuelle de 60 ms et

en passant le temps d’exécution par période de 2 ms à 3 ms (voir figure 3.6).

Dans le cas de la correction externe, l'entité chargée de la correction doit connaître les rapports

entre la QoS fournie et l'utilisation des ressources du fournisseur du service. Ces informations sont

spécifiques à chaque serveur ou contexte d'exécution et doivent être mises à jour chaque fois qu'elles

30

Page 31: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

changent. Dans la correction interne par contre, c'est le même fournisseur du service qui s'en charge et

pour cela il utilise ses propres informations. Aucune information externe ou d'une autre entité ne lui

est nécessaire. Si le serveur change, cela ne met pas en difficulté le mécanisme de correction, car le

nouveau serveur contient les informations nécessaires. Par l'indépendance et la flexibilité qu'elle offre,

la voie de correction interne est l'approche la plus appropriée pour ce travail.

3.6 Evaluation/Optimisation de la QoS

L'évaluation de la QoS est nécessaire pour connaître la QoS fournie par un système. Elle est

aussi nécessaire dans le processus de gestion pour décider des actions correctives. Avant qu'elle puisse

être évaluée, quelques questions de base doivent être clarifiées. Quelles valeurs peut prendre la QoS ?

Comment se traduisent les mesures résultant de l'exécution de services en valeurs de QoS? Quel

rapport existe-il entre le degré de satisfaction des besoins de QoS et la valeur de la QoS? Les travaux

sur le sujet ne sont pas toujours très clairs. D'abord parce que chaque client s'intéresse de façon

particulière à des propriétés spécifiques de la réalisation des services. Ensuite parce que la valeur que

chaque client donne à la qualité est arbitraire et subjective. Ces questions doivent être clarifiées par la

définition de critères sur lesquels baser le calcul de la QoS.

3.6.1 Fonctions d'utilité

Les fonctions d'utilité décrivent le bénéfice que l'exécution d'un service apporte au client, en

fonction d'une caractéristique de QoS. Par exemple, si le besoin de QoS d’une requête est un délai

maximal de 2 secondes, le bénéfice associé à la fourniture du service en fonction du délai peut être

défini comme :

Note : dans le domaine du temps réel, la date limite à laquelle le client désire que le service

soit fourni est appelée "date d’échéance", ou deadline en anglais (DL).

Utilité = U(délai) = V1, lorsque délai est inférieur ou égal à 2 secondes

V2, lorsque délai est plus grand que 2 secondes

DL

V1

délai

utilité

V2

Graphiquement :

L'expression de l'utilité peut prendre des formes très variées. La table 3.3 suivante montre

quelques exemples.

31

Page 32: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Caractéristique Besoin Utilité Version graphique

délai

délai ≤ DL

V1 si délai ≤ DL1

V2 si DL1 < délai ≤ DL2

0 si délai > DL2

délai

délai ≤ DL2

a) V1 si délai ≤ DL1

b) V1- (délai - DL1)*(V1-V2)/(DL2-DL1),

si DL1< délai < DL2

c) V2 si délai ≥ DL2

précision

(nombre de bits)

8 ≤ précision ≤ 16

0 si précision < 8 bits

1 si précision = 8 bits

2 si précision = 12 bits

4 si précision ≥ 16 bits

DL2

V1

délai

utilité

V2

DL1

uti

4

210

Table 3.3. Exemples de fonctions de val

Les valeurs d'utilité peuvent être considérées directement

particulier lorsque l’évaluation est faite pour une seule requête. P

l'exécution de plusieurs requêtes ils faut des critères définissant la m

d'utilité dans l'évaluation de la QoS.

3.6.2 Critères de QoS

Les critères de QoS définissent la manière d'évaluer la QoS

les exécutions de services, les caractéristiques de QoS et la valeur de

Il est possible de définir plusieurs critères de QoS pour cha

pour la caractéristique délai, les valeurs : délai moyen, écart entre l

pourcentage de fois où le délai satisfait une contrainte, etc. sont des c

En plus, chaque critère permet plusieurs choix de calcul de la

du besoin de QoS "délai maximal de 2 secondes", dont la caractérist

N derniers services exécutés, les critères de QoS peuvent être, par exe

a) critère qui considère la valeur du délai moyen, dm = Σ délai / N po

QoS

2Possibilités de calcul :

• QoS = 2 - dm

32

utilité

DL1 DL2

V1

V2délai

lité

précision8 12 16

eurs

comme les valeurs de QoS, en

our évaluer la QoS résultant de

anière de composer les fonctions

. Ils établissent des rapports entre

QoS correspondante.

que caractéristique. Par exemple,

e délai maximal et le minimal, le

ritères possibles.

QoS. Prenons par exemple le cas

ique est délai. En considérant les

mple :

ur le calcul de la QoS :

dm2

Page 33: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

QoS

1

• QoS = 1 / dm

excellente si dm < 0,5 secondes bonne si 0,5 ≤ dm ≤ 1,5 secondes normale si 1,5 ≤ dm ≤ 2,0 secondes mauvaise si dm > 2,0 secondes

• QoS =

b) critère qui considère le degré de respect de la contrainte "délai maxi

de la QoS. Possibilités de calcul :

1• QoS = % de respect de la contrainte

= x / N

x = nombre de fois où délai ≤ 2, pour les N derniers services.

Q

• QoS = Qmax * sin (90*x/N)

Les valeurs obtenues en appliquant les critères peuvent être

valeurs de QoS, par exemple la valeur x/N calculée selon le critère

peut être considérée comme la valeur de la QoS pour les N requêtes.

Ces valeurs de QoS peuvent aussi être produites par des f

exemples de la figure 3.10.

10

k

QoS

x / N 10

Qmax

QoS

x / N 10

Qmax

QoS

Figure 3.10. QoS en fonction des valeurs produites à partir

33

dm2

1

1

/2

dm

2,0

1,5

0,5

0,0excellente

bonne

normale

mauvaise

QoS

mum 2 secondes" pour le calcul

QoS

1

00%

x/N 0

xN

max

QoS

prises directement comme des

"% de respect de la contrainte",

onctions comme l'illustrent les

x / N 10

Qmax

QoS

x / N

des valeurs de "x / N"

Page 34: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

3.6.3 Dimensions Multiples

Plusieurs dimensions peuvent apparaître dans les besoins de QoS. Pour chacune d'elles

plusieurs critères d'évaluation sont possibles. Il faudra définir comment les valeurs produites par

chaque critère seront prises en compte pour l’évaluation de la QoS.

Considérons le cas où les besoins de QoS incluent deux caractéristiques, date de la fourniture

du service et précision, avec les fonctions d'utilités de la figure 3.11.

DE temps

Utilité

(a)

V

Pmin précision

Utilité

(b)

Pmax

V1

V2

DE= date d’échéance Pmin, Pmax = Précision minimale et maximale.

Figure 3.11. Utilité en fonction de (a) date de service fourni, et (b) précision de la réponse.

Premier critère.

Supposons que le critère de QoS pour la caractéristique date soit « le % de respect de la date

d'échéance » :

• Premier critère : C1(date) = x / N

Les valeurs produites par ce critère sont des valeurs réelles dans l'intervalle [0..1]. Pour obtenir

les valeurs de la QoS prenons une fonction du type : QoS1

1 0 x/N

k

• QoS1 = k * Valeur du critère = k * C1(date).

Deuxième critère.

Pour la caractéristique précision supposons que le critère soit « la précision moyenne

fournie », calculée de la façon suivante :

34

Page 35: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

• Deuxième critère : C2(précision) = Σ Pi / N

avec :

Pi = ((précisioni - Pmin)/(Pmax - Pmin))

N = nombre de requêtes considérées

La valeur de Pm se situe dans [0..1]. Une fonction doit être définie pour obtenir les valeurs de

la QoS selon le critère C2. Supposons que la fonction corresponde à :

QoS2

Qmax

QoS2 = Qmax/5 si C2(précision) entre 0 et 0.3 Qmax/2 si C2(précision) entre 0.3 et 0.7 Qmax si C2(précision) entre 0.7 et 1

Qmax/2

Qmax/5

1 0 Pm0,3 0,7

QoS résultante.

Avec les deux critères définis pour l'évaluation de la QoS, la valeur totale de la QoS résulte de la

composition des valeurs apportées par chacun d'eux. Elle peut être composée via une opération

quelconque si QoS1 et QoS2 sont indépendantes. Par exemple : QoS = QoS1 + QoS2

La figure 3.12 montre graphiquement le résultat.

10

k

QoS1

x/N 10

Qmax

QoS2

Pm

Qmax/2

Qmax/5

0,3 0,7

10

Qmax

QoS

Pm

Qmax/2

Qmax/5

0,3 0,7

1x/N

k + Qmax

Figure 3.12. QoS = QoS + QoS

35

1 2

Page 36: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Lorsque QoS1 et QoS2 sont dépendantes il est nécessaire de définir une fonction F pour

calculer la valeur de la QoS totale :

QoS = F (QoS1 , QoS2 )

3.6.4 Optimisation de la QoS

L'objectif de l'optimisation de la QoS est de trouver un point de fonctionnement du système

qui maximise la QoS globale fournie en respectant les contraintes. Bien que dans la plupart des cas

cela se traduise par la recherche d'une affectation de ressources appropriée, plusieurs autres facteurs

influant la QoS peuvent être pris en compte. Par exemple avec une affectation de ressources donnée, la

QoS peut aussi être modifiée en fixant le nombre de clients ou le nombre de requêtes par client ou le

mode opératoire de l'application (lorsqu'elle a plusieurs modes opératoires valides chacun fournissant

un niveau de QoS différent), etc. En plus, lorsque le client accepte différents niveaux de QoS pour une

requête, cela permet aux mécanismes de gestion de choisir la meilleure manière de rendre le service en

fonction des possibilités du système.

Le problème général d'optimisation de la QoS est NP-difficile [Lee98] : la seule possibilité de

trouver une solution optimale est l'énumération de toutes les solutions possibles, ce qui en pratique est

irréalisable. Parmi les approches possibles on peut citer les algorithmes d'approximation qui

s'exécutent en temps polynomial, et les techniques heuristiques qui, si elles ne garantissent pas une

solution optimale, produisent une bonne solution en temps raisonnable [Lee98].

Plusieurs travaux de recherche proposent des méthodes applicables à diverses situations. Une

grande partie d'entre eux utilise des modèles de bénéfice en fonction des ressources pour caractériser

l'exécution des services avec divers niveaux de ressources. C'est le cas des "Time Value Functions"

(TVF) de [Locke86]. Elles expriment le bénéfice de la production d'un résultat en fonction du moment

auquel il est fourni. Une affectation optimale des ressources (processeur) est trouvée en considérant les

TVF de tous les services à exécuter. Un autre exemple est le modèle analytique d'affectation de

ressources pour la gestion de la QoS, Q-RAM, proposé dans [Rajku97]. Le modèle distingue plusieurs

catégories de QoS parmi les besoins de QoS (temps, sécurité, codage, qualité des données, etc.).

Chaque application doit déclarer la quantité minimum de ressources dont elle a besoin pour

fonctionner et une fonction qui précise l'utilité ajoutée selon les ressources utilisées. A partir de ces

informations l'objectif de Q-RAM est de trouver une affectation de ressources qui maximise l'utilité

totale du système en assurant la satisfaction des besoins minimaux de QoS des applications.

3.6.5 Optimisation hors ligne

L'optimisation hors ligne, ou statique, s'effectue avant que le système entre en fonctionnement.

Des analyses visent à trouver une configuration d’exécution du système (affectation de ressources,

36

Page 37: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

mode des applications, etc.) qui optimise la QoS à fournir. Pour qu'une telle optimisation soit faisable,

il est nécessaire que tous les événements affectant le système, le comportement des applications et

l'utilisation des ressources soient connus.

Toutes les techniques d'optimisation sont faisables dans cette approche. Une fois qu'une

configuration satisfaisante est trouvée, elle est inclue dans le code de l'application et aucune autre

activité d'optimisation n'est réalisée pendant l'exécution.

Comme l’approche statique requiert la connaissance complète des événements affectant le

système, elle est mieux appropriée aux systèmes avec activités de type périodique dont les

caractéristiques telles que la durée et la période sont connues. Dans de telles conditions il est possible

d'identifier des patrons réguliers d'exécution qui serviront à trouver une affectation de ressources

optimale.

3.6.6 Optimisation en ligne

L'optimisation en ligne s'effectue pendant que le système est en exécution. Une fois une

solution trouvée et appliquée, le système produit la plus grande QoS possible. Une nouvelle

optimisation doit s’effectuer chaque fois que les conditions affectant la QoS changent. Evidement,

l'ampleur des calculs peut demander des temps importants et rendre ce type d’optimisation

impraticable. C'est particulièrement critique dans les systèmes soumis à des contraintes de temps. Les

approches utilisant des heuristiques sont des alternatives à considérer car elles peuvent donner une

solution dans un temps acceptable. Même si les solutions qu’elles produisent ne sont pas optimales, ce

n'est pas trop grave, car la nature imprédictible des systèmes fait qu'une solution obtenue pour une

situation quelconque, est une solution passagère qui n'est plus optimale lorsque de nouvelles

conditions d’exécution arrivent.

Etant donné la nature dynamique et imprédictible du domaine d'application vers lequel

s'oriente ce travail, l'approche d'optimisation la plus adéquate est la prise de décision en ligne. Même

si l'optimisation exacte est irréalisable en pratique, les principes sur lesquels elle se fonde sont utiles.

37

Page 38: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

4 Systèmes Temps Réel

Dans ce chapitre sont présentés les concepts et caractéristiques généraux des systèmes temps

réel, le domaine d'utilisation du modèle ARTO. La principale caractéristique des systèmes temps réels

est que l'exécution des activités est soumise à des contraintes temporelles. L'approche choisie pour le

traitement des contraintes temporelles dans ARTO est de les considérer comme des besoins de QoS.

Même si d’autres besoins non fonctionnels peuvent être présents dans les requêtes, l'idée est que les

principaux critères dans la gestion de la QoS soient ceux qui dérivent des contraintes temporelles.

Il faut noter que ce travail n'est pas orienté vers les langages objets temps réel, mais vers les

modèles et architectures objet supportés par des environnements de développement.

4.1 Le facteur temps

Dans les applications temps réel les contraintes temporelles, telles que date d’échéance,

généralement dérivées des procédés physiques avec lesquels elles maintiennent une forte interaction

(surveillance, contrôle, conduite, etc.). En plus de satisfaire les besoins fonctionnels du système, un

des principaux objectifs des applications temps réel est le respect des contraintes temporelles des

services qu'elles fournissent. Bien que traditionnellement les systèmes temps réel aient été classés en

deux catégories (temps réel dur et temps réel mou3), un grand nombre de situations existe en raison de

la grande variété des systèmes physiques et des contraintes qu'ils imposent.

D'un côté certains systèmes, très exigeants sur le respect des contraintes temporelles,

demandent que toutes les contraintes soient toujours respectées. Ce sont des systèmes

traditionnellement appelés systèmes temps réel dur dont les défaillances peuvent entraîner des

conséquences catastrophiques (système de pilotage d'avion, de contrôle de missiles, de contrôle

d'usines nucléaires, etc.).

D'un autre côté, certains systèmes moins exigeants sont capables d'accepter des fautes

temporelles sans être considérés comme défaillants. Ce sont les systèmes traditionnellement appelés

systèmes temps réel mou. Bien que l'idéal soit le respect de toutes les contraintes, leur objectif est

plutôt d’arriver à la meilleure satisfaction possible des contraintes. Cet objectif est souvent exprimé en

fonction de mesures telles que le retard moyen, la valeur de la qualité ou le nombre de fautes.

Finalement il reste les systèmes dont l’activité n’est pas soumise à des contraintes temporelles

et qui n'appartiennent pas à la catégorie des systèmes temps réel.

Il faut noter néanmoins que, en général, les systèmes contiennent des activités de tous types :

temps réel dur, temps réel mou, et des activités sans contraintes temporelles. En plus, les activités

peuvent changer de type selon les situations par lesquelles passe le système. Par exemple, l'activité

3 Un point de vue plus récent n'utilise pas cette classification et considère seulement l'existence d'applications soumises à des contraintes temporelles, dont le temps réel dur est un cas particulier [Jensen85].

38

Page 39: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

"mesure de l'altitude d'un avion" peut être de type mou pendant le vol de croisière et devenir de type

dur pendant l'atterrissage.

Bien que traditionnellement l’aspect temporel ait été une caractéristique des systèmes classés

"temps réel" seulement, actuellement il est de plus en plus pris en compte dans les applications

informatiques en général. Sans être considéré comme un facteur critique comme dans les systèmes

temps réel durs, l'aspect temporel est plutôt considéré comme un facteur lié à la qualité des

applications. Cette tendance est encore plus forte par la multiplication des réseaux de communication

et des systèmes distribués, dont des applications telles que le multimédia, la téléconférence, la bourse,

etc., sont sensibles au temps de réponse.

4.2 Les contraintes temporelles

Les besoins des clients relatifs au temps de réalisation des fonctions demandées sont traduits

par des contraintes temporelles sur l’exécution de ces fonctions. Bien que d’autres contraintes puissent

être aussi présentes dans les requêtes (précision, confidentialité, etc.), le respect des contraintes

temporelles est le principal souci des systèmes temps réel. Par exemple, si un client demande un délai

maximal de D secondes pour l'arrivée des paquets dans un service de transport de données, la

contrainte temporelle "ne pas dépasser un délai maximal de D secondes" devient une obligation du

fournisseur du service.

4.3 La valeur du service en fonction du temps

Du point de vue des clients, les applications sont plus ou moins performantes selon leur degré

de satisfaction des contraintes. Par exemple, dans le cas du temps réel dur, si une réponse arrive après

la date attendue elle n'a aucune valeur pour le client. Par contre dans le cas du temps réel mou, il est

possible qu'elle soit encore utile après la date d'échéance. Une technique pour décrire le rapport entre

la valeur d'un service et la date à laquelle il est rendu, est celle des fonctions temps valeur ou Time

Value Functions, TVF [Locke86]. La Figure 4.1 illustre trois exemples de TVF. Dans (a) le service

apporte une utilité de valeur "V" jusqu'au "Temps critique". Après cette date, l'utilité du service vaut

zéro. Dans (b), l'utilité jusqu'à la date "Temps critique" est "V". Au-delà de cette date l'utilité descend

linéairement pour arriver à zéro dans le temps "t0". Dans (c) l'utilité apportée par l'exécution du service

vaut "V" si la date d'exécution se situe entre les dates "Temps critique1" et "Temps critique2". Elle vaut

zéro en déhors de cettes dates.

39

Page 40: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

(a)

tempsTempscritique

V

(b)

tempsTempscritique

(c)

tempsTemps critique2Tempscritique1

V V

Utilité Utilité Utilité

t0

Figure. 4.1. Exemples de Time Value Functions.

Les TVF ont été utilisées pour construire un plan d'exécution de requêtes qui maximise le

bénéfice total apporté par leur exécution [Jensen85].

4.4 La date d'échéance

Une des contraintes temporelles les plus représentatives des applications temps réel est la date

d'échéance4. Le client fait une requête et spécifie une date maximale pour sa réalisation. Le service est

correct s'il est fourni avant la date d'échéance. Dans le cas contraire, deux situations sont possibles.

Lorsque l'exécution n'a aucune valeur pour le client après la date d'échéance, il s'agit d'une échéance

dure (hard deadline). Néanmoins si après la date d'échéance l'exécution apporte encore un bénéfice au

client, il s'agit d'une échéance molle (soft deadline). Les figures 4.1 (a) et (b) illustrent ces deux types

d'échéances.

En général les systèmes temps réel contiennent les deux types de contrainte.

4.5 L'ordonnancement

Un facteur critique pour les applications temps réel est l'ordre d'exécution des activités. Outre

les contraintes temporelles à considérer, le problème de planification devient plus complexe lorsque

plusieurs processus s'exécutent concurremment en utilisant des ressources communes (CPU, mémoire,

canaux de communications, etc.). C'est en raison de la nature concurrentielle des systèmes physiques

que les applications doivent traiter des événements en parallèle.

L'ordonnancement de tâches a été toujours un sujet de recherche très actif dans le domaine des

applications temps réel et de nombreuses solutions ont été proposées [Stankovic95] [Liu73].

4.6 Approches Statique et Dynamique

Par rapport à la façon de construire le planning des tâches, il existe deux grandes

classifications : l'ordonnancement statique et l'ordonnancement dynamique.

4 "deadline" en anglais.

40

Page 41: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

L'ordonnancement statique (hors ligne)

Dans l'ordonnancement statique le planning est construit hors ligne avant l'exécution de

l’application en analysant les activités et événements du système dans toutes les situations possibles.

Toute la dynamique du système doit être connue à l'avance. Pour que l'analyse soit possible il est

nécessaire de disposer de toutes les valeurs affectant le planning, telles que le temps d'exécution des

tâches, la date à laquelle elles seront exécutées, les ressources qu'elles utiliseront, etc. Une fois qu'un

plan est défini, il ne change pas pendant toute l'exécution. Ce type d'ordonnancement est destiné aux

systèmes temps réel durs, en particulier aux systèmes avec des tâches périodiques.

L'ordonnancement dynamique (en ligne)

Dans l'ordonnancement dynamique le planning d'exécution des tâches se fait pendant que se

déroule l'exécution de l'application. Normalement il est construit chaque fois qu’arrive un événement

qui affecte le planning (arrivée de message, fin d'une exécution, faute temporelle, etc.). Ce type

d'ordonnancement est approprié pour les systèmes dont il est impossible de prédire la dynamique et

l'arrivée des événements.

Il faut noter qu’en raison du temps que peut prendre la construction du planning,

l'ordonnancement dynamique peut être inadéquat pour certaines applications temps réel, en particulier

lorsqu'une solution optimale est souhaitée (problème NP complet). Cependant via des solutions

heuristiques ne prenant pas un temps trop important, l'ordonnancement dynamique est utilisable en

pratique.

En plus, il faut noter que lorsque le système est surchargé et que des fautes temporelles sont

inévitables, les solutions optimales n'ont pas beaucoup de sens. Il vaut mieux des solutions vite

trouvées permettant une dégradation contrôlée du système.

Selon l’information sur les activités à exécuter dont l'ordonnanceur dispose, certains types

d'algorithmes d’ordonnancement sont plus appropriés que d’autres :

• Sans information. Il n'y a pas de moyen pour différencier les activités, donc un ordonnancement de

type "round-robin" ou aléatoire peut être utilisé.

• Importance relative des activités. Ordonnancement selon importance; cet algorithme va choisir

l'activité avec la plus haute importance.

• Date d'échéance et temps d'exécution des activités. Un ordonnancement fondé sur l’échéance

(l'activité avec la date d'échéance la plus proche est choisie) ou sur la laxité (l'activité avec la plus

petite laxité est choisie) est optimal dans ce cas.

• Fonctions de temps et valeur (TVF). Des algorithmes plus complexes peuvent être utilisés, tel que

l'ordonnancement avec "meilleur effort" (best-effort scheduling [Locke86]).

41

Page 42: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

4.7 Types d'ordonnancement

Comme la prédictibilité est un des aspects prépondérants des systèmes temps réels, des

analyses sont nécessaires pour vérifier si le planning des tâches est adéquat. Plusieurs types

d'ordonnancement sont possibles selon que : a) le système fait ou non une analyse d'ordonnançabilité,

b) l'analyse est statique ou dynamique, et c) l'analyse produit ou non un planning selon lequel les

tâches seront exécutées. A partir de ces possibilités, différentes approches algorithmiques pour

l'ordonnancement sont identifiées [Ramamritham94] :

• statique conduite par table (static table-driven) : une analyse statique d'ordonnançabilité est

réalisée et le résultat est utilisé pendant l'exécution pour décider de l'exécution des tâches.

• statique conduite par priorités, avec préemption (static priority-driven preemptive) : une analyse

d'ordonnançabilité est réalisée mais nul plan n’est construit. La tâche avec la plus grande priorité

est exécutée d'abord.

• dynamique basée sur un plan (dynamic planning-based) : l'analyse d'ordonnançabilité est faite

pendant l'exécution. Une tâche qui arrive est acceptée dans le plan si son exécution est possible.

Le plan est construit au fur et à mesure que les tâches arrivent.

• dynamique meilleur effort (dynamic best-effort) : le système ne fait pas d’analyse, mais il fait des

efforts pour que les contraintes temporelles soient respectées. Aucune garantie n’est fournie et les

tâches peuvent être tuées pendant leurs exécutions.

Bien que ces quatre approches aient été mentionnées séparément, dans la pratique une ou

plusieurs d'entre elles peuvent apparaître dans des solutions d'ordonnancement particulières.

4.8 Le support pour le temps réel

Dans les systèmes d'exploitation c'est normalement le composant appelé "ordonnanceur"5 qui

se charge de planifier l'exécution des tâches selon une politique particulière (FIFO, "round robin",

selon la priorité des processus, etc.). Vu les particularités des applications temps réel, les

ordonnanceurs des systèmes d'exploitation courants ne sont pas adaptés car ils ne prennent pas en

compte les contraintes temporelles dans leur politique d'ordonnancement. En plus, la prédictibilité

temporelle de leurs mécanismes de base (service d'interruptions, création de threads, récupération de

mémoire, etc.) est basse [Jones98] [Ramamritham98].

Plusieurs solutions ont été proposées pour surmonter le problème. D'un côté il existe des

systèmes d'exploitation dont les noyaux ont été spécifiquement conçus pour l'exécution d'applications

temps réel. Certains ont été construits pour des contextes matériels et applicatifs spécifiques, donc très

efficaces mais avec très peu de portabilité. D'un autre coté, il y a ceux de propos général plus ouverts.

5 Scheduler en anglais.

42

Page 43: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Dans cette approche les propriétés de performance et de prédictibilité sont obtenues en éliminant les

fonctionnalités "superflues" et en optimisant le code. Les objectifs à attendre sont de réduire la taille

du code, de réduire le temps de changement de contexte de tâche (contex switch), de répondre

rapidement aux interruptions, etc. Quelques exemples de noyaux temps réel commerciaux sont QNX,

PDOS, pSOS, VCOS, VRTX32, et VxWorks. Dans le même esprit mais dans le secteur de la

recherche on trouve aussi entre autres les systèmes Alpha [Clark92], Spring6 [Stankovic89], Real-

Time Mach [Tokuda90].

Dans une autre approche, les systèmes d'exploitation à caractère général sont étendus en

modifiant quelques parties ou en ajoutant certaines fonctionnalités, afin d'offrir aux applications un

environnement d'exécution supportant le temps réel. Généralement les versions de systèmes

d'exploitation "temps-réel" résultantes sont moins rapides et moins prédictibles que celles

spécifiquement conçues pour le temps réel. Cependant les plus grandes fonctionnalités et les

environnements de développement plus puissants qu'elles supportent font d'elles des solutions très

attractives. Quelques exemples de systèmes basés sur ce type de solution sont RT-UNIX [Furht91],

RTX [Carpenter97], RT-Linux [Yodaiken97]. Un étude sur cette approche et les différentes techniques

utilisées est faite dans [Furht93].

Enfin, il y a les approches dont les services d'ordonnancement des systèmes d'exploitation sont

utilisés tels qu'ils sont, sans les modifier. L'ordre d'exécution des tâches est contrôlé par un programme

au niveau de l'application à travers la gestion des paramètres des tâches qui s'exécutent [Lin98]

[Jones98]. Le principal avantage de cette approche est la flexibilité qu'elle offre au développeur car,

comme la construction du planning se fait au niveau de l'application, il peut fabriquer la politique

d'ordonnancement convenant à ses besoins. Néanmoins la conception et la construction d'un

ordonnanceur peut demander un effort supplémentaire considérable. D'un autre côté la solution peut

avoir des performances faibles et peu prédictibles, car elles dépendent fortement des propriétés

temporelles des mécanismes de base du système d'exploitation, du matériel concerné, et de leurs

interactions. Quelques résultats intéressants obtenus selon cette approche sont présentés dans

[Jones98]et [Ramamritham98].

Il faut noter que pour les systèmes temps réel dur, l'objectif principal de l'ordonnanceur est de

produire un plan d'exécution de tâches capable d'assurer le respect absolu des contraintes. Le problème

est difficile à résoudre car la solution requiert la prédiction de tous les événements affectant le système

et le comportement du contexte supportant l'exécution. Dans le cas du temps réel mou, du fait que les

contraintes temporelles peuvent être violées, l'objectif de l'ordonnancement n'est pas la satisfaction

totale des contraintes. Il est souvent exprimé en d'autres termes tels que minimiser le délai moyen,

maximiser le bénéfice apporté par les exécutions, minimiser le nombre de fautes temporelles, etc.

6 Dans Spring un co-processeur contenant le code de l'ordonnanceur fut spécifiquement construit afin d'accélérer son exécution et de l'exécuter en parallèle avec le processeur central [Burleson93].

43

Page 44: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

TECHNOLOGIES DE BASE

Les chapitres 5 et 6 présentent les concepts et propriétés des technologies sur lesquelles se

base la conception du modèle ARTO. D'un coté l'orientation objet fournit les moyens logiciels pour la

formulation et la réalisation du modèle. Les propriétés importantes de l'orientation objet telles que la

modularité, l'indépendance, sont enrichies par la concurrence, l'envoi de messages et les processus

légers des objets actifs. D'un autre coté, les architectures à méta niveaux dérivant des systèmes

réfléchis sont un bon point de départ pour la conception et réalisation des mécanismes d'adaptation et

de gestion de QoS indépendamment des solutions fonctionnelles appartenant au domaine du problème

utilisateur.

5 Objet Actif

Dans ce chapitre sont présentés les concepts et caractéristiques du modèle objet actif qui

seront utiles pour la compréhension et formulation du modèle ARTO. En considérant que l'intérêt est

la conception d'un modèle objet pour développer des applications à un haut niveau d'expression, il ne

doit pas dépendre d'un langage particulier de programmation, mais des propriétés des langages telles

que le support pour l’exécution asynchrone sont nécessaires.

5.1 Objet actif et processus

5.1.1 Objet Actif

Les objets actifs sont le produit de l'intégration de la programmation par objets et de la

programmation concurrente7 qui a eu lieu dans les années 80. D’un côté l'orientation objet offrait une

approche de modélisation de systèmes dont la concurrence était une caractéristique naturelle. D’un

autre côté la concurrence s’exprimait par la possibilité d’exécuter plusieurs processus légers dans les

applications8. Dans ce scénario et de manière générale, deux voies de réalisation de la concurrence

étaient explorées dans l’approche objet : une réalisée par des processus indépendants des objets et

l’autre avec des processus attachés aux objets.

Dans le premier cas, la concurrence est le résultat de l'exécution parallèle des opérations des

objets, dans des processus qui leur sont externes. Les processus n’ont aucun autre rapport avec les

objets. Dans le deuxième cas la concurrence se produit lorsque chaque processus attaché à un objet,

exécute le code de son objet. Cette union de processus et objets est connue comme "objet actif", un

objet avec ses propres capacités d’exécution.

Afin de réduire la dépendance entre objets et d'augmenter la modularité du modèle, le choix

effectué dans ce projet est que seul le processus attaché à l’objet exécute les méthodes de l’objet.

7 Programmation concurrente : exécution simultanée de plusieurs processus.

44

Page 45: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Les objets “ passifs ” classiques sont des unités logiques normalement formées par des

attributs et méthodes, sans aucune liaison avec un processus particulier. Leurs opérations sont

exécutées par des processus qui leur sont extérieurs.

Dans la Figure 5.1 sont représentés un objet passif (a) et un objet actif (b) tels qu'ils sont vus

dans ce projet. On peut constater que, en plus des attributs et des méthodes, l’objet actif contient un

processus.

(a) (b)

méthodes

Processuslié àl’objet

attributs

Figure 5.1. Objet Passif (a) et Actif (b)

Par rapport à l'exécution des méthodes, la figure 5.2 montre la différence entre un objet passif

(a) et un objet actif (b). Dans (a), le code de la méthode est exécuté par un processus externe à l’objet.

En (b) le processus attaché à l’objet actif exécute la méthode.

ProcessuslocalMessageProcessus

externe

(a) (b)

Figure 5.2 Exécution de méthode dans un objet passif (a), et actif (b).

5.1.2 Envois de messages

Les objets d'une application interagissent pour fournir les fonctionnalités attendues. Cette

interaction est une propriété naturelle des systèmes qui se réalise par les messages qu'ils s'échangent,

normalement pour demander un service. Par exemple, dans un ascenseur la pression d'un bouton

d’appel peut demander l'ouverture de la porte. Les objets "bouton" et "porte" sont liés d'une certaine

façon par des appels de l'un et les services de l'autre. C'est à travers des requêtes pour des services que

les objets coopèrent.

8 Les processus légers sont communément connus comme "fils d'exécution" ou "threads".

45

Page 46: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Dans les objets actifs les appels de méthodes ne sont pas directs mais passent par des envois de

messages. C'est une caractéristique importante qui permet une plus grande indépendance entre les

objets et augmente la concurrence. Lorsque l'appel est asynchrone, c’est le processus de l’objet serveur

qui exécute la méthode appelée, permettant au processus appelant de continuer l’exécution de son

code.

La Figure 5.3 montre des processus indépendants exécutant les méthodes des objets passifs.

Lorsqu'une méthode fait un appel à une autre, c’est le thread qui exécute la méthode appelante qui

exécute aussi la méthode appelée. L’exécution de la méthode qui fait l’appel ne peut continuer que

quand l’exécution de la méthode appelée est finie. Dans ce cas, les appels sont synchrones et

séquentiels.

Appel de méthode

Figure 5.3. Concurrence et appel de méthode dans des objets passifs

Dans le cas des objets actifs, illustré dans la Figure 5.4, l'envoi de message se traduit dans

l'objet par des appels de méthodes. Une fois le message reçu par le destinataire le processus local se

charge de son exécution. En cas d'appel asynchrone la méthode appelante peut continuer son

exécution.

Message

Figure 5.4. Concurrence et appel de méthode dans des objets actifs.

5.1.3 Programmation des processus.

Dans le modèle d'objet actif proposé, le processus lié à un objet actif est créé au moment de la

création de l'objet et lui reste attaché pendant toute son existence. Ce processus est habituellement

appelé le "contrôleur" et le code qu'il exécute est appelé le "code de contrôle" de l'objet actif. Il peut

être accessible ou non par les programmeurs. Il

46

Page 47: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Processus inaccessible aux programmeurs.

Les processus inaccessibles aux programmeurs sont comme une tâche de fond des objets. Ils

exécutent normalement un code d'initialisation au moment de la création de l’objet puis restent en

attente des messages envoyés par les autres objets. Le support du système d’exploitation se charge

d’activer le processus quand les messages arrivent et ces derniers sont généralement exécutés dans

l’ordre d’arrivée. Le programmeur ne peut pas intervenir sur l’activité du processus et des problèmes

liés à la concurrence peuvent se présenter. Par exemple l'exécution d'une méthode qui n’est pas

autorisée dans un état particulier de l'objet : dans un objet "pile" la méthode "dépiler" n’est pas

autorisée si la "pile" est vide. Dans une telle situation et selon la notion particulière de message

adoptée, l'appel est perdu ou une erreur est signalée. Une alternative est d'ajouter un code de contrôle

aux objets appelants pour qu'ils s'informent sur l'objet destinataire avant de faire les appels

(programmation par contrat de B. Meyer). Malheureusement cette solution, en plus d’augmenter la

dépendance entre objets et de compliquer le code, n’élimine pas totalement le problème : deux objets

clients appelant la méthode "dépiler" d’un même objet serveur peuvent trouver que la "pile" n'est pas

vide et faire l’appel, mais s’il ne reste qu'un élément dans la pile, l’un d'eux aura des problèmes

(conflit d'accès).

Processus programmable

Lorsque le processus lié à un objet peut être programmé, le modèle d'objet actif acquiert une

puissance remarquable. En plus d’un code d’initialisation, les programmeurs peuvent ajouter des

fonctionnalités aux processus pour résoudre les problèmes de concurrence, de synchronisation, d'état,

etc. En général, le programmeur peut ajouter une grande flexibilité aux objets, particulièrement pour le

traitement des messages.

Le problème mentionné précédemment, peut trouver une solution par la voie de la

programmation du contrôleur. Les messages qui arrivent peuvent être analysés par le contrôleur avant

de lancer toute exécution, ce qui assure une exécution sans problème.

5.1.4 Composants de l'objet actif

Le modèle d’objet actif de base contient le processus auquel il est attaché dès sa création.

Cependant pour augmenter les possibilités de programmation, des éléments additionnels sont souvent

présents. Un de ces composants est une file d’entrée où sont déposés les messages qui arrivent. Grâce

à elle, un message qui n’est pas exécutable au moment où il arrive peut rester dans la file et être

exécuté plus tard. La file d’entrée permet aussi à l’objet appelant de déposer son message et de

continuer son exécution, même si le contrôleur de l’objet destinataire est occupé.

En général lorsque le processus de l'objet actif peut être programmé, les modèles d’objet actif

possèdent comme composants de base un ou plusieurs processus légers, une ou plusieurs files de

messages et un code de contrôle.

47

Page 48: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

• Threads : l’objet actif est attaché à un processus ou thread9. Pour augmenter ses capacités

d’exécution, il est aussi possible que l’objet puisse avoir plusieurs threads. Un d’entre eux peut

être destiné aux fonctions de contrôle et les autres à l’exécution de méthodes. Le nombre de

threads et la façon dont les méthodes s'exécutent induisent des différences importantes de

comportement entre les objets actifs.

• File d'entrée : pour recevoir les messages et pouvoir les traiter adéquatement, les objets actifs ont

une file d'entrée où les messages sont déposés par les clients.

• Code de contrôle : pour agir et décider face aux événements tels que l'arrivée d'un message, les

objets actifs doivent posséder un code de contrôle qui s'exécute dans un thread de l'objet. Le

contrôleur est responsable de toute l'activité de l'objet, principalement du traitement des messages.

La Figure 5.5 illustre le cas d'un objet actif avec une file d’entrée, un thread de contrôle et plusieurs

threads additionnels, ainsi que les attributs et méthodes.

File de messages

Threadcontrôleur

threads

attributs

méthodes

Figure 5.5. Composants de base des Objet Actifs

Le modèle d’objet actif choisi, est celui illustré dans la Figure 5.5. Les applications sont

composées uniquement d'objets actifs. Tout objet passif est inclus dans un objet actif, et tout objet actif

peut contenir un ou plusieurs objets passifs (Voir Figure 5.6).

OP

OA

OA OA

OPOP

Application

Figure 5.6. Application composée d’Objets Actifs seulement.

9 Thread désigne un "processus léger" qui contient toutes les données relatives à l'exécution d'un code et qui normalement appartient à un processus. Tous les threads partagent avec leur processus parent le même espace d'adressage.

48

Page 49: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

5.1.5 Nombre de threads

La plupart des objets actifs ont un seul processus destiné au contrôle et à l’exécution des

méthodes. Cependant, du moment qu'il est possible de programmer le processus, cela permet

d’attacher plusieurs threads aux objets. Le nombre de threads a une incidence importante sur le

fonctionnement des objets actifs. Avec un seul thread, l'objet ne peut exécuter qu'une méthode à la fois

et le contrôle n’est pas disponible pendant toute l'exécution de la méthode. Le thread ne reprend son

activité de contrôle que quand la méthode est finie. Cette situation n'est pas adaptée pour des

applications qui demandent des réactions et décisions rapides de l'objet. Pendant l'exécution d'une

méthode, l'objet ne peut pas réagir lorsqu’un message plus urgent arrive. Ce message reste dans la file

jusqu'à la fin de la méthode en cours. Cette situation présente aussi un danger de blocage de l'objet si

la méthode en exécution attend une ressource ou une réponse d’un autre objet, ou si elle se trouve dans

une boucle infinie. En plus, si les threads de tous les objets sont bloqués en attente d'événements, les

appels non traités restent en attente et le temps processeur est sous utilisé.

Une solution à ces problèmes est d'avoir plusieurs threads dans chaque objet actif, ce qui est

de plus intéressant par la souplesse d'exécution apportée. Dans les objets, un des threads peut être

dédié en permanence à l'exécution du code du contrôleur, et les autres à l'exécution des méthodes. De

cette manière, le contrôleur peut toujours réagir aux événements tels que l'arrivée d'un nouveau

message ou le blocage d'une méthode. En contrepartie de nouveaux problèmes surgissent en particulier

la nécessité du contrôle de la concurrence à l'intérieur des objets.

Il y a une ressemblance entre le Système d'Exploitation qui contrôle les processus et les

applications, et l'objet actif qui contrôle ses processus légers et ses méthodes. Le contrôleur des objets

actifs peut être considéré comme un petit système d'exploitation à l'intérieur de l'objet qui se charge de

contrôler son activité.

Note : un nombre trop grand de threads n’est pas souhaitable car dans les systèmes

d’exploitation multithread le temps consommé par la commutation entre threads est important.

5.1.6 Création des threads

Dans un modèle d’objet actif avec plusieurs threads, la création des threads pourrait se faire au

fur et à mesure qu’ils sont nécessaires, c'est à dire, à chaque fois qu’un message est prêt pour

l'exécution. Il faut noter que la création et destruction de thread prend un temps non négligeable et,

généralement non connu ni contrôlé avec précision. Cet aspect est particulièrement important si la

prédiction du temps est fondamentale. Une façon classique de réduire l'incertitude relative au temps

pendant l'exécution est de faire la création de tous les composants de l'application, y compris les

threads des objets, dès le début de l'exécution. Le comportement de l'objet ne deviendra prédictif

qu'après la fin de cette création.

49

Page 50: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Pour les besoins de prédictibilité de ce projet, le choix qui plus convient est d'avoir plusieurs

threads par objet qui tous sont créés au moment de la création de l'objet. De toute façon il est toujours

possible considérer la création de nouveaux threads pendant l’exécution, si nécessaire.

5.1.7 Concurrence

Lorsque chaque objet exécute ses opérations une par une, on parle d’objets séquentiels et la

seule concurrence possible se produit entre objets (concurrence inter-objet, voir Figure 5.7 a). Lorsqu'à

l'intérieur des objets plusieurs exécutions simultanées sont possibles, il s’agit de concurrence intra-

objet et deux types sont identifiés. Dans le premier type, appelé objets quasi-concurrents, deux ou

plusieurs méthodes partagent un même thread d’exécution et s'exécutent en commutant le thread d'une

méthode à l'autre (voir l'objet (b1) de la Figure 5.7). Dans le deuxième type, appelé simplement objets

concurrents, plusieurs méthodes peuvent s'exécuter simultanément, avec un thread d'exécution propre

pour chacune d'elles. L'objet (b2) de la figure 5.7, illustre ce type d'objet.

Objets séquentiels

(a) concurrence inter objets (b) concurrence intra objets

Objet quasi concurrent Objet concurrent

(b1) (b2)

Figure 5.7. Types de Concurrence et d’objets.

Note : il faut considérer que dans un système informatique mono processeur, la concurrence

est toujours virtuelle. Le processeur n'exécute qu'un seul thread à la fois, mais les services du système

d'exploitation permettent l'avancement de l'exécution de plusieurs threads.

5.2 Contrôle des objets actifs

5.2.1 Contrôle de la concurrence

La concurrence d'exécution de méthodes à l'intérieur des objets offre plusieurs avantages.

D'abord elle donne du modèle objet une vision plus proche de la façon d'agir des objets du monde réel.

D'un autre côté elle permet d'augmenter l'utilisation des ressources (processeur). Néanmoins, un

contrôle est nécessaire pour assurer l'intégrité des objets et de l'application. Par exemple, il faut un

contrôle pour l'accès aux données partagées, afin d'éviter les possibles incohérences dues aux

interférences entre les exécutions.

50

Page 51: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

5.2.2 Contrôle intra-objet

Comme les demandes de service des clients sont les événements à l’origine de l’exécution des

méthodes, le contrôle de la concurrence par les objets clients est possible à l'extérieur de l'objet

concerné. Deux types de contrôle intra-objet ont été identifiés : un contrôle externe et un autre interne.

Par rapport aux langages de programmation, deux possibilités de contrôle de concurrence ont été

identifiées [Guerraoui95] : si l'utilisateur peut programmer le contrôle intra objet entièrement il est

explicite, sinon il est implicite.

Lorsque les clients doivent se synchroniser avant de faire un appel à une méthode, il s'agit d'un

contrôle explicite externe (Figure 5.8 (a)). Si le contrôle est programmé à l’intérieur de l'objet serveur,

alors il s'agit d'un contrôle explicite interne (Figure 5.8 (b)).

synchronisation

Objets clients

Objet serveur

synchronisation

Objets clients

Objet serveur(a) contrôle externe (b) contrôle interne

Figure 5.8. Contrôle explicite externe et interne.

En considérant que par principe chaque objet est responsable de l’intégrité de ses données et

qu’elles ne sont modifiées que par les méthodes de l’objet, le contrôle qui convient le mieux est le

contrôle à l’intérieur de l’objet. En plus, un contrôle par les clients augmente la dépendance entre

objets car il faut pour cela qu'ils se connaissent. Le modèle retenu pour ce projet est un contrôle de la

concurrence intra-objet interne et explicite effectué par le contrôleur.

5.2.3 Contrôle inter objet

Un contrôle de la compatibilité entre méthodes d'objets différents ne semble pas nécessaire vu

que les objets ne partagent pas de données. En plus, comme toute interaction entre objets est faite par

envoi de message, si deux objets veulent accéder à une donnée commune chacun envoie un message à

l’objet qui contient la donnée et contrôle son accès.

5.2.4 Contraintes d’état

Lorsqu’un objet a des états, un contrôle est nécessaire afin d’assurer à tout moment son

intégrité. Le contrôleur doit assurer que les contraintes liées aux états sont toujours respectées. Pour

cela il faut une représentation des états, ainsi qu'une manière de calculer le nouvel état à chaque fois

51

Page 52: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

qu’une transition pouvant modifier l’état est exécutée. Aussi, il est nécessaire de connaître la relation

entre messages et états, puisque le contrôleur doit choisir les messages de la file d’entrée en fonction

de leur validité dans l’état courant. Par exemple, si l'état courant d'un objet “ pile ” est “ vide ”, les

messages se traduisant par un appel à la méthode “ get ” ne doivent pas être choisis.

Un problème à prendre en compte dans le contrôle des états est celui de l'exécution

concurrente de deux ou plusieurs méthodes. Le nouvel état doit être calculé quand toutes les méthodes

pouvant modifier l’état sont terminées. Même si pendant l'exécution les méthodes modifient des

variables qui définissent l’état donc en fait l'état, le nouvel état courant ne sera déterminé et visible

qu'à la fin de la dernière méthode pouvant modifier l'état. Evidement, ce cas est très particulier et il ne

faut l'utiliser qu'avec précaution s'il n'y a pas d'interférences possibles entre les méthodes.

Le choix retenu est de tester la validité de l'exécution des méthodes, avant de les lancer. Deux

types de test sont prévus : le test de validité dans l'état courant de l'objet, et le test de compatibilité

avec les méthodes en cours d'exécution.

5.2.5 Communication entre objets

Il a été déjà mentionné que l'interaction entre objets actifs est réalisée par l'envoi de messages,

lesquels normalement portent une demande de réalisation d'un service. Le destinataire décide de la

manière de réaliser le service demandé, ce qui normalement se concrétise par l'exécution d'une ou

plusieurs méthodes de l'objet.

Un message reçu peut être accepté ou non par le serveur. Etre accepté signifie que le message

sera traité. S'il n'est pas accepté, plusieurs alternatives existent :

a) le client peut être averti d'une erreur,

b) le message peut rester dans la file d'entrée jusqu'à ce qu'il soit accepté,

c) ou simplement le message peut être ignoré et éliminé par le serveur.

Les raisons pour lesquelles un message n’est pas accepté sont diverses. Par exemple, quand

l'état de l'objet n'autorise pas le message ou si le message n'est pas compatible avec les messages en

cours d'exécution. Aussi, lorsque les threads de l’objet sont tous occupés, un message qui arrive ne

peut pas être exécuté.

5.2.6 Synchronisation des appels

Lorsqu'une méthode a besoin d’un résultat ou d'une réponse provenant d’une autre méthode, il

est nécessaire d'avoir un mécanisme de synchronisation. Deux principaux types de relation peuvent se

distinguer dans une communication entre objets, selon le type de synchronisation établi. La

synchronisation est dite de type synchrone ou asynchrone, selon que l'objet client attend ou non la fin

de l'exécution du service demandé pour continuer l'exécution de son propre code. Dans le modèle

52

Page 53: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

d'objets séquentiels, le mode de communication est synchrone seulement, parce que le code de la

méthode appelée est exécuté par le même thread que celui qui exécute la méthode d'appel. Cette

dernière s'interrompt pendant l’exécution de la méthode appelée. Par contre, le modèle d'objet actif

permet une communication asynchrone dans laquelle l’exécution d’une méthode ne s’arrête pas quand

elle fait une requête. Une fois qu'elle a envoyé le message au destinataire, elle peut continuer son

exécution. En cas de besoin d’une réponse provenant d'une méthode appelée, la méthode appelante se

mettra en attente seulement si, au moment de l’utiliser, la réponse n’est pas encore prête. Si le langage

de programmation se charge du contrôle, aucun code supplémentaire est nécessaire pour la

synchronisation. Dans le cas contraire, le programmeur doit introduire le code de contrôle à l’endroit

approprié.

La figure 5.9 montre les deux types de communication synchrone et asynchrone. Dans le

premier cas, figure 5.9 (a), l’exécution du code de la méthode appelante continue seulement quand la

méthode appelée a fini.

invocation

réponse

attente

Objetclient Objetserveur

(a) synchrone

continuation

(b) synchrone sur démande

invocation

réponse

attente

Objetclient Objetserveur

continuation

Figure 5.9. Communication synchrone et synchrone avec attente par nécessité

Pour les buts de ce projet la préférence est à une communication de type asynchrone. Toute

synchronisation nécessaire sera introduite juste avant l'utilisation de la réponse (attente par nécessité,

[Caromel89]).

5.3 Bénéfice du modèle d’objet actif

Les objets actifs apportent des bénéfices au développement des applications orientées objet,

provenant particulièrement de l’augmentation de l'indépendance, de la modularité, et des possibilités

d'exécution en parallèle. Cela permet, entre autres, une meilleure modélisation des objets du monde

réel car la concurrence d'activités est une de ses caractéristiques naturelles, une meilleure utilisation

des ressources de calcul (si un processus attend, un autre peut continuer son exécution), une meilleure

capacité pour gérer la complexité des systèmes (en raison d'une plus grande modularité et de

l'indépendance). Par contre, un contrôle plus exigeant est nécessaire pour maintenir l'intégrité des

objets, particulièrement l'accès concurrent aux données et l'acceptation de messages selon l'état.

Les objets actifs sont une extension au modèle objet classique. Ils sont liés à un processus dès

sa création, ce qui leur donne des capacités d’exécution propres. Ils ont besoin d'un code de contrôle

pour décider de leurs activités, pour la sélection et le traitement des messages, pour assurer l’intégrité

des données et pour assurer le respect des contraintes (concurrence, état, etc.).

53

Page 54: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Les communications entre objets se réalisent par l'envoi de messages. Chaque objet doit avoir

une file d’entrée pour les messages reçus en provenance des objets clients.

Dans une application fondée sur des objets actifs, il existe une concurrence d’exécution de

méthodes d'objets différents (inter-objet). Quand l'objet a plusieurs threads, il est aussi possible d'avoir

une concurrence des méthodes à l'intérieur d’un même objet (intra-objet). Ce dernier cas demande un

contrôle sur l’accès simultané aux données.

Les communications entre objets peuvent être de types synchrones ou asynchrones. Une

variante de type synchrone est la continuation de l'exécution de la méthode appelante jusqu’au

moment où la réponse attendue de la méthode appelée soit utilisée.

Pour les objets à états, un contrôle est nécessaire pour vérifier la validité des messages en

fonction de l’état courant.

Les caractéristiques principales retenues pour le modèle d’objet actif de ce projet peuvent se

résumer ainsi :

• Une application est composée d'objets actifs seulement. Tout objet passif est inclus dans un

objet actif, et tout objet actif peut contenir un ou plusieurs objets passifs.

• Les objets actifs peuvent contenir plusieurs threads d’exécution, tous créés au moment de la

création de l’objet.

• L'exécution des méthodes est faite dans les threads de l’objet seulement.

• La sélection des messages est faite par le contrôleur et selon des critères définis par le

serveur.

• Le contrôle des contraintes est fait à l’intérieur de l’objet par le code du contrôleur.

L'intégrité des données est assurée par le contrôle de compatibilité entre méthodes. Pour les

objets à états, un contrôle de validité de messages selon l’état courant de l’objet est effectué.

• La communication entre objets se fait par messages de type asynchrone. En cas de

synchronisation, il sera introduit une attente juste avant que la réponse attendue soit utilisée.

5.4 Modèles d'Objet Actif pour le temps réel.

Trois modèles objet temps réel qui présentent des caractéristiques intéressantes relatives à ce

travail sont maintenant décrits.

5.4.1 ACCORD

Le projet ACCORD [Terrier96] fournit un atelier orienté objet pour le développement

d'applications temps réel. ACCORD offre deux fonctions principales :

a) la modélisation du comportement temps-réel, et

b) la génération automatique de code.

54

Page 55: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Le modèle objet d'ACCORD est TOM, un modèle objet pour le temps réel (real Time Object

Model). TOM est une extension du modèle d'objet actif avec les éléments suivants :

a) Une interface qui spécifie les messages acceptés par un objet.

b) Une boite à lettres où les messages reçus attendent leur traitement.

c) Un mécanisme de contrôle de concurrence local, qui assure la cohérence des attributs

internes de l'objet.

Le model TOM a les propriétés suivantes:

a) Les contraintes de concurrence intra-objet seulement sont traitées.

b) Les contraintes temporelles sont définies par l'objet appelant et ajoutées à chaque message.

c) La communication par messages peut être asynchrone et synchrone.

d) Les contraintes entre objets ne sont pas considérées.

e) Chaque message est exécuté dans son propre thread lequel est créé dynamiquement pour

chaque message.

f) Des boites de réception de réponse sont créées lors de l'envoi de message si les méthodes

appelantes attendent une réponse.

L'architecture générale d'une application ACCORD consiste en :

a) un ensemble d'objets temps réel

b) un ensemble d'objets passifs (utilisés par les objets temps réel)

c) un contrôleur global (ajouté à chaque application) chargé de la gestion des ressources.

Chaque objet possède un contrôleur local (localControler) qui s'exécute dans un thread

indépendant, et qui se charge de :

a) la gestion de la boite à messages

b) la création et destruction des threads pour l'exécution de messages

c) la gestion des contraintes de concurrence.

Un objet temps-réel peut être vu comme un serveur de tâches communiquant avec les autres

objets par l'envoi de messages, et gérant les contraintes attachées à leurs traitements.

Le Noyau ACCORD a été construit pour fournir un support opérationnel aux applications. Il

permet entre autres :

55

Page 56: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

a) la communication et synchronisations entre objets

b) le contrôle d'accès interne aux données (contrôle de concurrence interne des objets)

c) le transfert de messages entre objets distants, et

d) l'ordonnancement global des exécutions des messages

Au niveau de chaque objet temps-réel, le Noyau ACCORD fournit les réalisations génériques

des éléments tels que :

a) la boîte à lettres contenant les messages reçus et leurs contraintes

b) le contrôle de l'état de l'objet et le contrôle de concurrence entre ses méthodes

c) la gestion et l'ordonnancement dynamique du traitement de messages

ACCORD s'est d'abord fondé sur la méthode Class-Relation [Desfray94, Desfray96] pour la

modélisation d'une application mais il utilise UML dans ses dernières versions. Il utilise trois

modèles : structurel, opérationnel et dynamique. La modélisation est résumée dans les étapes

suivantes :

a) L'utilisateur définit le modèle structurel de l'application en spécifiant les classes et leurs

relations. Puis, les classes associées à des objets temps-réel sont sélectionnées.

b) par le modèle opérationnel l'utilisateur spécifie les conditions d'utilisation des objets. Par

exemple, il définit les invariants de classe, les conditions avant et après exécution des

méthodes, et l'automate de la classe. Cette dernière établit la relation entre les méthodes et les

états de l'objet où elles sont autorisées.

c) Finalement, la spécification du lancement de tâches et ses contraintes temps réels se fait à

l'aide du modèle dynamique, par les automates de déclenchement de la méthode Classe-

Relation étendus au temps-réel. D'un autre côté, l'automate de contrôle définit le traitement des

messages reçus par l'objet et son comportement une fois que le message a été traité.

5.4.1.1 L'état de l'objet

Dans ACCORD l'état de l'objet est défini comme un n-uplet composé des valeurs des attributs

de l'objet. Un état particulier est visible de l'extérieur seulement lorsque nulle méthode pouvant le

modifier est en exécution. Cette notion d'état permet de définir le comportement des objets en

spécifiant les méthodes interdites en fonction des états de l'objet, ce qui définit les contraintes d'état.

ACCORD ne permet pas l'exécution simultanée de deux méthodes pouvant modifier l'état.

Cependant les méthodes qui s'exécutent simultanément peuvent avoir accès aux même attributs de

l'objet, ce qui oblige à prendre en compte des contraintes de concurrence.

56

Page 57: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Pour le contrôle des contraintes d'état et de concurrence, deux contrôleurs ont été conçus : un

pour la gestion des états et l'autre pour le contrôle de la concurrence.

5.4.1.2 Communication entre objets

La communication entre objets est faite par envoi de messages asynchrones. Cependant,

lorsqu'une réponse est attendue par l'objet client, il envoie le nom d'une boîte où le serveur doit

déposer la réponse. La boîte à réponse est créée par l'objet client lorsqu'il envoie un message et qu'une

réponse est attendue. Le client continue son exécution jusqu'à ce qu'il ait besoin de la réponse. Si elle

est déjà prête, le client la prend et continue son exécution, sinon il l'attend. Ce type de synchronisation

est appelé "envoi de message synchrone retardé" (Delayed Synchronous Message Passing) ou "attente

par nécessité" [Caromel89]. D'autres schémas de synchronisation sont aussi possibles, par exemple

lorsque le client a besoin de connaître le début ou la fin d'une exécution.

5.4.1.3 Contrôle de concurrence

Dans ACCORD les objets contrôlent l'accès concurrent aux attributs par leurs méthodes. Les

contraintes de concurrence sont définies dans les classes des objets en précisant si une méthode accède

à un attribut et dans quel mode (pour lire ou pour écrire). De cette manière les objets temps réel sont

perçus comme un ensemble de ressources (attributs) partagées par les méthodes.

5.4.1.4 Ordonnancement

L'ordonnancement d'ACCORD est de type dynamique sans connaissance a priori du temps de

traitement des messages ni de leur date d'arrivée. C'est le contrôleur global qui choisit le prochain

message à exécuter, parmi tous les messages de l'application que les contrôleurs locaux ont choisi pour

exécution. Le contrôleur analyse les contraintes de temps des messages et choisit celui avec la date

d'échéance la plus proche (ordonnancement EDF).

Par sa part, le contrôleur local analyse le message reçu et si son exécution est permise

(contraintes d'état et de concurrence), il informe le contrôleur global sur les contraintes temporelles du

message et lui demande de l'ordonnancer. Lorsque le contrôleur global décide l'exécution du message,

il le communique au contrôleur local, lequel attache un thread au message et démarre son exécution.

Pour les tâches périodiques, le contrôleur local demande périodiquement leur exécution au

contrôleur global, selon les contraintes de période portées dans les messages.

57

Page 58: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

La figure 5.10 montre les principaux composants du modèle objet d'ACCORD, et comment ils

sont reliés pour l'exécution de messages.

Contraintes de concurrence

Contrôleur local

attributsmethA()

methB()

Boite à lettre

Exécution et fin planning

management

Contrôleur global

Thread2

Thread3 Thread1

methC()

Objet temps réel

mess 123

mess 3

mess 2

mess 1

methC()

Autresobjetstempsréel

Figure 5.10. Objet temps réel et Contrôleur global d’ACCORD.

Dans le cas où un message ne peut être traité dans l'état courant, l'objet doit décider de : a)

laisser le message en attente, b) rejeter le message immédiatement, ou c) abandonner le message avec

renvoi éventuel de valeurs par défaut.

ACCORD effectue un ordonnancement basé sur l'algorithme EDF avec propagation

dynamique des échéances. La répartition des objets temps-réel dans plusieurs espaces d'adressage est

mise en œuvre par des objets "proxy" qui définissent une image virtuelle des objets distants utilisés par

les objets de l'espace d'adressage courant.

5.4.2 DRO

DRO (Distributed Real-Time Object) [Takashio92] est un modèle d'objet actif étendu pour les

applications temps réel dans des systèmes distribués. Sa réalisation se base sur une architecture à meta

niveaux, où les méta-objets sont explicitement séparés des objets du niveau de base. Les méta-objets

offrent un environnement d'exécution aux objets de base et définissent la sémantique de l'exécution.

En modifiant les définitions dans les méta-objets, il est possible changer la sémantique du traitement

des objets de base. Les objets actifs de DRO ont un seul thread.

Un des objectifs importants dans la conception de DRO fut l'introduction des propriétés

meilleur effort (best effort) et souffrance minimale (least suffering) dans le comportement des objets.

L'intérêt pour cette idée vient du fait que dans les systèmes distribués : a) il est impossible de supposer

l'existence d'une horloge globale, b) le temps pris par les communications ne peut être borné, et c) il

est difficile connaître le temps alloué au traitement dans le serveur. D'un autre coté, les notifications

58

Page 59: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

envoyées par un serveur au client, telles que "refusé" ou "avorté", n'arrivent pas nécessairement à

temps, en plus elles peuvent ne jamais arriver, ce qui provoque des fautes temporelles. Les dégâts sont

pires lorsque plusieurs appels sont enchaînés.

Le principe du meilleur effort consiste en une politique d'ordonnancement des tâches dans

laquelle le serveur et le client font au mieux pour que le service demandé soit réalisé dans le temps

disponible. Cela demande au client et au serveur de coopérer pour que les échéances des services

soient respectées.

La souffrance minimale signifie que le client fait au mieux pour maintenir ses opérations et

minimiser les conséquences négatives lorsqu'un service demandé n'aboutit pas. Pour cela, le client doit

être muni d'un mécanisme pour détecter les erreurs temporelles selon son propre critère de jugement.

5.4.2.1 Traitement de messages

Le traitement des messages est fait par le contrôleur dans chaque objet. Il analyse la queue de

messages reçus et construit un ensemble des méthodes permises dans l'état courant. Puis il choisit un

message et démarre son exécution dans le thread de l'objet. Quand l'exécution est finie, le serveur

répète l'opération pour exécuter un autre message.

Dans DRO le comportement générique des objets est modélisé comme une machine à états

finis, appelée automate abstrait d'objet (abstract object automaton), qui change d'état selon les

résultats d'exécution des messages. Les trois séquences d'actions possibles, suivies du traitement des

messages, sont :

a) reçu - accepté - refusé (received-accepted-rejected)

b) reçu - accepté - exécuté - avorté (received-accepted-executed-aborted)

c) reçu - accepté - exécuté - terminé (received-accepted-executed-commited)

• Reçu signifie que le message du client est dans la queue de messages du serveur.

• Accepté signifie que le serveur a lancé l'exécution de la méthode correspondant au message.

• Refusé est la situation où le serveur considère impossible la réalisation du service dans le temps

requis, ou que l'échéance est arrivée pendant que le message était dans la queue.

• Terminé signifie que l'exécution de la méthode a fini normalement.

• Avorté signifie que la date de deadline est arrivée pendant l'exécution de la méthode.

5.4.2.2 Communication entre objets

Les messages entre objets incluent des contraintes de temps. Dans une requête, les clients

expriment des services alternatifs à exécuter selon le temps disponible dans le serveur. Par exemple,

59

Page 60: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

pour un service avec 3 méthodes alternatives, m1, m2 et m3, de temps d'exécutions t1, t2 et t3, le client

fait un appel en spécifiant :

"Si la requête est acceptée, alors si Tr>t1, alors exécute m1 ; sinon si Tr>t2, alors exécute m2 ;

sinon si Tr>t3, alors exécute m3 ; finalement si Tr<t3, alors refuse cette requête"

Tr est le temps disponible pour l'exécution dans le serveur.

Ce type d'appel est appelé invocation polymorphe en temps (time polymorphic invocation)

[Takashio93], et est défini comme:

"AnObjet {T1:<opr1>; …; Tn :<oprn>} (T1 > T2 > … > Tn)"

Avec Ti (i=1, ..., n) sont les contraintes de temps spécifiés par le client pour chaque opération

(méthode) opri

Avec l'information temporelle portée par le message, le serveur choisit la première méthode de

la liste pour laquelle la contrainte de temps peut être satisfaite. Comme normalement la qualité du

résultat d'une méthode est meilleure si la durée est plus grande, la plus grande qualité possible sera

fournie.

Dans le serveur, les méthodes sont caractérisées par leurs temps d'exécution au pire (WCET),

et sont appelées méthodes avec contrainte de temps. Le temps WCET est utilisé pour décider si une

méthode peut être finie ou pas dans le temps disponible. Une routine d'exception est spécifiée pour

chaque méthode avec contraintes de temps qui est déclenchée en cas ou le temps WCET n'est pas

respecté.

5.4.2.3 Le protocole de communication

L'utilisateur construit un protocole de communication fondé sur les primitives envoie/reçoit

(send/receive) de l'envoi de messages asynchrone. Le protocole est défini par un diagramme d'états et

transitions, où les états correspondent aux abstractions des conditions d'exécutions, et où les actions

sont les messages primitifs d'échange. Ces derniers sont les événements qui s'échangent dans la

communication entre deux objets et les accusés de réception correspondants.

5.4.2.4 Meilleur effort et souffrance minimale.

La coopération entre objets que se concrétise par les invocations polymorphes en temps et par

les méthodes avec contraintes de temps, permet au modèle DRO de satisfaire la propriété de meilleur

effort (best effort). La propriété de souffrance minimale (least suffering) est obtenue par le fait que le

60

Page 61: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

client connaît la contrainte de temps la plus grande (T1) dans la requête et peut réagir si la réponse

attendue n'arrive pas à temps.

5.4.2.5 Objets du Meta niveau

Le modèle DRO sépare les objets du meta niveau des objets du niveau de base. Les objets du

meta niveau offrent un contexte d'exécution pour les objets de base et définissent la sémantique de

l'exécution. Les meta objets gèrent les ensembles de méthodes permis et le contrôle du protocole (en

incluant la gestion des contraintes de temps). Pour cela, DRO introduit deux meta objets : le

AbstractStateMeta, qui se charge des ensembles de méthodes permises, et le ProtocolMeta qui définit

et contrôle les protocoles (ASMeta et PMeta respectivement, dans la figure 5.11).

Objet de Base

PWPMeta

Niveau Objet

Niveau Meta

PMeta

Objet de Base

PW

ASMeta

Niveau Objet

Niveau Meta

(a) Client DRO (b) Serveur DRO

Figure 5.11. Structure des objets DRO

La figure 5.11, montre les objets du modèle DRO, et ses relations :

a) L'Objet de Base. C'est un objet actif, avec thread d'exécution, attributs locaux et méthodes. Cet

objet exécute la méthode correspondant au message accepté pour exécution. Cette exécution et les

communications entre objets sont contrôlées par les méta-objets. L'Objet de Base demande à

Pmeta un appel de service ou une réception de réponse (droInvoke(), droReceive()).

b) L'objet ProtocolMeta (PMeta). C'est le méta-objet qui donne la sémantique aux communications

entre objets. Il crée un objet ProtocolWorker (PW) pour chaque message qu'il envoie. Dans le

ProtocolMeta, un objet de base est représenté par son état d'exécution.

c) L'objet AbstractStateMeta (ASMeta). C'est le méta-objet qui gère la queue de messages et

l'ensemble des méthodes permises en se fondant sur l'automate de l'objet (abstract object

automaton). Il contrôle aussi l'activation des objets PW créés par Pmeta pour chaque message

reçu. Dans l'ASMeta l'objet de base est représenté par son acceptation de message et son exécution.

61

Page 62: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

d) L'objet Protocol Worker (PW), est un objet du niveau meta, créée par le méta-objet ProtocolMeta

chaque fois que l'objet fait une requête. Il se charge du contrôle du protocole de la requête et prend

en compte ses contraintes temporelles. Quand PW reçoit une réponse, il la passe à l'Objet de Base

(droReply(), droAck(), droAborted(), droTimeout()). Du coté du serveur, les PW sont créés pour

chaque message reçu, et ils prennent en compte leurs contraintes temporelles.

5.4.3 ROOM et UML for Real-Time.

ROOM (Real-Time Objet Oriented Modeling) est une méthodologie orientée objet développée

par ObjectTime Limited au début des années 90 pour le développement de systèmes temps réel

[Selic92]. ROOM utilise un langage visuel de modélisation avec une sémantique formelle qui permet

la spécification, la visualisation, la documentation et l'automatisation de la construction de systèmes

temps réel, pilotés par événements et potentiellement distribués. Les éléments de base du langage

ROOM sont les acteurs, les ports et les connecteurs (en anglais : actor, port et connectors

respectivement). Les modèles ROOM sont construits avec ces trois éléments plus la description des

comportements des acteurs et leurs interconnexions.

5.4.3.1 Objets Actifs de ROOM

Le principal élément structurel de ROOM est l'acteur, un objet actif responsable d'une

fonction spécifique du système modélisé et qui peut opérer en parallèle avec les autres acteurs. Ils

communiquent à travers des objets d'interface appelés ports qui servent d'intermédiaires entre les

acteurs et leur environnement. De cette manière les acteurs sont indépendants de leur environnement,

permettant l'utilisation d'une même spécification d'acteur dans différents contextes. Les composants de

base de ROOM sont illustrés dans la Figure 5.12.

message

message ports

Acteur Figure 5.12. Acteur, ports et messages dans ROOM.

5.4.3.2 Communication en ROOM

Les acteurs communiquent par envoi de messages synchrones ou asynchrones. Les messages

sont des objets qui sont communiqués entre acteurs à travers les ports. Un événement est signalé

lorsqu'un message arrive à un objet.

62

Page 63: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

La collaboration entre acteurs doit respecter une séquence ordonnée de requêtes et réponses

appelée protocole. Dans un protocole, chaque message consiste en un signal nommé (named signal) et

optionnellement un objet passif (donnée) qui spécifie une ou plusieurs valeurs de paramètres. Chaque

port est un objet qui représente une interface particulière de l'acteur. Les ports sont réalisés comme des

instances de la classe protocole (protocol class), ce qui permet l'utilisation d'une même spécification

de protocole par plusieurs acteurs.

5.4.3.3 Modèles ROOM

Lorsque les acteurs implémentent des fonctionnalités complexes, ils peuvent être décomposés

en fonction d'autres acteurs, chacun responsable d'un sous-ensemble de la fonctionnalité totale. Pour

cela ROOM fournit trois mécanismes de composition appelés binding, layer connection et

containment.

• Binding : sert à modéliser un canal de communication connectant deux ports. Seulement les ports

avec protocoles qui se correspondent peuvent être liés.

• Layer connection : ce sont des relations directes entre acteurs qui ont une relation de dépendance

asymétrique. Par exemple dans une relation client/serveur, le client ne fonctionne pas sans le

serveur, tandis que le serveur fonctionne indépendamment du client. La liaison entre niveaux

(layers) se fait dans des points précis appelés points d'accès au service (service access points,

SAP) du côté client, et points de fourniture de services (service provision points, SPP) du côté des

serveurs. Comme les ports, les SAPs et les SPPs sont des instances de classes de protocole.

• Containment : c'est le mécanisme par lequel les acteurs sont décomposés et exprimés par des

acteurs plus élémentaires.

La figure 5.13 illustre un système informatique composé de 4 acteurs : ordinateur, imprimante,

modem et souris. Ils sont interconnectés à travers des "bindings". Les ports que les bindings

connectent, (parallèle et LPT1, COMX et serial), opèrent avec protocoles compatibles.

ordinateurimprimante

souris

modem

COM1

COM2

LPT1

serial

serial

parallèle

Figure 5.13. Connections entre acteurs.

63

Page 64: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

La figure 5.14 montre l'acteur "ordinateur" décomposé en deux acteurs : "Carte Mère" et

"Carte IDE" connectés comme indiqué pour fournir les fonctionnalités de "ordinateur". La

décomposition peut continuer ensuite en détaillant les composants de "Carte Mère" et "Carte IDE".

La configuration des layer connections et des bindings qui lient les acteurs définit l'ensemble

complet des communications et des relations possibles entre les acteurs d'un système. Cet aspect de

l'architecture identifie explicitement tous les liens de causalité potentielle entre les acteurs.

Le niveau le plus bas de décomposition est appelé machine virtuelle ROOM (ROOM virtual

machine). Il est implémenté par la couche virtuelle du système d'exécution de ObjectTime (ObjecTime

run-time system). La machine virtuelle ROOM fournit des services de communication, de temps avec

des alarmes (timers), de création de threads avec modification de leur priorité.

Carte IDE

COM1

COM2LPT1LPT1

COM1

COM2

Carte mère

BUSs

BUSc

ordinateur

Figure 5.14. Composition d'un acteur.

5.4.3.4 Modélisation du comportement

Pour la modélisation du comportement des acteurs ROOM utilise une variante des machines à

états finis hiérarchiques [Harel87] appelée ROOMcharts. Un événement est déclenché par l'arrivée

d'un message à un port d'un acteur. Selon l'état actuel de l'acteur, le type de signal porté par le

message, et le port par lequel il arrive, l'événement déclenche une transition.

Le traitement des événements est de type exécution totale (run-to-completion10) donc les

messages sont exécutés sans préemption. Cette politique d'exécution oblige les autres messages à

attendre dans une queue pendant qu'un message est en exécution.

Un avantage de cette approche est qu'il n'est pas nécessaire d'avoir des mécanismes de

contrôle de concurrence interne pour le traitement des événements, ce qui simplifie la spécification du

comportement. Par contre, un problème important est l'impossibilité de traiter un message qui arrive

plus tard mais qui doit être exécuté avant celui qui est en cours d'exécution. Ce type de situation

pourrait être évité avec un traitement de message préemptif.

10 Run-to-completion, exécution sans préemption. Un message doit finir son exécution avant que l'exécution du prochain message commence.

64

Page 65: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Dans les ROOMcharts, un état peut être lui-même composé d'une machine à états, ce qui

permet plusieurs niveaux d'abstraction.

La séquence de programme (Detail Level) associée à chaque transition spécifie les actions à

réaliser pendant la transition, telles que l'envoi de messages ou une liste d'instructions.

UML for Real-Time

"UML for Real-Time" (UML-RT) est `la version UML [OMG97] de ROOM dont elle

conserve les concepts.

Les principaux composants de UML-RT sont la Capsule, le Port et le Connector. Ces sont des

stéréotypes11 UML spécifiquement définis pour supporter ROOM.

La Capsule UML correspond à l'acteur de ROOM. Comme dans les acteurs, les capsules sont

des objets actifs qui interagissent avec leur environnement à travers un ou plusieurs ports (Voir figure

5.15 ). La composition structurelle des Capsules est décrite par des diagrammes de collaboration UML

[OMG97].

C

Comme le po

Capsule et son enviro

mécanismes permettan

un rôle particulier. Ell

à l'interface d'une autr

Les connecteu

identifient la relation c

Les fonctions

associées. Des capsule

permettant ainsi la mo

11 Stéréotype est un des modélisation en étendan

apsule

Sous-Capsule

Connecteur

Ports

C1 C2

C3

A

Figure 5.15. Eléments de l'UML for Real-Time.

rt de ROOM, le port UML-RT est un objet qui sert d'intermédiaire entre une

nnement et qui implémente un protocole spécifique. Les ports fournissent des

t aux Capsules d'exporter de multiple interfaces différentes, chacune dédiée à

es fournissent aussi des mécanismes pour connecter une interface d'une Capsule

e.

rs capturent les relations de communication entre les ports des Capsules. Ils

ausale entre capsules connectées directement.

des capsules sont réalisées par des machines à état auxquelles elles sont

s peuvent être construites par la combinaison de sous-capsules qui collaborent,

délisation de structures plus complexes (Voir figure 5.15).

mécanismes d'extension du langage UML qui permet définir des nouveaux éléments de t la sémantique du metamodèle.

65

Page 66: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Le principal avantage de UML-RT est la possibilité d'utiliser le formalisme du langage UML

pour la modélisation de systèmes. De nombreux fournisseurs de logiciels offrent des outils de

développement fondés sur UML. Ces environnements facilitent la conception et le test des systèmes.

66

Page 67: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

6 Architectures Réfléchies à Meta niveaux

Cette section présente les concepts de base de la "réflexion" et des architectures à méta

niveaux. L'architecture d'ARTO est inspirée des idées présentées ci-dessous. D'un côté l'idée d'adapter

le comportement face à l'imprévu à travers un acte de réflexion, et d'un autre côté la séparation claire

apportée par les architectures à méta niveaux permettant de séparer les aspects liés au domaine du

problème de l'utilisateur des aspects liés au contexte d'exécution (concurrence, sécurité, qualité de

service, etc.). Ces deux idées sont des parties importantes dans la conception de l'architecture d'ARTO.

6.1 Architectures Réfléchies

En termes généraux, la réflexion est le processus par lequel un système raisonne et agit sur lui-

même. Dans les systèmes informatiques conventionnels les opérations sont réalisées sur des données

qui représentent des entités existant à l'extérieur du système. Par contre, dans un système réfléchi les

données qui représentent les propres aspects structurels et de calcul du système sont aussi accessibles

et il peut agir sur ces représentations.

Dans le domaine de l'informatique la réflexion est un sujet intéressant par la possibilité qu'elle

offre pour la construction d'applications flexibles et auto modifiables. Par exemple, pendant son

exécution un programme pourrait modifier les mécanismes internes du langage avec lequel il est écrit

afin de gagner en performance. Evidement, ces actions doivent être soigneusement conçues et

réalisées car elles peuvent avoir des conséquences inattendues. Pour que la réflexion soit possible, les

langages doivent permettre l'observation et la modification de leurs aspects implicites tels que la

syntaxe et la sémantique. La figure 6.1 illustre un programme conventionnel (a) et réfléchi (b). Le

programme conventionnel peut seulement agir sur les données représentant les entités du domaine de

l'utilisateur. La réalisation des mécanismes du langage ne lui est pas accessible. Par contre, un

programme réfléchi peut aussi agir sur la réalisations des mécanismes du langage. Le langage contient

des instructions permettant l'accès aux mécanismes internes.

Les systèmes réfléchis dans l'informatique ont été étudiés à partir des travaux de Brian Smith

et ses expériences avec les langages 2-Lisp et 3-Lisp [Smith84]. Postérieurement une forte activité de

recherche a permis d'appliquer la réflexion dans plusieurs domaines, tels que la programmation

flexible [Kiczales91], la programmation concurrente [Matsuoka91], les systèmes distribués [Chiba93],

l'approche objet [Maes87], les systèmes temps réel mous [Honda92], la tolérance aux fautes [Fabre96],

les systèmes d'exploitation [Yokote92] [Stankovic91].

67

Page 68: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Les sections suivantes présentent des concepts et éléments de base des architectures réfléchies.

6.1.1 La réification

La réification est un des processus clés de la réflexion. C'est grâce à elle qu'un aspect

implicite, non exprimé et non accessible d'un programme ou langage, est mis en avant et exprimé de

façon manipulable par le programme. L'aspect réifié est représenté dans le même langage que le

programme (structure de données, procédures, etc.) afin d'être manipulé comme des données

courantes.

réification

réflexion

mécanismeimplicite original

mécanismeimplicite modifié

niveau des mécanismesimplicites du langage

niveau programme modification

Figure 6.2. Réification et réflexion d'un aspect du langage.

Réalisations desmécanismes du

langage.

Entités du domainedu problème de

l'utilisateur

Opérations sur lesdonnées duprogramme

Opérations sur lesréalisations desmécanismes du

langage

(a) (b)

Données duprogramme

représentant lesentités externes

Figure 6.1. Illustration d'un programme conventionnel (a) et d'un réfléchi (b).

68

Page 69: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

La réification est vue souvent comme l'acte complémentaire de la réflexion12. Dans la figure

6.2 un aspect du système devient accessible et modifiable grâce à la réification. Les instructions au

niveau programme modifient l'aspect réifié et par la réflexion l'aspect modifié entre en vigueur dans le

langage.

6.1.2 Connexion causale

Une des propriétés qui doit toujours exister dans les systèmes réfléchis est la "connexion

causale" entre la représentation des aspects réifiés et les aspects qu'elles réifient. Un système est dit

connecté de façon causale (causally connected) à son domaine si les structures internes et le domaine

qu'elles représentent sont liés de telle façon que si un de deux change l'autre est modifié en

concordance. Exprimé autrement, le système doit toujours maintenir la cohérence entre la

représentation et les aspects qu'elle représente [Maes87].

6.1.3 Types de réflexion

Les mécanismes de réflexion ont été classés en deux types principaux selon l'aspect qu'ils

considèrent : la réflexion structurelle et la réflexion comportementale (ou computationelle)

[Malenfant96].

Réflexion structurelle.

La réflexion structurelle est la capacité d'un langage à permettre la réification complète du

programme et des données abstraites qu'il utilise. Elle permet de réifier et manipuler le code.

Potentiellement tout langage interprété a la possibilité de réaliser ce type de réflexion. C'est le cas des

langages comme lisp et smalltalk, parmi d’autres. Dans l'orientation objet, beaucoup de langages sont

compilés et n'ont pas de représentation du code pendant l'exécution. La réflexion structurelle est alors

difficile. Néanmoins les langages orientés objet dont les classes sont de véritables objets facilitent la

réflexion structurelle.

Réflexion comportementale.

Dans la réflexion comportementale, le langage permet la réification complète de sa propre

sémantique et aussi des données qu'il utilise pour exécuter le programme. Ce type de réflexion

manipule le comportement du système de calcul. La manipulation est réalisée en deux phases :

recherche de méthode (method look-up) et exécution du traitement du message (message application).

Dans la première phase, lorsque l'entité de base envoie un message (par exemple, un appel de

méthode) la meta-entité l'intercepte et cherche le traitement au niveau méta à exécuter pour ce

12 Bien que le terme "réflexion" soit utilisé pour représenter la propriété d'un système capable d'agir sur lui- même, il sert aussi à nommer l'acte d'agir sur soi même.

69

Page 70: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

message. Le flux d'exécution se déplace du niveau de base au niveau méta. Dans la deuxième phase

l'entité méta exécute le message et rend le résultat à son entité de base. Le flux d'exécution se déplace

du niveau méta au niveau de base. Des exemples de ce type de réflexion sont OpenC++ [Chiba93] et

Smalltalk80 [Foote89].

6.2 Architectures à méta niveaux

Dans cette architecture, les systèmes sont composés de deux ou plusieurs niveaux : un niveau

base et un ou plusieurs niveaux méta. Le niveau base est destiné à résoudre les problèmes concernant

l'utilisateur. Il offre des mécanismes de programmation avec lesquels une solution (programme) est

construite. D'un autre coté, le niveau méta contient la réalisation des mécanismes du niveau de base.

Lorsque ces réalisations sont accessibles au programme, ce dernier peut agir sur elles et modifier ainsi

la sémantique des mécanismes13. A niveau méta il est possible résoudre des problèmes qui ne sont pas

directement liés au problème de l'utilisateur, comme la sécurité de fonctionnement, la synchronisation,

l’ordonnancement, la concurrence, etc. Il faut aussi noter que dans une architecture à plusieurs

niveaux, un niveau méta peut être le niveau de base pour un autre niveau méta (méta-méta niveau). La

figure 6.3 illustre la relation entre les éléments de chaque niveau dans ce type d'architecture.

Niveau base

Niveau meta

Niveau meta meta

Solution au problèmede l'utilisateur

Réalisation des méca-nismes du niveau base

Réalisation des méca-nismes du niveau meta

metaobjets

Figure 6.3. Architecture à Méta niveaux.

6.3 Architectures à méta-niveaux orientées objet.

Dans une architecture fondée sur l'approche objet, les composants de tous les niveaux sont des

objets. Ceux qui représentent et réalisent les aspects structurels et de calcul des objets de base, sont

appelés méta-objets. Les aspects structurels décrivent la manière dont sont construits et liés les objets

ou groupes d'objets dans le niveau de base. Les aspects de calcul décrivent comme les méta-objets

13 Cette possibilité à donné lieu à un important domaine de l'informatique connu comme les systèmes ouverts ou open systems [Kiszales92].

70

Page 71: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

représentent et réalisent les traitements des objets de base. Dans la figure 6.3 les méta-objets sont

indiqués dans les niveaux méta et méta-méta.

La relation entre les méta-objets et les objets qu'ils représentent peut être un à un ou plusieurs

à un (voir figure 6.4 ). Néanmoins les méta-objets doivent être uniques pour un objet de base, c'est à

dire, ils ne sont pas partagés. Lorsque la relation est plusieurs à un chaque méta-objet peut se charger

d'un aspect particulier de l'objet [McAffer95].

Les critères que les méta-objets doivent satisfaire, et qui les distinguent des autres objets du

niveau méta, sont [Matsuoka91] :

MO MO MO

O

MO

O

(a) (b) Figure 6.4. Relations (a) un à un, et (b) plusieurs à un, entre objets et méta-objets.

a) L'identification des méta-objets. Un objet de base doit identifier ses méta-objets d'une façon

intrinsèque (unique et directe).

b) L'unicité de la dénotation du méta-objet. Les méta-objets doivent être capables d'identifier

l'objet de base qu'ils dénotent d'une façon intrinsèque.

c) La connexion causale. Un objet de base et ses méta-objets doivent être connectés de façon

causale. A tout moment la représentation que le méta-objet a de l'objet, doit correspondre à

l'objet, et vice-versa (voir section 6.1.2 ci-dessus).

d) Le contrôle des traitements. Les méta-objets doivent contrôler dynamiquement les traitements

de l'objet qu'ils dénotent ou représentent.

6.4 Réflexion et Orientation Objet

Bien que la réflexion ait été déjà étudiée et explorée dans différents types de langages

(procéduraux, basé logique et basé règles) ce fut le langage 3-KRS [Maes87] une des premières

réalisations des systèmes réfléchis dans l'approche objet. Le principal mérite de 3-KRS était de

71

Page 72: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

montrer la puissance des architectures à méta-objets pour réaliser la réflexion. Il à réussi à prouver

quelques propriétés importantes des architectures réfléchies orientées objet :

• séparation claire entre le niveau objet et le niveau réflexion. Chaque objet est lié à un méta-objet et

vice-versa. Les structures contenues dans un objet représentent seulement des informations

concernant l'entité du domaine représenté par l'objet. Par contre, le méta-objet contient les

structures concernant à toute l'information réfléchie de son objet (voir figure 6.5 )

• représentation uniforme. Toutes les entités dans 3-KRS sont des objets : instances, classes, slots,

méthodes, méta-objets, messages, etc. Par conséquent tout aspect du langage peut être réfléchi.

• auto-représentation complète. Les méta-objets contiennent toute l'information qui existe sur les

objets dans 3-KRS. L'interprète du langage est explicite et totalement contenu dans un ensemble

de meta-objets primitives du langage.

• cohérence de l’auto-représentation. Le système complet est construit en utilisant la même

représentation. L'interprète explicite inclus dans les méta-objets est utilisé pour implémenter le

système. Lorsqu'une opération doit être faite sur un objet c'est son méta-objet qui effectue

l'opération. Pour éviter un appel infini aux méta-objets 3-KRS a un interprète implicite qui réalise

le comportement par défaut.

• l'auto représentation peut être modifiée pendant l'exécution. L'auto représentation du système est

explicite, c'est à dire qu'elle est constituée d'objets. Le programme peut la modifier et affectant

ainsi le comportement du système

La figure 6.5

"#5689" contient tou

"John". Comme toutes

la "méthode d'impress

l'imprimante.

<Meta-Object - #5689>

<Object -"John">

Méthode de création Méthode de traitement des messages

Méthode d'héritage

Méthode d'impression

Meta RéférantNom

Meta

Figure 6.5. Un objet et son meta-objet dans 3-KRS [Maes87].

montre le rapport entre un objet et son méta-objet dans 3-KRS. Le méta-objet

tes les informations concernant la réalisation et le comportement de l'objet

ces informations sont explicites, le programme peut les modifier. Par exemple,

ion" peut être modifiée pendant l'exécution lorsqu'un problème est détecté sur

72

Page 73: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

6.4.1 Modèles de réflexion

Dans les langages orientés objet, deux grandes approches ont été identifiées pour réaliser la

réflexion : l'approche à base de méta-objet, et l'approche fondée sur la réification de la communication

[Ferber89].

L'approche à base de méta-objet consiste à établir une connexion entre un objet de base et un

ou plusieurs objets de niveau méta. Deux modèles sont dérivés de cette approche : le modèle méta-

classes et méta-objets.

Modèle méta-classes.

Dans le modèle méta-classes, toute entité est une instance d'une classe. Tant les objets que les

classes sont des instances de classes. Les classes des instances de classes sont aussi appelées

métaclasses [Cointe88]. Dans ce modèle les classes sont les méta-objets, car elles contiennent une

description de la structure et du comportement de ses instances. Lorsqu'un aspect d'une classe est

modifié, ses instances modifient leur structure et leur comportement en conséquence. Dans la figure

6.6 "Classe" est le méta-objet de l'objet, Métaclasse est le méta-objet de Classe, Métamétaclasse est le

méta-objet de Métaclasse, etc.

est instance de

Metametaclasse

Metaclasse

Classe

object

est instance de

est instance de

Figure 6.6. Modèle de réflexion meta-classes.

Il faut noter que ce modèle de réflexion est seulement réalisable dans les langages orienté

objet "purs", tels que Smalltalk-80 [Goldberg83] et CLOS [Bobrow88], dont les classes sont des

objets. Le fait que toutes les instances d'une classe partagent la même définition structurelle et

comportementale peut être un désavantage de ce modèle. Une modification dans une classe affecte

toutes ses instances, ce qui empêche une modification de comportement individuelle.

73

Page 74: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Modèle méta-objets.

Dans ce modèle, les méta-objets sont des objets (instances) d'une classe spécifique

(MetaObject) ou d'une de ses descendantes. La réflexion se produit lorsque les méta-objets

interceptent les messages envoyés à leurs objets. Ils traitent les messages avant de les passer aux

objets. Dans cette approche chaque méta-objet peut être connecté à un ou plusieurs objets, et chaque

objet peut se lier avec plusieurs méta-objets pendant son cycle de vie (un seul à la fois). Normalement

la liaison objet méta-objet est faite par une variable dont la valeur peut être facilement modifiée.

Néanmoins, dans la plupart des réalisations la connexion se limite à un objet et un méta-objet

seulement. Des exemples de ce type de modèle sont OpenC++ [Chiba93] et ABCL-R [Masuhara92].

Le principal avantage de ce modèle est la facilité qu'il offre pour spécialiser le comportement

au niveau méta. Il suffit de créer une nouvelle classe de méta-objet à partir d'une classe déjà existante

et de la spécialiser. Le principal désavantage est que le méta-objet connaît le message seulement

lorsque son objet l'a reçu, sans connaître l'expéditeur du message et ne pouvant pas agir en fonction de

son identité.

Modèle fondé sur la réification de la communication.

Cette approche est fondée sur la réification des interactions entre les entités de base. Un des

modèles dans cette approche est le model de réification de messages [Ferber89].

Dans ce modèle les appels de méthode sont réifiés en entités de niveau méta appelées

messages. Les messages réifient les actions qui doivent être faites par les entités de base. Le type d'un

message définit le comportement de niveau méta à réaliser par le message. Ce dernier existe seulement

pendant la durée de l'action qu'il représente. Lorsque l'opération au niveau méta est finie, le message

est détruit. Dans ce modèle les messages n'ont aucun lien avec les entités qui les créent et donc ils ne

peuvent pas accéder à leurs informations. Comme ils sont détruits après la fin de leurs opérations, il

n'est pas non plus possible de maintenir des informations entre messages. Un dernier désavantage de

ce modèle est qu'à chaque appel les messages sont créés et postérieurement détruits, ce qui peut être

indésirable dans des applications dont la prédictibilité temporelle est importante. La figure 6.7 illustre

ce modèle.

Classe dumessage

Instance de

Instance de

messageobjet

Selector:Arguments:Receptor:

messageClasse de

l'objet

Figure 6.7. Modèle fondé sur la réification des messages.

74

Page 75: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

6.4.2 Protocoles à méta-objet (Meta Objects Protocols, MOP)

Les protocoles à méta-objets (meta-object protocols, MOP), étaient définis comme des

interfaces spéciales des langages de programmation donnant à l'utilisateur la possibilité de modifier

leur réalisation et leur comportement [Kiczales91]. Traditionnellement, les langages sont supposés

avoir une sémantique bien définie et fixe. Les développeurs doivent utiliser leurs abstractions comme

des boîtes noires et construire les applications au-dessus d'elles. Il est aussi attendu qu'un langage soit

rigide et immuable pour mieux supporter des réalisations portables, des compilateurs efficaces, etc.

Par contre, le protocole à méta-objet est fondé sur une idée différente : le langage doit être ouvert et

flexible afin de permettre aux utilisateurs de l’adapter à leurs besoins. Cette adaptation serait aussi

possible dynamiquement pendant l'exécution. Un des avantages des protocoles à méta-objets, est que

l'implémentation du langage est conçue comme un programme orienté objet, permettant ainsi

l'utilisation d'une même technique tant pour résoudre le problème de l'utilisateur que pour les actions

d'adaptation du langage.

La figure 6.8, illustre les idées de langage "fermé" et "ouvert". Dans un langage fermé les

programmes sont restreints au modèle objet offert par le langage, lequel peut ou non satisfaire

pleinement les besoins de l'application. Par contre, dans un langage ouvert les implémentations du

langage peuvent être adaptées depuis l'application.

Langage deprogrammation

Boîte Noire(fermé)

Interface duLangage

Niveau de programmationde l'application

Langage deprogrammationBoîte Blanche

(ouvert)

Interface duLangage

Niveau de programmationde l'application

Interface d'accès àl'implémentationdu langage

(a) (b) Figure 6.8. Langage fermé (a), et langage ouvert (b)

6.5 Exemples d'Architectures réfléchies

Quelques exemples de réalisations d'architectures réfléchies orientées objet sont décrits

maintenant. Ils illustrent certaines idées intéressantes pour la conception d'ARTO.

6.5.1 Open C++

Open C++ [Chiba93] est une extension du langage C++ (préprocesseur) qui réalise un modèle

de réflexion basée méta-objet et offre à l'utilisateur deux niveaux d'abstraction :

75

Page 76: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

• le niveau de base, dédié à la programmation traditionnelle en C++, et

• le niveau méta, qui permet de redéfinir certains aspects du modèle de programmation de C++.

Open C++ permet aux programmeurs d’associer une classe de l'application (niveau de base)

avec une classe de méta-objet (niveau méta) et de faire la connexion pour qu'une instance particulière

de la classe de l'application soit réfléchie (soit contrôlée par un méta-objet de la classe méta-objet

correspondante). Tous les méta-objets de Open C++, sont des objets des classes dérivant de la classe

MetaObj (Voir figure 6.9).

Dans Open C++ un objet de base contrôlé par un méta-objet, est appelé un objet réfléchi

(reflective object). La déclaration d'un objet réfléchi en Open C++ prend la forme d'une annotation de

C++. Par exemple la déclaration :

//MOP reflect class X : M;

MetaObj

Classe du metaobjet

metaobjet

Classe de l'objet

objet1 1

Instance de Instance de

Figure 6.9. Classes de l'objet et du méta-objet en Open C++.

signifie que tout objet de la class refl_X est un objet réfléchi qui sera contrôlé par un méta-objet de la

class M.

Les méta-objets contrôlent leurs objets réfléchis en interceptant les appels de méthodes reçus

par leurs objets. Cependant, pour qu'une méthode soit contrôlée par le méta-objet elle doit être

déclarée explicitement comme une méthode reflect en plaçant la directive "//MOP reflect :" avant sa

définition. Dans l'exemple suivant "func()" est déclarée comme une méthode réfléchie.

Class X { Public X(); //MOP reflect : int func(int); private : int p; };

76

Page 77: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

La figure 6.10 illustre le mécanisme de contrôle de Open C++. Lorsqu'une méthode réfléchie

est appelée au niveau de base, l'appel est intercepté et traité au niveau méta par la méthode

Meta_MethodCall. Normalement Meta_MethodCall appelle la méthode invoquée du niveau de base,

mais elle peut aussi réaliser d’autres actions avant et/ou après l'appel. Au moyen de ce mécanisme les

métaobjets redéfinissent la sémantique des appels de méthodes.

L'exécution des méthodes du méta-objet est atomique, c’est à dire, elles s'exécutent

complètement sans être interrompues.

int func(){ . .}

Base-level

Ojbect (refl_X)

void Meta_MethodCall(){printf(….);Meta_HandleMethodCall();

}

metaobject (VerboseMetaObj)

Meta-level

Call

Return

Figure 6.10. Protocole à Méta-objet de Open C++.

6.5.1.1 Systèmes distribués dans Open C++ : la Communauté d'Objets

Open C++ ne supporte pas des applications distribuées. Cependant une plate-forme appelée

Communauté d'Objets (Objects Community) fut proposée pour la réalisation de systèmes distribués,

comme un cadre opérant au dessus de Open C++ [Chiba93]. La principale fonctionnalité de la

Communauté d'Objets est la gestion d'un groupe d'objets distribués sur des machines différentes.

Chaque objet appartient à un processus possédant son propre espace d'adressage et qui communique

avec les autres processus à travers un réseau. Voir Figure 6.11.

metaobjet

objet

communication

Niveau meta

Niveau base

Processus

Processus

Processus

Communauté d'Objets

Figure 6.11. Une Communauté d’Objets en Open C++.

77

Page 78: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

La Communauté d'Objets est réalisée par une bibliothèque de classes de méta-objets qui offre

aux programmeurs les fonctionnalités typiques pour des applications distribuées, et qu'ils peuvent

adapter selon leurs propres besoins. Toutes ces fonctionnalités supplémentaires sont réalisées au

niveau méta. Le programme au niveau de base n'est pas concerné, excepté pour l'extension des appels

de méthode vers le niveau méta.

Les principales capacités des méta-objets dans la communauté d'objets sont :

a) Contrôle de concurrence. Les méta-objets contrôlent la concurrence interne de leurs objets. Ils

peuvent ignorer ou retarder l'exécution d'une méthode jusqu'à ce qu'une condition soit satisfaite.

Les méta-objets peuvent aussi exécuter concurremment plusieurs méthodes de leurs objets.

b) Communication. Les méta-objets communiquent avec d’autres méta-objets d'une même

communauté par des appels de méthodes distantes (remote method call) et par diffusion de

message.

Pour ajouter des capacités de contrôle de concurrence et de communication, une nouvelle

classe, OcCoreMetaObj, descendant de MetaObj à été définie au niveau méta. Toutes les classes qui

réalisent des fonctionnalités de la Communauté d'Objets, héritent de OcCoreMetaObj. Elle définit des

méthodes pour manipuler une communauté d'objets, pour les communications entre objets, pour le

contrôle de la concurrence, etc. Elles réalisent entre autres, les fonctionnalités de : données distribuées

partagées, transactions, appels à méthodes distantes, identificateurs d'objets distants [Chiba93].

Un des aspects intéressants d'Open C++ est qu'il introduit et réalise des mécanismes de

réflexion, particulièrement la réification des appels de méthodes, au niveau du programme. Il n'existe

pas de notion de langage ouvert ou fermé car tout se passe au niveau du programme et les mécanismes

internes du langage ne sont pas concernés. Un des principaux désavantages est le coût en performance

de la solution parce que l'interception de message et le passage du niveau base au méta-niveau est

lourd. Cependant, l'expressivité obtenue justifie le coût de la solution, spécialement pour le cas des

systèmes distribués dont les temps de communication sont importants.

6.5.2 ABCL/R

ABCL/R est un langage de programmation orienté objet concurrent qui possède une

architecture réfléchie fondée sur les méta-objets [Watanabe88]. Il a été développé dans le Département

des Sciences de l'Information de l'Université de Tokio, avec l'intention d'appliquer la réflexion dans le

domaine de la programmation concurrente orientée objet (Object-Oriented Concurrent Programming ,

OOCP). Dans le projet, trois architectures de systèmes réfléchis étaient étudiées, différenciées par la

façon dont les objets de base se lient aux objets des niveaux méta :

– Architecture individuelle : les objets de base possèdent un ou plusieurs méta-objets qui pilotent

leur exécution. L'objet est l'unité du niveau base qui a une connexion causale avec le niveau méta.

78

Page 79: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

– Architecture de groupe : dans cette architecture le comportement collectif d'un groupe d'objets

est représenté par des actions coordonnées d'un groupe d'objets du niveau méta, qui constituent un

metagroup. Le group entier d'objets est l'unité du niveau base, qui a une connexion causale avec le

niveau méta (avec un meta-group). Il n'y a pas des relations particulières entre un objet du niveau

base et tel méta-objet du niveau méta.

– Architecture hybride de groupe : cette architecture est une combinaison des architectures

individuelle et de groupe. Chaque objet a un ou plusieurs méta-objets comme dans l'architecture

individuelle, mais les actions coordonnées d'un groupe d'objets sont contrôlées par un metagroup

du niveau méta. Dans cette architecture, un objet individuel et un groupe d'objets ont des

connexions causales avec le niveau méta.

L'architecture de ABCL/R est de type individuelle donc chaque objet X est lié a un méta-objet

↑X. Les aspects structuraux de l'objet (un ensemble de variables d'état, un ensemble de méthodes, un

évaluateur local, et une queue de messages) sont représentés comme des variables d'état du méta-objet.

Ses aspects traitement (arrivée, réception et acceptation de messages, et exécution de méthode) sont

représentés dans ↑X par de méthodes.

La figure 6.12, illustre la structure des objets et méta-objets en ABCL/R. La réflexion est

réalisée par l'envoi de messages d'un objet à son méta-objet. Ainsi l'objet peut s'informer sur lui-même

ou se modifier à travers des actions de son méta-objet. De la même manière, le méta-objet peut

envoyer des messages à son objet.

Une propriété des architectures réfléchies de type individuel qui les différencie est la relation

d'identité entre un objet et son méta-objet. Deux situations sont possibles selon que le méta-objet a ou

no une identité séparée de l'objet qu'il dénote :

Meta-metaobjet ↑↑X

Xobjet

↑Y:metaobjet de Y

metaobjet ↑X

Y

↑↑Y

Message M

[:message M R S

Variables d'étatet méthodesreprésentant

l'objet Y

Figure 6.12. Structure et communication en objets ABCL/R

79

Page 80: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

a) Identité unifiée : lorsqu'il n'y a pas de séparation d'identité entre l'objet et son méta-objet. Il existe

un seul objet qui peut être vu comme l'objet de base, comme son méta-objet, ou son méta-méta-

objet, etc. L'objet réalise toutes les fonctionnalités.

b) Identité séparée : lorsque le méta-objet a sa propre identité, séparée de celle de l'objet qu'il

dénote.

L'identité des objets ABCL/R est de type unifié. Cependant, l'avantage d'une identité séparée

du méta-objet est la possibilité de changer dynamiquement le méta-objet pour modifier le

comportement de l'objet. Par contre, un des désavantages du modèle d'identité séparée, affectant

particulièrement la concurrence, est le coût de la communication nécessaire pour maintenir la

connexion causale entre l'objet et le méta-objet.

6.5.3 ABCL/R2

ABCL/R2 est un langage avec une architecture hybride, incorporant les propriétés des

architectures basées individuelles et de groupe. Chaque objet a son propre méta-objet comme en

ABCL/R, mais il appartient aussi à un groupe d'objets, qui est contrôlé par un groupe de méta-objets.

La motivation principale pour une architecture hybride est la bonne gestion des ressources partagées.

Dans les systèmes concurrents les ressources telles que processeur, communications, stockage,

dispositifs d'entrée et sortie, etc., sont distribuées et limitées. Cela demande une forte coordination

pour leur gestion et requiert l'existence simultanée des abstractions suivantes au niveau méta :

a) groupes d'objets au niveau méta qui représentent le traitement global,

b) identité des objets au niveau méta pour le contrôle d'objets individuels, et

c) abstraction appropriée des ressources partagées.

Les objets ABCL/R2 appartiennent toujours à un groupe d'objets partageant des ressources. Il

existe alors deux types de tours de réflexion14 : individuelle pour chaque objet, et de méta-groupes

pour chaque groupe.

La tour individuelle de méta-objets, détermine la structure de l'objet et ses méthodes. Par

exemple, une opération réfléchie qui sert à modifier une méthode de l'objet est située dans le domaine

de sa tour de réflexion individuelle.

La tour de groupe et de métagroupes détermine le comportement du groupe de base, en

incluant le traitement des méthodes des objets du groupe. Donc, les opérations qui affectent tous les

membres du groupe, comme l'ordonnancement, sont du domaine de la tour de groupe. La structure et

le traitement d'un groupe esontst définis dans le méta niveau par les objets appelés objets de noyau de

80

Page 81: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

groupe (group kernel objects). Le groupe gère les ressources partagées du groupe par la coordination

entre les méta-objets des objets membres du groupe et les objets du noyau de groupe.

x

↑x

↑↑x

y

↑y

metagen GMgr Eval

G: un groupe

↑G: metagroupe de G

Objets nonréifiés

Tour deréflexionde x

↑↑y

Tour deréflexion dugroupe G

Figure 6.13. Architecture réfléchie hybride de ABCL/R2

La figure 6.13, illustre l'architecture réfléchie hybride de ABCL/R2. Les objets metagen

(metaobject generator), GMgr (group manager) et Eval (evaluator) sont les objets du noyau du

groupe standard. Ils se chargent de la gestion de groupe et leurs principales fonctions sont :

a) Gestionnaire de groupe GMgr : c'est l'objet qui représente et gère le groupe. L'identité du groupe

est celle du manager de groupe, et tous les messages envoyés au groupe arrivent à son manager.

Un nouvel objet appartient au groupe de l'objet qui l'a créé, sauf si un groupe différent est explicité

au moment de la création.

b) Générateur de méta-objet metagen : c'est le méta-objet chargé de la création d'un méta-objet pour

l'objet qui vient d'être créé. Le méta-objet Evaluator envoie un message à metagen avec toutes les

informations nécessaires pour la création du méta-objet. Ce dernier contient : une queue de

messages, un ensemble de méthodes, un ensemble de variables d'état, des références à Evaluateur

et au manager de group, et le mode d'exécution. La réception d'un message M par un objet de

base, correspond à la réception d'un message [:message M R S] par son méta-objet. Le méta-objet

place le message M dans la queue de son objet de base. Le méta-objet cherche une méthode qui

corresponde au premier message de la queue et s'il la trouve, il envoie un message à Evaluateur

pour que ce dernier l'exécute.

c) Evaluateur Eval (evaluator) : Eval est la ressource de calcul partagée par les objets de base

membres d'un groupe. Sa principale fonction est l'évaluation des messages des objets du groupe. Il

interagit avec des autres objets du noyau de groupe et méta-objets pour la gestion du groupe. Il se

charge, par exemple, de l'ordonnancement.

14 Tour de réflexion : le group formé par l'objet - le metaobjet - le metametaobjet - etc. connectés de façon

81

Page 82: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Les principales propriétés du modèle ABCL/R2 peuvent être résumées par :

a) groupes d'objets hétérogènes,

b) méta groupes et tours de réflexion individuelles et de groupe,

c) objets sans réification individuelle. Les ressources partagées ont des représentations au niveau

méta et sont partagées par les objets de base d'un groupe.

causale.

82

Page 83: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

7 Architecture de ARTO

L'architecture des objets ARTO est une architecture réfléchie à méta niveaux avec deux

niveaux15. Son objectif principal est de faciliter la réalisation des mécanismes de gestion de la QoS en

séparant la solution du problème de l'utilisateur du traitement de la QoS. En général tout aspect non

fonctionnel est traité au niveau méta. Voir figure 7.1.

L'approche adoptée pour affronter la gestion de la QoS est l’adaptation des objets aux

variations du contexte d'exécution. La façon de répondre aux requêtes est décidée dynamiquement au

niveau méta. L'adaptabilité est possible principalement grâce au fait que les objets offrent plusieurs

méthodes pour fournir un même service. Le comportement des objets est décidé à niveau méta en

fonction des besoins de QoS et du contexte. Ainsi les objets non seulement peuvent fournir la QoS

attendue, mais aussi la plus grande QoS possible selon le contexte.

Un avantage important de l'architecture est que la solution au problème de l'utilisateur est

indépendante du contexte d'exécution, ce qui lui donne un haut degré de portabilité.

Niveau Méta :traitements des aspectsnon fonctionnels.

QoSComportement

contexte

Niveau Base : solution auproblème de l'utilisateur.

Interactionentre niveaux

Fig. 7.1. Niveaux Base et Méta dans une architecture réfléchie à méta niveaux.

7.1 Niveau de base : les objets

Le niveau base contient les objets qui à travers les méthodes qu'ils apportent et leurs

interactions, réalisent les fonctions nécessaires pour donner solution au problème de l'utilisateur.

7.2 Niveau méta : les méta-objets

A niveau méta, les méta-objets se chargent des aspects non fonctionnels de l'application. Entre

autres, ils prennent en charge la gestion de la QoS et la gestion de la concurrence. Une des fonctions

importantes des méta-objets est le contrôle du comportement des objets de base.

15 Plusieurs niveaux sont possibles, mais deux niveaux semblent être suffisent pour les besoins des objets ARTO.

83

Page 84: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

7.3 Relation Objet - Méta-objet

Dans ARTO chaque objet est associé à un seul méta-objet et vice versa. Leur relation s'établit

au niveau des instances, cela veut dire qu’une instance d'objet est liée à une instance de méta-objet.

Cette relation entre instances offre une grande flexibilité car elle permet un contrôle de comportement

spécifique à chaque objet. De cette façon les objets issus d'une même classe peuvent être contrôlés par

des méta-objets provenant de classes différentes.

La figure 7.2 illustre un exemple de la relation entre classes dans ARTO. La classe d’objets de

base ClasseO_2 est une classe descendant de ClasseO_1. Un objet de la ClasseO_1 est associé avec un

méta-objet de classe ClasseMO_b. Un objet de la classe ClasseO_2, peut avoir un méta-objet de classe

ClasseMO_c ou ClasseMO_e. Enfin, un méta-objet de la classe ClasseMO_c a un méta-objet de la

classe ClasseMO_d.

La figure 7.3 donne un exemple d'instances d'objets et méta-objets et leurs relations.

Supposons que les objets O1' et O1'' sont des instances de la classe ClasseO_1 de la figure 7.2. Alors

ils ont chacun un méta-objet instance de ClasseMO_b. D'un autre coté, si les objets O2' et O2'' sont

deux instances de ClasseO_2 ils peuvent avoir des méta-objets de classe ClasseMO_c ou de

ClasseMO_e.

ClasseO_1

ClasseO_2

ClasseMO_c

ClasseMO_e

ClasseMO_dClasseMO_b

ClasseMO_a

hérite

meta

Figure 7.2. Relation entre classes d'objets et classes de metaobjets.

MOb'

O1'

MOc

O2'

MOe

O2''

Niveau meta

Niveau base

(metaobjets)

(objets)

MOb''

O1''

Figure 7.3. Rapport un-un entre méta-objets et objets dans ARTO.

7.4 Réification

Pour que les méta-objets puissent effectuer leurs activités, le flux de l'exécution doit passer au

niveau méta. Dans ARTO ce passage est réalisé à plusieurs reprises. Il se produit principalement par la

84

Page 85: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

réification de messages, c'est à dire que les messages sont transformés en objets et envoyés aux méta-

objets. Cette technique est similaire à celle mentionnée dans la section 6.4.1 et à celle de

OpenC++[Chiba93]. Ce mécanisme simple offre une grande puissance car il permet aux méta-objets

de prendre le contrôle et de décider de la manière de réaliser les services. En plus, des options sont

offertes avec des actions à exécuter avant et après la réalisation du service.

Dans ARTO la réification de messages agit de la façon suivante. Lorsque l'objet "O1" envoit

un message à l'objet "O2" (pour appeler la méthode "m", par exemple), la requête est traduite par un

appel au service de livraison de messages "send" du méta-objet "MO1" (voir Figure 7.4).

L'activité passe au niveau méta lorsque l'exécution d'un message se termine et le contrôle

revient au méta-objet responsable de l'exécution du message. Les autres fonctions réifiées dans ARTO

sont la création et destruction d’objets.

En comparaison à la réification de messages de OpenC++ [Chiba93], un avantage de la

réification de messages de ARTO est que l'objet est totalement encapsulé par son méta-objet ce qui

augmente son indépendance et en conséquence la modularité et la portabilité de l'application.

O1 O2

O2.m(p)

MO1 MO2

MO1.send(MO2,m,p,...)

Figure 7.4. Réification de messages dans ARTO.

7.5 Réflexion

La réflexion est l'acte complémentaire de la réification. C'est par la réflexion que les décisions

prises au niveau méta sont concrétisées au niveau de base. Dans ARTO le flux de l'exécution revient

au niveau base après que le méta-objet a fini son activité qui normalement est suivie de l'exécution

d'une méthode d'objet.

7.6 Modèle d'exécution

Le modèle d'exécution de ARTO est fondé sur deux types d'objets : un objet actif pour le

méta-objet et un objet passif pour l'objet de base. Les deux objets sont étroitement liés et constituent

l’unité fonctionnelle de base pour construire une application. Un objet ARTO spécial appelé objet

applicatif constitue la racine de l’application et est chargé de sa mise en route.

85

Page 86: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

7.6.1 Les Objets de base

Sauf pour leurs liaisons vers les méta-objets, les objets de base sont des objets passifs normaux

qui contiennent les méthodes qui réalisent les fonctions de l’application. Libérée de tout problème non

fonctionnel, la solution au problème utilisateur s’écrit comme une solution séquentielle normale.

Parmi les propriétés importantes des objets qui déterminent leur comportement, on peut citer :

• Les méthodes qu'ils offrent pour chaque service, et leurs caractéristiques.

• Les états, avec la description des transitions et messages permis dans chaque état

• La dépendance entre objets par les états

7.6.2 Les méta-objets (MOs)

Les méta-objets ARTO sont des objets actifs chargés principalement de contrôler le

comportement des objets de base. Ils contiennent des connaissances sur leur objet, sur le contexte et

les critères et règles qui guident leurs décisions.

Les composants les plus importants des méta-objets ARTO :

• Un thread principal appelé le contrôleur, qui effectue toute l'activité du méta-objet. Sa

fonction principale est de décider du comportement de l'objet de base.

• Plusieurs threads destinés à l'exécution de méthodes. Ils sont gérés par le contrôleur et

peuvent être exécutés concurremment. Le nombre de threads est particulier à chaque

objet.

• Une queue de messages. Les messages qui arrivent son placés dans une queue dont ils

sont ensuite analysés par le contrôleur. La taille de la queue est particulière à chaque

objet.

La figure 7.5 illustre les principaux éléments qui composent l'objet ARTO.

En plus des éléments déjà mentionnés, les MOs contiennent des variables où sont stockées les

informations qu'ils utilisent, et des méthodes qu'ils exécutent.

Qld

ueue poura réceptione messages

Thread de contrôle(contrôleur)

Threads pourl'exécution deméthodes

Objetpassif

ObjetARTO

méta-objet

Figure 7.5. Principaux composants de l'objet actif ARTO.

86

Page 87: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

7.6.3 L'objet Applicatif

L'objet Applicatif est un objet ARTO spécial qui représente l'application et qui est responsable

principalement de la création et du démarrage des objets initiaux que la composent. Il se charge de

fonctionnalités importantes concernant toute l'application. Il est aussi responsable des données

publiques de caractère global qui sont utilisées par les méta-objets.

7.6.4 Messages

Dans ARTO les messages sont le seul moyen de communication entre objets. Entre autres, ils

portent les demandes de services et les besoins de QoS des clients. Au moment où le serveur reçoit un

message, le contrôleur décide son traitement. Bien que la plupart du temps il s'agisse de l'exécution

d'une méthode de l'objet pour satisfaire le service, plusieurs actions sont possibles en fonction du

service demandé, des propriétés du message, du mode de l'application, de l'état de l'objet, du contexte,

des politiques en vigueur, etc. Les propriétés importantes des messages sont décrites plus loin.

La communication de messages est gérée par les méta-objets. Ils reçoivent les messages réifiés

provenant de leurs objets de base et les transmettent aux destinataires. Plusieurs options sont possibles

pour le destinataire du message car le méta-objet peut décider de l'envoyer à un destinataire différent,

à plusieurs destinataires, ou même de ne pas l'envoyer du tout. Toutes ces options sont décidées par le

méta-objet sans l'intervention de son objet.

Le méta-objet client dépose le message dans la queue du méta-objet destinataire et ce dernier

procède à son traitement. Plusieurs options sont aussi possibles du côté du serveur. Le méta-objet peut

décider d'exécuter une méthode de l'objet ou une autre action. Si une réponse est attendue par le client,

elle prend le chemin inverse. La figure 7.6 illustre le parcours d'un message.

O1 O2

MO1 MO2

MO1.send(MO2, m, p,...)

Figure 7.6. Communication de messages dans ARTO.

7.6.5 Les modes de l'application

Les modes de l'application sont des sortes d'états globaux qui servent à représenter les

différentes situations par lesquelles passe le système pendant son exécution. Par exemple, dans un

système de pilotage d'avion, on peut imaginer les modes à_terre, décollage, vol_normal,

87

Page 88: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

vol_turbulent, vol_automatique, vol_manuel, urgence, atterrissage, etc. En plus, dans chaque mode le

système peut passer par des sous modes.

Les modes ont des effets importants sur le comportement des objets, spécifiquement sur leur

façon de traiter les messages. Par exemple, dans le mode à_terre un service de mesure d'altitude peut

être de basse importance ou simplement ne pas être fourni. Cependant, le même service au moment de

l'atterrissage est un service très important qui doit sûrement être garanti. Ainsi chaque situation peut

requérir des traitements différents pour un même service en fonction des besoins particuliers du

système.

L'information sur les modes et leurs effets sur le traitement des messages est une partie

importante de la définition du comportement des objets. Ces informations sont utilisées par les méta-

objets dans le traitement des messages.

88

Page 89: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

8 Réalisation

La réalisation de la solution concerne principalement la conception et la mise en œuvre des

mécanismes pour la gestion de la QoS. Dans ARTO les méta-objets gèrent la QoS à travers

l'adaptation dynamique du comportement des objets face aux variations du contexte. Suite aux

demandes de services, ils décident comment les réaliser en fonction des besoins de QoS, de leurs

propres capacités et des propriétés du contexte d'exécution. Les décisions sont faites au niveau méta

par les méta-objets et réalisées au niveau de base par les objets.

8.1 Niveau de la gestion

Dans le modèle ARTO la gestion de la QoS est située au niveau de la couche de l'application.

Bien que des systèmes de gestion de QoS puissent exister à des niveaux logiciels intermédiaires ou

même du Système d'Exploitation, ARTO ne requiert aucun service additionnel de gestion de QoS.

Il faut préciser que la granularité de la gestion est haute parce qu'à l'intérieur de l'application la

gestion agit au niveau des objets. Voir figure 8.1.

Application Objets ARTO

Gestionnaire intermédiaire

Système d'exploitation

Couche de bas niveau

QoS gérée par les objets

Matériel

Figure 8.1. Gestion de QoS au niveau de l'application dans ARTO.

8.2 QoS gérée par les Méta-objets

Dans ARTO, chaque méta-objet décide de façon indépendante de la QoS fournie par son objet

de base. Cette approche offre une grande flexibilité au modèle parce qu'elle permet d’ajuster la gestion

aux caractéristiques particulières de chacun. Cependant cette politique introduit un problème important

lors du partage de ressources. Des décisions indépendantes conduisent à une utilisation inefficace des

ressources, ce qui a des conséquences négatives sur la QoS. Pour surmonter ce problème une gestion

de type centralisé a été ajoutée au modèle. Il s'agit de la planification de l'utilisation du processeur, la

principale ressource partagée. Elle est réalisée au niveau méta et permet aux méta-objets de gérer le

temps de CPU en fonction des objectifs globaux de l'application. En plus, cette gestion ajoute un point

additionnel de décision pour le contrôle de la QoS.

89

Page 90: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

8.2.1 Connaissances du MO

Pour effectuer leur activité les méta-objets utilisent des informations provenant de différentes

sources. Elles concernent les propriétés de leurs objets, du contexte d'exécution, de l'application elle-

même et d'autres objets. Cette information est une partie des connaissances des méta-objets et est

stockée et mise à jour dynamiquement.

8.2.1.1 Connaissances sur l'Objet

Les caractéristiques des objets dépendent des particularités de chacun mais elles peuvent être

aussi affectées par le contexte dans lequel l’application se déroule. Les informations que le méta-objet

maintient sont en particulier :

• Relation entre Mode, messages et méthodes.

Chaque mode de l'application demande différents traitements de messages qui se concrétisent

normalement par l’exécution d’une méthode. Le méta-objet contient une table où sont stockées des

listes de méthodes pour chaque message dans chaque mode. A partir du mode et du message, il trouve

immédiatement l'ensemble des méthodes qui fournissent le service du message dans le mode. Une liste

vide signifie que le message n'est pas exécutable dans le mode.

• Propriétés des Méthodes

Le méta-objet contient des informations concernant les propriétés de chaque méthode. Il les

utilise afin de choisir la méthode la plus adaptée au service demandé et au contexte. Parmi les

propriétés importantes dans le domaine d'intérêt on peut citer les durées d'exécution et la précision des

résultats.

• Relation entre messages et états de l’objet

Lorsque le comportement d’un objet est défini par une machine à états, les messages doivent

être exécutés dans les états où ils sont permis seulement. Les méta objets connaissent les méthodes

autorisées dans chaque état lorsque les objets ont des états.

• Dépendance d'état entre objets

Les objets dépendant de l'état d'un autre objet doivent être informés de l'état actuel de l'objet

dont ils dépendent. Dans ARTO la communication des états est prise en charge par les méta-objets. Ils

doivent connaître les dépendances entre les objets qu'ils contrôlent afin de communiquer les états.

Cette information et les services de communication d'état correspondants font partie de la

connaissance des méta-objets.

• Compatibilité entre méthodes

L'exécution concurrente de méthodes à l'intérieur de l'objet est contrôlée par les méta-objets.

Le méta-objet stocke les relations de compatibilité entre méthodes car deux méthodes incompatibles

ne doivent pas être exécutées en même temps.

90

Page 91: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

8.2.1.2 Connaissance sur le contexte l’exécution

Le comportement dynamique des applications dépend fortement des propriétés du matériel

informatique et du support logiciel dans lequel elles s'exécutent. Quelques données du matériel tels

que le type et la vitesse de la CPU, la taille de la mémoire, la résolution de la vidéo, peuvent être

connues sans grande difficulté. Du coté système d'exploitation, les aspects tels que la politique

d'exécution des processus, la gestion des timers, le traitement des interruptions influent sur l'aspect

temporel des exécutions. Une connaissance complète et précise du contexte, particulièrement les

caractéristiques dynamiques, est pratiquement impossible à obtenir en raison de l'énorme complexité

des systèmes et de la difficulté à obtenir des informations détaillées concernant son fonctionnement.

Cependant une connaissance au moins élémentaire du contexte matériel et logiciel de base est

nécessaire.

Au début de l'application l'objet applicatif exécute des procédures pour connaître quelques

paramètres liés au support matériel et logiciel dans lesquels l’application se déroule.

8.2.1.3 Informations propres

Le méta-objet connaît aussi les caractéristiques de ses propres activités. Cette connaissance est

importante car l'utilisation des ressources par le méta-objet affecte leur disponibilité et doit être prise

en compte au moment des analyses. Le méta-objet garde des informations concernant les durées de ses

activités d'analyse. Il exécute des mesures au lancement de l'application pour connaître ces valeurs.

8.2.1.4 Informations collectives

Les méta-objets ont besoin d'informations concernant les autres méta-objets et les ressources

partagées. Par exemple, le méta-objet doit savoir quels sont les objets capables de fournir un service.

Pour des applications dans un environnement distribué les informations collectives doivent

inclure aussi des données sur des objets distants.

8.3 Contrôle du comportement de l'objet

Les méta-objets appliquent des politiques locales pour contrôler le comportement des objets

spécialement pour décider du traitement des messages. Par exemple un objet peut choisir les messages

à exécuter selon leur date d’arrivée ou selon leur importance.

Les comportements sont aussi déterminés par les caractéristiques de fonctionnement propres à

chaque objet. Par exemple, lorsqu'un objet a des états, l'exécution des messages est restreinte aux états

dans lesquels ils sont permis.

En général plusieurs facteurs affectent le comportement définitif de l’objet et sont pris en

compte par le méta-objet au moment de décider.

91

Page 92: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

8.3.1 Actions de gestion : sélection de message et de méthode

La gestion de la QoS agit principalement sur deux aspects du traitement des messages : dans le

choix d'une action pour chacun d'eux lorsque le contrôleur analyse les messages, et dans la sélection

de la méthode qui fournira le service, au démarrage de l'exécution.

Plusieurs actions sont possibles pour les messages dans la queue, mais l'exécution du service

demandé est l'objectif principal. La sélection du prochain message à exécuter est une décision qui

dépend principalement de la politique locale de l'objet. D’autres facteurs tels que le mode de

l'application, l'état de l'objet, les propriétés des messages, le contexte, etc. sont aussi pris en compte

par le contrôleur.

La méthode à exécuter pour un message est choisie parmi les méthodes disponibles pour le

service demandé. Elles sont définies dans une table du méta-objet et celles qui satisfont les besoins de

QoS de la requête sont candidates. Cependant celle d'entre elles qui sera effectivement exécutée est

décidé au dernier moment, juste avant de lancer l'exécution. Ce choix permet au méta-objets une

adaptation plus fine au contexte.

8.4 Critère principal de QoS

Pour le domaine du temps réel mou la "réduction des fautes temporelles" a été choisie comme

le critère principal de QoS des objets ARTO. Il faut noter que pour le modèle tous les événements

affectant le système ne sont pas connus à l'avance, et que des fautes temporelles se produiront en

situation de surcharge. Des actions sont prévues dans la conception des objets ARTO pour contrôler la

dégradation qui en résulte.

8.4.1 Contrainte temporelle

Parmi les contraintes temporelles possibles, la date d'échéance des services a été choisie dans

ARTO pour guider les décisions de QoS. Elle a été choisie car elle est une des plus représentative des

contraintes des systèmes temps réel.

Dans le cas où un message est contraint par une date de disponibilité16, le client retient la

requête jusqu'à sa date de disponibilité. De cette façon, tout message qui arrive peut être exécuté

immédiatement.

8.5 Traitement des messages : décisions à deux niveaux

Dans ARTO les décisions sur le traitement de messages sont effectuées dans deux étapes. La

première est réalisée par chaque contrôleur à l'intérieur des objets et concerne principalement les

décisions sur les messages dans la queue. La deuxième étape se situe au niveau global et agit sur tous

les messages de tous les objets choisis pour exécution. Cette activité globale est réalisée par les

16 Date de disponibilité : date à partir de laquelle le message peut être exécuté.

92

Page 93: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

contrôleurs locaux lors d’événements comme le choix d'un message pour exécution ou la fin de la

réalisation d'un service. Les contrôleurs exécutent le même code appelé ordonnanceur lequel est

destiné principalement à planifier l'utilisation de la CPU.

La figure 8.2 illustre les deux niveaux de décisions. Au niveau local chaque objet décide

indépendamment sur le traitement des messages dans sa queue. Au niveau global, l’ordonnanceur gère

l'utilisation de la CPU17.

Décisions locales :traitement desmessages, sélectionde méthodes.

Décisions globales :gestion de tâches.

Couches de support :gestion de processus,du matériel, etc. Système d'exploitation

Ordonnanceur

Figure 8.2. Décisions à deux niveaux.

8.5.1 Messages

Dans ARTO les messages portent les demandes de services et les besoins de QoS des clients.

Au moment où le serveur reçoit un message, le contrôleur décide son traitement. Bien que la plupart

du temps il s'agisse de l'exécution d'une méthode de l'objet pour satisfaire le service, plusieurs actions

sont possibles en fonction du service demandé, des propriétés du message, du mode de l'application,

de l'état de l'objet, du contexte, des politiques en vigueur, etc. Les propriétés importantes des messages

sont décrites dans la suite.

8.5.1.1 Importance

L'importance est un attribut des messages ARTO qui caractérise la valeur relative que

l'exécution du message a pour le système. Cette distinction entre messages sert au contrôleur à faire

des choix par exemple comme politique locale de sélection de messages ou en situation de surcharge.

Cinq valeurs d'importance ont été définies, de la plus haute à la plus base : urgent, garantie, haute,

normal et basse.

• Urgent : ce sont les messages de plus haute importance qui sont normalement envoyés

dans des situations critiques. Ils ont la plus haute priorité d'exécution.

17 Une interaction avec le système d'exploitation est nécessaire afin que les décisions de l'ordonnanceur soient réalisées comme souhaité.

93

Page 94: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

• Garanti : ce sont les messages pour lesquels l'exécution est garantie par le serveur. Le

seul cas où la garantie pourrait être brisée, est par l'exécution d'un message urgent.

• Haute : ce sont les messages avec une importance haute.

• Normal : type de message d'importance normale.

• Basse : réservé aux messages sans contraintes de temps.

8.5.1.2 Paramètres

Les paramètres des messages portent les informations nécessaires pour réaliser la fonction

demandée et aussi celles qui définissent les besoins de QoS de la requête. Parmi ces derniers se

trouvent :

• L'importance

• La date d'échéance

• La qualité souhaitée (précision, ...)

• La périodicité des messages périodiques

• Des actions liées aux événements (par exemple, lorsque l'exécution n'aboutit pas)

• Le type d'exécution accepté

8.5.1.3 Etapes d'un message

A partir du moment où le message arrive au serveur il passe par deux étapes principales :

attente et planification.

a) Attente : étape dans laquelle un message reste dans la queue car le contrôleur ne l'a pas

encore choisi pour exécution. Les raisons par lesquelles le message doit attendre sont très

variées, parmi lesquelles :

• En attente d'un thread libre : si tous les threads de l'objet sont occupés

• Non exécutable dans le mode actuel : si le message n'a pas de méthodes définies pour

son exécution dans le mode actuel de l'application

• Non exécutable dans l'état actuel : si le message n'est pas permis dans l'état actuel de

l'objet

• En attente de ressource : si les ressources requises pour l'exécution du message ne sont

pas disponibles.

• Non compatible avec les méthodes en cours : lorsqu'il existe des conflits entre les

méthodes qui fournissent le service et celles déjà planifiées.

b) Planifié : étape dans laquelle le message a été choisi et planifié pour exécution. Le message

a passé les analyses du contrôleur et il peut être exécuté. Dans cette étape les messages

peuvent passer par différentes situations :

94

Page 95: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

• En attente : si le message est dans le planning, mais son exécution n'a pas encore

démarré.

• Enlevé du planning : si le message a été enlevé du planning pour planifier un message

plus important. Il est déposé dans une queue de messages "enlevés du planning".

• En exécution : si l'exécution d'une méthode associée au message a commencé.

• En attente de retour asynchrone : lorsque la méthode attend l’arrivée d’une réponse.

Le message est refusé si le contrôleur trouve que les conditions actuelles de l'objet et du

contexte ne permettent pas de satisfaire la requête telle que spécifiée par le client. Ce dernier est averti

et doit décider quoi faire avec le message.

Dans tous les cas l'arrivée de la date d'échéance déclenchera une faute temporelle sur le

message correspondant. C'est le client qui doit décider du destin du message.

Si la date d'échéance arrive lorsque le message est en exécution, le client peut décider de

continuer ou de l'arrêter. Dans ce dernier cas, un problème important à résoudre est la récupération des

ressources allouées au message. L'exécution peut continuer si elle ne met pas en danger l'exécution des

prochaines tâches du planning.

Après que le message a été traité par le serveur sa situation peut être :

• Fini sans faute : lorsque l'exécution du message se termine sans faute temporelle

• Date d'échéance dépassée : lorsque la date d'échéance arrive avant que l'exécution du

message soit terminée. L'ordonnanceur peut continuer l'exécution seulement si elle ne met

pas en danger les messages suivants du planning.

La figure 8.3 décrit les états par lesquels un message peut passer. Pour des raisons de clarté

seulement quelques événements sont affichés. Lorsque le message arrive au serveur il est dans l'état

"en attente dans la queue". Ensuite s'il est choisi localement, il est "enlevé de la queue" et peut passer

à "faute" s'il est refusé ou "planifié" s'il est accepté dans le planning. Lorsque le message est dans la

queue sans être planifié et que sa date d'échéance arrive, une faute temporelle se produit et le message

est enlevé de la queue.

Dans le planning le message attend son tour d'exécution. Si pendant l'attente une situation de

surcharge est détectée, l'ordonnanceur peut enlever le message du planning pour loger un message plus

important. Le message passe à l'état "enlevé du planning". Dans cet état il risque de ne pas être

exécuté. Si jamais le temps libre du planning le permet, l'ordonnanceur peut réinsérer le message dans

le planning. Il peut aussi décider de démarrer son exécution à partir de l'état "enlevé du planning" si sa

date d'échéance est la plus proche et le temps libre du planning le permet.

Lorsque l'ordonnanceur démarre l'exécution d'un message il passe à l'état "en exécution".

Pendant l'exécution le message peut changer d'état entre "en exécution" et "en attente, déjà démarré"

95

Page 96: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Planifié

En attentedans laqueue

Enexécution

Enlevédu

Planning

refusé

En attente,déjà

démarré

datedépassée

Fini

Datedépassée

datedépassée

datedépassée

datedépassée

Récupérationde ressources

faute

Datedépassée

Enlevé dela queue

Fini,interrompu

Fini,dépassement

choisilocalement

accepté dans leplanning

Figure 8.3. Etats des messages.

plusieurs fois soit parce qu'un message avec date d'échéance plus proche est démarré ou parce qu'il

doit attendre un événement particulier. Lorsque sa date d'échéance arrive le message peut passer à

l'état "récupération de ressources" ou continuer en "en exécution" ou "en attente, déjà démarré".

Lorsque l'exécution du message se termine sans dépasser la date d'échéance, il passe à l'état "fini".

Tous les messages qui ont passé par l'état "planifié" peuvent être arrêtés suit à l'arrivée des dates

d'échéances. Ils passent à l'état "récupération de ressources".

Si le client décide continuer l'exécution après la date d'échéance dépassée, le message reste en

exécution, mais avec une importance basse, pour ne pas mettre en danger les messages du planning.

Lorsque son exécution finie, il passera à l'état "Fini, dépassement".

8.5.2 Traitement local

L'objectif principal du traitement local est de choisir le message à planifier. Lorsqu’un

message arrive ou un service se termine, le contrôleur commence une analyse de la queue. Tous les

messages passent par l’analyse et à la fin il reste ceux qui sont susceptibles d’être exécutés. Le

96

Page 97: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

contrôleur applique un critère de décision particulier pour choisir un des messages. Bien que les

critères et mécanismes de décision locaux soient particuliers à chaque objet, le processus général de

l'analyse est similaire pour tous.

8.5.2.1 Disponibilité des threads

La première condition à vérifier par le contrôleur est l'existence d’un thread libre. Si tous les

threads sont occupés les messages doivent attendre. Cette situation de blocage peut provoquer des

fautes temporelles, ce qui peut être critique s’il s’agit d’un message urgent. Pour alléger le problème

une idée est d'augmenter le nombre de threads par objet. Cette solution réduit le risque de blocage de

messages par manque de threads mais elle ne l’élimine pas totalement18. Son principal désavantage est

que trop de threads par objet peuvent avoir un effet négatif sur les performances de l'application19.

8.5.2.2 Réservation de threads

L'absence de threads libres pour exécuter les services est un problème grave si c'est un

message urgent qui doit attendre. Une solution basée dans la réservation de threads a été conçue pour

les objets ARTO. Il s'agit de réserver un ou plusieurs threads de l'objet pour l'utilisation exclusive des

messages urgents. Les threads réservés sont seulement affectés aux messages urgents dans le cas où

les threads normaux sont tous pris. Néanmoins la solution définitive au problème n'est pas garantie car

le nombre de threads réservés peut devenir insuffisant. Un désavantage à noter est que les threads

réservés sont des ressources inutilisées si aucun message urgent ne les utilise.

La quantité de threads à réserver est un paramètre qui peut être défini pour chaque objet et qui

peut être modifié dynamiquement par le méta-objet. Ainsi le nombre de threads de réservation peut

être une quantité variable qui dépend des besoins de l'application. Par exemple, il peut être lié au mode

de l'application de telle façon que dans un mode M1 le nombre de threads de réservation soit une

quantité X et dans un mode M2 une quantité Y.

8.5.2.3 Ensemble des méthodes associé à un message

Une table du méta-objet contient une liste de méthodes pour chaque message et pour chaque

mode de l’application. Au début de l’analyse d’un message, le contrôleur construit un ensemble de

méthodes avec toutes les méthodes trouvées dans la table pour le message dans le mode actuel de

l’application, et celles que le méta-objet lui-même peut apporter. Les méthodes sont toutes

susceptibles de fournir le service mais avec des propriétés différentes (durée, précision, etc.). Au fur et

à mesure que l’analyse progresse quelques méthodes peuvent être éliminées de l’ensemble. Si à la fin

de l’analyse il reste au moins une méthode dans l’ensemble, alors le message est candidat à être

planifié.

18 Le nombre de threads peut toujours être insuffisant. 19 Le temps destiné à la gestion des threads peut être important en raison des changements de contexte.

97

Page 98: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

8.5.2.3.1 Satisfaction des contraintes

Les méthodes sélectionnées doivent satisfaire les besoins spécifiés dans la requête. Par

exemple lorsqu'elle spécifie le besoin d'une réponse avec une précision située entre les valeurs

minimales et maximales Pmin et Pmax, la réponse des méthodes choisies doit avoir une précision

située entre ces deux valeurs.

Il faut noter que chaque contrainte ajoute des exigences additionnelles à la sélection et que

plus il y a de contraintes, plus leur satisfaction devient difficile.

8.5.2.3.2 Durée des méthodes

La durée des méthodes est un facteur important qui détermine si le service peut être exécuté ou

non dans le temps libre du processeur. Les contrôleurs peuvent vérifier les durées pour décider si une

méthode est à inclure ou non dans l'ensemble des méthodes. Cependant ils ne refusent pas une

méthode parce que sa durée d'exécution est trop grande. D'abord parce que les durées sont des valeurs

au pire cas20. Les durées réelles seront plus petites à l'exécution. En plus, comme le planning est

construit avec un critère pessimiste pour assurer l'exécution des méthodes au pire des cas, le temps

libre croît normalement à chaque fin d'exécution parce que, en général, tout le temps affecté n'est pas

utilisé. Ainsi, la durée d'une méthode n'est pas un critère pour l'inclusion dans l'ensemble des

méthodes. La décision finale par rapport aux durées est une décision au niveau global prise par

l'ordonnanceur. Néanmoins pour qu'un message soit planifié, il doit avoir au moins une méthode qui

loge dans le planning.

8.5.2.3.3 Méthodes de l'objet

La capacité d'adaptation d'un objet est enrichie fortement par la variété de méthodes qu'il

apporte pour les services qu'il fournit. Dans les objets ARTO la principale expression de cette capacité

est la présence de plusieurs méthodes pour un même service, chacune avec des propriétés de QoS

différentes. Par exemple, un objet peut avoir 3 méthodes pour rendre un même service mais chacune

avec des précisions différentes. Elles peuvent aussi différer sur d'autres propriétés telles que les

ressources utilisées, leurs compatibilités, la qualité de leur réponse, leur durée, etc. Cette propriété

d'offrir plusieurs méthodes de durées différentes pour un même service est appelée time polymorphism

dans DRO [Takashio92].

8.5.2.3.4 Méthodes du méta-objet

Le méta-objet aussi offre des méthodes pour répondre aux requêtes. Par exemple, il peut

calculer une valeur à partir d'une projection sur des valeurs historiques ou encore définir une valeur

par défaut comme réponse à une requête.

20 WCET

98

Page 99: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Ce type de réponse peut être contraint par des spécifications des clients. Par exemple ils

peuvent limiter le nombre de valeurs consécutives calculées de cette façon.

8.5.2.4 Traitement des messages urgents

Les messages urgents sont traités avec une haute priorité. Ils sont immédiatement exécutés dès

qu’ils sont planifiés. Le contrôleur arrête tout message non urgent en exécution et démarre l’exécution

de l’urgent. S’il se trouve qu’un message urgent est déjà en exécution alors celui qui arrive sera

exécuté immédiatement si sa date d'échéance est la plus proche, sinon il doit attendre son tour.

8.5.2.5 Validité du message

Les messages sont bloqués lorsqu'ils n'ont pas de méthodes exécutables dans le mode actuel de

l'application ou dans l'état actuel de l'objet.

Mode de l'application

Pour qu'un message soit exécutable au moins une méthode doit être définie pour le message

dans le mode en cours. Les messages non exécutables restent dans la queue.

Etat de l'objet

Pour les objets associés à des états, le contrôleur vérifie la validité des méthodes dans l'état

actuel. Les messages sans méthodes valides dans l'état ne sont pas exécutables et restent dans la queue.

8.5.2.6 Compatibilité avec les méthodes en cours d’exécution

Le contrôleur analyse la compatibilité des méthodes associées aux messages avec les

méthodes déjà en exécution. Il élimine celles qui ont des problèmes de compatibilité les empêchant de

s’exécuter en même temps.

Comme résultat de l'analyse des messages dans la queue, ne resteront que ceux contenant des

méthodes capables d'être exécutées sans problème.

8.5.2.7 Décision locale

Le contrôleur applique une politique locale particulière pour sélectionner le message qui sera

planifié. Parmi les politiques possibles on peut citer :

• FIFO : le message le plus ancien est choisi.

• Importance : le message avec la plus grande importance est choisi.

• Date d'échéance : le message avec la date d'échéance la plus proche est choisi.

• Durée la plus petite : le message avec la méthode de plus courte durée, est choisi

Toute autre politique de choix est possible et peut être inclue dans le méta-objet. En plus, elles

peuvent être changées dynamiquement en fonction des besoins des objets. A certains moments un

99

Page 100: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

méta-objet peut appliquer une politique P1 et à un autre une autre P2. La politique en vigueur peut

aussi être choisie par exemple en fonction du mode de l'application ou de l'état de l'objet.

Le traitement local peut être visualisé comme une série de "filtres" par lesquels passent les

méthodes associées aux messages. Seulement ceux qui finissent avec au moins une méthode qui

satisfait tous les filtres, sont candidats pour être planifiés. La figure 8.4 montre un schéma du

traitement local visualisé comme un filtrage. L'exemple montre l'analyse du message messagei.

Initialement l'ensemble de méthodes associé au messagei contient 6 méthodes (m1 à m6) capables de

fournir le service. Elles passent par des filtres successifs et quelques-unes sont éliminées. A la fin du

filtrage, deux méthodes, m1 et m5, restent dans l'ensemble, alors messagei peut être exécuté. Après que

tous les messages ont été ainsi traités, le contrôleur choisit l'un d'entre eux et le transfère à

l'ordonnanceur pour le planifier.

Ensemble initialde méthodes

pour messagei

Filtre de validitédans l'état de

l'objet

Filtre de compa-tibilité avecméthodes en

cours d'exécution

Autres filtres

Ensemble finalde méthodes

pour messagei

m4

m1 m2

m3 m5

m6

m4

m1 m2

m5

m4

m1

m5

m1

m5

messagei

messagei

messagei

messagei

Messagescandidats pourêtre planifiés

Figure 8.4. Traitement local vu comme un filtrage.

8.5.3 Traitement global

La deuxième étape du traitement des messages s'effectue au niveau global et concerne des

décisions sur tous les messages choisis par les méta-objets pour exécution. L'objectif principal de cette

étape est de maintenir un plan d'utilisation du processeur pour minimiser le nombre de fautes

100

Page 101: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

temporelles. Un autre objectif des décisions globales est d'augmenter la QoS fournie en fonction du

contexte.

Avant de continuer la description du traitement global, il est nécessaire de faire une brève

réflexion concernant l'optimisation de la QoS dans le cadre du modèle ARTO, afin de mieux

comprendre les choix faits pour le traitement global.

8.5.3.1 Optimisation de la QoS

L'optimisation de la QoS dans le contexte de la gestion dynamique est un problème difficile à

résoudre. D'abord parce que l'information complète concernant les événements et la charge du système

n'est pas disponible à l'avance. Les messages arrivent sans préavis, changent la situation, et rendent

obsolète l'optimisation existante. Ensuite parce que les calculs sont faits sur la base des valeurs des

durées d'exécution de méthodes au pire cas. Les durées réelles seront connues à la fin d'exécution

seulement et peuvent demander une nouvelle optimisation. Enfin parce que le temps processeur

qu'utilise un algorithme d'optimisation peut être inacceptable, spécialement dans des conditions de

surcharge où des décisions rapides sont requises.

8.5.3.2 Une solution par la voie heuristique

Une solution de type heuristique est plus faisable pour le domaine d’application du modèle

ARTO. Bien qu'elle n'assure pas un résultat optimal elle peut donner de bonnes solutions dans des

temps raisonnables. Dans ARTO, l'heuristique qui a été conçue pour guider les décisions globales

prend en compte l'objectif principal de réduire le nombre de fautes temporelles et aussi d'augmenter la

QoS fournie. Le problème n'a pas de solution simple. D'un côté l'exécution de méthodes de courtes

durées pour chaque message favorise la réduction des fautes car cela permet d'exécuter plus de

messages. Néanmoins du côté de la QoS, ces méthodes ne fournissent pas la meilleure qualité21 et les

méthodes de plus longue durée sont souhaitables. Sous un autre aspect, la surcharge complique la

situation car elle provoque des fautes temporelles et brise toute prédictibilité.

La solution heuristique adoptée pour les objets ARTO considère ces aspects et applique les

critères suivants :

• Réduction des fautes : c'est l'objectif principal établi pour le modèle ARTO. Il est le

critère principal qui guide le traitement global des messages.

• Fournir la meilleure qualité : en fonction du contexte au moment de démarrer

l'exécution, la méthode avec la plus grande qualité est choisie.

• Prendre en compte l'importance des messages : face aux surcharges le contrôleur

favorise l'exécution des messages les plus importants.

21 Normalement une méthode de plus grande durée fournit un plus grande qualité.

101

Page 102: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

La solution est décrite dans les points suivants.

8.5.3.3 Planification des exécutions

L'utilisation de la CPU est gérée par les méta-objets. Ils appliquent tous les mêmes critères

pour construire et mettre à jour un planning d'exécution des messages. En plus de la bonne utilisation

de la CPU la planification permet vérifier le respect des dates d'échéance et de détecter le plus tôt

possible les situations de surcharge. La planification concerne seulement les messages que les méta-

objets ont choisi pour exécution. Si le message est accepté, une tâche est créée pour chaque message

en l'associant à un thread qui exécutera la méthode correspondante22.

8.5.3.4 Ordonnancement EDF

L'algorithme pour la planification de tâches dans ARTO se base sur le principe "la date

d'échéance la plus proche d'abord". Cet algorithme connu comme Earliest Deadline First ou EDF

[Liu73], à été choisi car il produit un planning optimal en cas de charge normale (lorsque le temps de

CPU disponible est plus grand ou égal au temps requis par toutes les tâches à exécuter). Il est aussi

simple et rapide. Cependant, un désavantage important est qu'il n'est pas optimal en cas de surcharge

et ne peut pas prédire quelles tâches auront des fautes. L'ordonnancement EDF dans ARTO inclut des

décisions pour affronter les surcharges.

8.5.3.5 Ordonnancement sur la base des WCETs

Les durées d'exécution des méthodes sont utilisées pour construire le planning d'utilisation de

la CPU. Ces durées ne sont pas nécessairement toujours les mêmes d'exécution en exécution, car elles

sont fortement dépendantes du contexte. Afin d'assurer qu'une tâche planifiée sera finie dans le temps

alloué, le temps d'exécution utilisé dans le planning est celui "du pire cas" ou WCET, qui correspond à

la plus grande durée constatée dans l'exécution de la méthode dans le contexte.

8.5.3.6 Ordonnancement avec la méthode la plus rapide

Lorsque plusieurs méthodes peuvent exécuter un même service, l'algorithme utilise la méthode

la plus rapide pour planifier le message. Ce choix réduit le nombre de fautes car il permet d'inclure un

plus grand nombre de messages dans le planning. Si la méthode loge le message est planifié. Dans le

cas contraire, une surcharge du planning est détectée et une faute temporelle peut se produire. La

situation est analysée par le contrôleur qui prend une décision.

8.5.3.7 En cas de surcharge : privilégier les messages les plus importants

L'ordonnanceur détecte une situation de surcharge lorsqu'il ne peut pas loger une tâche dans le

planning. Cette situation ne veut pas dire qu'une "vraie" surcharge du système s'est produite ou a été

22 Un thread planifié pour exécuter une méthode est appelée tâche.

102

Page 103: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

détectée, car c'est un problème de planning seulement. De toute façon pour assurer l'exécution des

tâches planifiées, l’ordonnanceur construit le planning sous une approche pessimiste. Face à la

détection de surcharge, le choix des objets ARTO est de privilégier l'exécution des messages les plus

importants. Les contrôleurs enlèvent du planning les messages les moins importants pour libérer du

temps pour planifier les plus importants. Par cette approche, les applications ont une dégradation

contrôlée des services de type gracieux (graceful degradation) qui consiste en la réduction des services

des messages moins importants afin d'exécuter les plus importants.

Il faut préciser que ce choix peut avoir des résultats négatifs sur l'objectif de réduction du

nombre de fautes, car il se peut que plusieurs messages moins importants soient enlevés du planning

pour loger un message important. Néanmoins une analyse complète permettant une décision optimale

sur ce point est trop coûteuse en temps.

8.5.3.8 Exécution de la méthode la plus longe possible

Au moment de démarrer l'exécution d'une tâche, l'ordonnanceur choisit la méthode de plus

grande durée qui loge dans le temps disponible. Ce choix est possible parce que le planning est

construit avec les durées WCET des méthodes. Dans un cas normal, les durées d'exécution réelles sont

inférieures à WCET ce qui libère du temps qui peut être alloué à l'exécution du prochain message.

Il faut noter que les tâches enlevées du planning peuvent être exécutées au cas où le temps

libéré par les tâches exécutées le permet. A chaque fin d'exécution le contrôleur observe la queue de

tâches non planifiées et décide en conséquence. Si le temps disponible le permet et la date d'échéance

de la tâche enlevée est la plus proche alors elle est démarrée.

La figure 8.5 illustre un exemple d'insertion d'une nouvelle tâche dans le planning. Deux cas

sont montrés : l'insertion d'une tâche qui loge et l'insertion d'une qui ne loge pas. Le traitement est fait

au moment tA (temps d'analyse) par le contrôleur responsable de l'exécution du message. Dans 1), le

planning est composé par les tâches A, B, C, D, E, F et G avec des dates d'échéances dans le même

ordre. La date d'échéance (DLN) de la nouvelle tâche N se situe entre les dates d'échéances des tâches

E et F. Alors la tâche N doit être planifiée avant F et après E. Le temps de CPU disponible pour

l'exécution de N, tl, se trouve avant la tâche F. Il correspond à tl = t1+t2+t3. Comme WCETN <= tl, N

peut être planifiée. Pour insérer la tâche N dans l'ordre correct les dates du planning des tâches C, D et

E doivent changer. Le nouveau planning est montré en 2).

103

Page 104: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

A B C D E F G

DLN

Nt1 t2 t3

A B C D E F GNt1

t2'

AB BH CN DG EN FL GNNH

t1 t2

DLM

MH

BH CN DG

EN

FL GNNH

t1'DLM

MH

Taches A et E enlevéesdu planning

tA

tA

tA

tA

1)

2)

3)

4)

AB

'

Figure 8.5. Exemple d'ordonnancement dans ARTO.

Dans 3) c'est la tâche M qui doit être planifiée. Elle a une date d'échéance DLM et le contrôleur

trouve que sa place se situe entre les tâches E et N. Le temps disponible de CPU pour son exécution

est tl' = t1 + t2, lequel est plus petit que WCETM, la durée de M. Le contrôleur détecte alors une

situation de surcharge du planning et fait une analyse basée sur l'importance des tâches. Il analyse les

tâches dont les dates d'échéance se trouvent avant celle de M et dont les importances sont plus basses

que celle de M. L'importance de M est H (high), alors les tâches d'importance B (basse) et N (normale)

sont candidates à sortir du planning, à savoir les tâches A, C et E avec importances respectives B, N et

N (voir figure 8.5). Le contrôleur considère d'abord les tâches d'importance basse. Si le temps qu'elles

libèrent ne suffit pas, le contrôleur continue avec les tâches d'importance normale. Si le temps libéré

par les tâches d'importance basse et normale ne suffit pas, alors la nouvelle tâche n'est pas planifiée.

Dans l'exemple illustré la nouvelle tâche est planifiée car les tâches A et E libèrent un temps suffisant.

Il est évident que la solution heuristique choisie n'assure pas des résultats optimaux pour les

objectifs de réduction de fautes et de maximisation de la qualité fournie. Le fait de privilégier la

planification d'un message important pourrait conduire à la faute de deux ou plus messages moins

importants. C'est le cas de l'insertion de la tâche M de l'exemple de la figure 8.5. D'un autre coté la

maximisation de la qualité d'une réponse par le choix de la méthode de plus longe durée réduit la

chance de planification de messages futurs. En plus, elle peut empêcher l'augmentation de la qualité

des prochains messages.

104

Page 105: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Cependant, le choix a été fait en raison de sa simplicité et rapidité de décision. De toute façon

la solution peut être enrichie.

8.5.3.9 Allocation de la CPU

Un mécanisme d'allocation de la CPU aux threads doit être mis en place. Il dépend fortement

de la façon dont le système d'exploitation gère les processus. Par exemple, pour Windows NT, le

modèle ARTO contrôle l'exécution des threads par une gestion dynamique de priorités23.

8.6 Contrats

L'approche pour traiter les contrats dans ARTO vise la réduction du temps des négociations.

La plupart des accords sont de type implicite, cela veut dire qu'ils sont établis comme politiques

globales de traitement de messages et sont connus par tous les objets. L'avantage de cette approche est

que les négociations ne sont pas nécessaires et l'interaction entre clients et serveurs est réduite. Le cas

des messages garantis est le seul contrat fait par négociation.

8.6.1 Accords implicites

La politique globale de traitement des messages a été conçue pour guider le comportement des

objets afin de fournir la meilleure QoS face à différentes situations. Elle représente les accords

implicites acceptés par les objets.

• Indépendance des serveurs. Le serveur est responsable de l'exécution des services.

Chacun décide indépendamment de la façon d'exécuter les messages qu'il reçoit.

• Critère de QoS. Le critère principal de QoS est la réduction des fautes temporelles. La

date d'échéance des requêtes est la seule contrainte temporelle à prendre en compte.

• Ordre d'exécution. L'ordre d'exécution des messages planifiés se base sur le principe

"la date d'échéance la plus proche d'abord" ou EDF. Cet ordre est brisé seulement

lorsqu'un message urgent arrive et en cas d'attente.

• Messages urgents. Les messages urgents sont planifiés pour exécution immédiate.

Lorsque plusieurs messages urgents sont présents, ils sont exécutés selon la politique

EDF.

• Situation de surcharge. Les messages moins importants sont enlevés du planning pour

faire place aux plus importants. Si la place ainsi libérée ne suffit pas, alors le message

n'est pas planifié.

• Assurance de la QoS minimale. Les services demandés seront fournis au moins avec la

QoS minimale demandée. Une QoS meilleure pourra être fournie selon les conditions au

moment de démarrer l'exécution du service.

23 Dans Windows NT l'ordre d'exécution des threads est déterminé par un système de priorités.

105

Page 106: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

• Construction du planning. Le planning d'utilisation de la CPU est construit sur la base

des durées WCET des méthodes. Pour chaque message l'ordonnanceur planifie

l'exécution de la méthode de plus petite durée parmi celles qui fournissent le service.

• Choix de la méthode à exécuter. Au moment de démarrer l'exécution d'un message

l'ordonnanceur choisit la méthode de plus grande durée qui loge dans le temps disponible

de CPU.

8.6.2 Négociations explicites

Les contrats explicites sont des accords issus des négociations entre clients et serveurs. Dans

ARTO elles sont peu nombreuses afin d'éviter des interactions et réduire le temps de CPU qu'elles

utilisent. En fait le seul cas de contrat est celui des messages garantis, mais d'autres interactions sont

aussi identifiées comme des négociations.

8.6.2.1 Réception de messages

Les clients sont avertis si les besoins de QoS des messages ne peuvent pas être satisfaits par le

serveur. Le client décide s'il modifie les contraintes, annule la requête ou laisse le message tel qu'il est.

8.6.2.2 Messages garantis

Pour les messages garantis le serveur répond au client s'il garantit ou non son exécution. La

réponse est "immédiate" si son exécution ne met pas en danger de faute un message urgent ou garanti

en cours d’exécution. Sinon, le client doit attendre (il peut décider du temps maximum qu'il veut

attendre). Si la réponse est positive le message est planifié et le temps CPU pour son exécution est

alloué. Si la réponse est négative le message ne peut être traité que comme un message normal, et le

client doit décider.

8.6.2.3 Demande d'information

Les informations que les méta-objets stockent peuvent être consultées par les clients. Par

exemple un client peut demander l'état de l'objet ou si un service peut être fourni avant une certaine

date.

8.7 Techniques pour l'adaptabilité

L'adaptabilité des objets ARTO s'effectue par le choix du traitement des messages. Leur

comportement s'exprime par la façon dont ils réagissent aux demandes de service.

8.7.1 Traitement selon le mode

La première forme d'adaptabilité qu'on trouve dans ARTO est liée aux modes de l'application.

A chaque message les objets associent des actions différentes en fonction du mode. Il se peut que dans

106

Page 107: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

un mode M1 un message ait 5 méthodes fournissant le service, dans un mode M2 il ne soit pas

exécutable, et dans un autre mode M3 son exécution soit optionnelle.

L'idée principale de l'adaptation des réponses selon le mode est que l'application puisse

satisfaire aux mieux les besoins du système dans les différentes situations par lesquelles il passe.

Chaque situation a des particularités qui demandent des comportements différents.

8.7.2 Polymorphisme

Une autre forme d'adaptabilité dans ARTO est celle du polymorphisme : plusieurs méthodes

peuvent satisfaire la requête mais avec des propriétés différentes. Pour la réduction des fautes

temporelles, l'existence de méthodes de différentes durées est très utile car cela permet de choisir la

méthode en fonction du temps processeur disponible. Evidement, la qualité fournie est différente selon

la méthode exécutée.

8.7.3 Exécutions spéciales

En plus des méthodes fournies par l'objet, le méta-objet peut mettre en œuvre des mécanismes

d'adaptation à travers le contrôle de l'exécution.

8.7.3.1 Task pair

Les exécutions Task Pair [Streinch95] ont été spécialement conçues pour respecter les

contraintes temporelles des requêtes. Dans ce type d'exécution deux méthodes sont définies : une

méthode principale et une méthode d'urgence. La méthode principale fournit le service demandé et

normalement sa durée au pire cas n'est pas connue ou elle est très grande par rapport à la valeur

moyenne. Une durée appelée optimiste est utilisée pour planifier sont exécution. D'un autre côté la

méthode d'urgence est une méthode spéciale, d'une durée WCET connue et petite, et qui est planifiée

pour être exécutée seulement si la méthode principale ne se termine pas avant la date de début de

l'urgente. Dans le cas où cette situation se produit, la méthode principale est arrêtée et la méthode

d'urgence démarrée. Cette dernière se charge principalement de laisser l'application dans un état

valide. Par contre, si la méthode normale aboutit, la méthode d'urgence est enlevée du planning sans

être exécutée.

Ce type d'exécution est recommandé pour les cas où la durée de la méthode normale n'est pas

connue ou lorsqu'il existe une grande différence entre ses durées optimiste et maximale. Pour sa

réalisation l'ordonnanceur planifie deux tâches : une avec la méthode normale et l'autre avec la

méthode urgente. Les deux tâches doivent loger dans le planning. La méthode d’urgence est planifiée

avec une importance "garantie" et avec la date d'échéance du message, DLM. La méthode normale est

planifiée avec la durée OCETN24

et avec une date d'échéance correspondant à la date d'échéance du

24 OCET : Optimist Case Exécution Time, ou Durée d'Exécution optimiste. C'est la durée d'exécution optimiste connue de la méthode normale. Elle doit être plus petite que WCET.

107

Page 108: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

message moins la durée de la méthode d'urgence, DLM U

M U

- WCET . Si la méthode normale finit avant sa

date d'échéance alors son contrôleur annule l'exécution de la méthode d'urgence. En cas contraire, il

arrête l'exécution de la méthode normale (à la date DL - WCET ) et démarre l'exécution de la

méthode d’urgence. La Figure 8.6 (a) illustre la planification des deux tâches d'une exécution Task

Pair. La Figure 8.6 (b) montre la situation avec d'autres tâches présentes dans le planning.

DLM

DLM-WCETU

mUmN

(a)

DLM

DLM-WCETU

mUmN

(b) Figure 8.6. Planification d'exécution Task Pair.

8.7.3.2 Exécution de type N/M

Le type d'exécution N/M se base sur la possibilité d'exécuter ou non un message, selon une

contrainte spécifiée de type "N fois sur M". Par exemple, si la contrainte dit que le message doit être

exécuté au minimum 2 fois sur 3, le contrôleur a le choix de ne pas l'exécuter une fois sur 3. Il faut

noter que M correspond aux "dernières M fois". Alors, pour décider l'exécution du cas M+1, le

contrôleur doit évaluer ce qui s'est passé dans les derniers M-1 cas.

Ce type d'exécution peut être exprimé de plusieurs façons. Voici quelques exemples :

• Exécuter au minimum N fois sur M

Condition à vérifier : Si dans les derniers M-1 cas le message a été exécuté N fois ou plus,

alors la prochaine exécution peut être omise. Sinon, elle est obligatoire.

• Omettre au maximum N fois sur M

Condition à vérifier : Si dans les derniers M-1 cas l'exécution a été omise N fois, alors la

prochaine exécution est obligatoire.

• Omettre au maximum N fois sur M, avec au maximum X omissions consécutives

Condition à vérifier : Si dans les dernières X fois l'exécution a été omise X fois, alors la

prochaine exécution est obligatoire,

Sinon, si dans les derniers M-1 cas l'exécution a été omise N fois, alors la prochaine exécution

est obligatoire,

Sinon l'exécution suivante peut être omise.

108

Page 109: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Gestion des exécutions type N/M

Les contrôleurs ARTO gèrent ce type d'exécution par l'insertion d'une méthode nulle25 dans

l'ensemble des méthodes. Le contrôleur insère la méthode nulle lorsqu'il trouve que l'exécution peut

être omise. Postérieurement au moment de démarrer l'exécution l'ordonnanceur choisira la méthode de

plus grande durée qui loge dans le temps disponible de CPU. Il choisit la méthode nulle si une vraie

méthode ne loge pas.

En revanche lorsque la contrainte peut être brisée la méthode nulle n'est pas incluse dans

l'ensemble de méthodes et le message est planifié avec une importance garantie pour s'assurer qu'une

vraie méthode sera exécutée.

La figure 8.7 illustre l'utilisation de la méthode nulle pour gérer les exécutions de type "N fois

sur M". Dans le processus de construction de l'ensemble de méthodes pour le message à exécuter, le

contrôleur ajoute la méthode nulle si la contrainte associée à l'exécution "N fois sur M" n'est pas en

danger. Par contre, si elle est en danger, l'ensemble ne contient pas la méthode nulle.

8.7.4 Autres

8.7.4.1 Déléga

Dans un

objets qui s'exéc

lorsqu'un contrôl

Contrainte endanger?O ui N on

Planifier le messageΦ

Construire l'ensemblede méthodes

Ajouter méthodenulle

Figure 8.7. Insertion de la méthode nulle "Φ" dans l'ensemble de

méthodes pour gérer les exécutions de type "N fois sur M".

mécanismes

tion

environnement distribué les objets peuvent demander l'exécution de messages à des

utent sur des machines différentes. La délégation est un mécanisme par lequel,

eur conclut qu'un message ne peut être exécuté dans l'objet, il peut le déléguer à un

109

Page 110: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

objet distant qui peut fournir le service. C'est une option qui peut être utile dans des situations de

surcharge ou lorsque les ressources nécessaires pour exécuter un message ne sont pas disponibles

localement.

La délégation peut être aussi une option de politique locale. Par exemple un objet peut avoir la

politique de délégation de tous les messages de basse importance vers un objet distant.

Pour que la délégation soit réalisable, il faut un mécanisme de communication distante qui

permette de trouver les objets destinataires. L'utilisation des objets "proxys" et des services de

localisation d'objets dans des systèmes distribués tels que Corba ou DCOM, peuvent être utilisés. Afin

que les objets puissent maintenir un contrôle sur leurs décisions de délégation de messages, une

connaissance concernant l'environnement distribué est nécessaire, en particulier les données associées

aux communications.

8.7.4.2 Actions avant et après

Le méta-objet peut exécuter des activités avant et après l’exécution d’un service. Par exemple,

il peut exécuter une méthode qui enregistre certains données, au moment où un message est choisi

pour exécution. De la même façon, il peut enregistrer des données après la fin de l’exécution d’un

message.

8.7.4.3 Réservation de temps de CPU

Les objets peuvent demander à l’ordonnanceur la réservation d’une quantité de ressources de

calcul, c’est à dire, une quantité de temps de CPU. Cette réservation peut être exprimée sous forme de

pourcentage sur un temps donné. Si la réservation est acceptée, l’ordonnanceur tient le compte du

temps CPU utilisé par l’objet pendant le temps de mesure. Ce décompte peut être programmé comme

l’exécution d’une méthode après exécution des messages des objets concernés. Lorsque le temps

processeur manque, l’ordonnanceur prendre en compte la quantité utilisée par les objets pour décider

de l’affectation du temps dans le planning. Si l’objet a utilisé plus de temps que celui qui lui a été

affecté, ses messages ne seront pas privilégiés. Par exemple, la méthode la plus petite sera choisie au

démarrage de l’exécution afin de réduire son pourcentage d’utilisation. Aussi, s’il faut décider entre

deux messages d’importance égale provenant d’objets différents, l’ordonnanceur privilégie le message

de l’objet qui a utilisé moins que son temps réservé de CPU.

25 Une méthode nulle est une méthode de durée 0 et qui ne fait rien.

110

Page 111: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

9 Processus de développement

La construction d'applications avec les objets ARTO comprend deux domaines. D'un coté la

conception de la solution fonctionnelle au problème utilisateur et d'un autre coté la conception des

mécanismes de gestion de la QoS. L’idée pour le développement est de séparer clairement des deux

domaines. L'utilisateur doit se concentrer principalement sur les objets fournissant la solution au

niveau de base. Les méta-objets sont préfabriqués et la principale tâche de l'utilisateur est de leur

fournir les données particulières relatives à leurs objets de base.

9.1 Vision générale du processus de développement

Pour la construction d'applications orientées objets le langage de modélisation UML [OMG97]

est devenu un langage standard. Il permet de développer des solutions à travers des modèles

conceptuels exprimés par un symbolisme graphique. Pour UML il existe de nombreux logiciels de

développement (ROSE de Rational, Rapsody de I-Logix) qui interagissent avec d'autres outils de

développement et qui facilitent la génération de code. Le principe de base est d'utiliser des outils de

plus haut niveau possible afin de faciliter le développement. Des modules additionnels pour des

fonctions spécifiques peuvent être ajoutés si nécessaire. La figure 9.1 montre les principaux éléments

de l'environnement de développement envisagé. Au centre se trouve un AGL pour la construction des

modèles UML de la solution. Le code spécifique des objets (C++) est développé en utilisant un outil

de programmation. Une interaction entre l'AGL et l'outil de programmation permet maintenir une

relation cohérente entre le modèle et le fichier cible.

Toutes les classes de méta-objets sont préfabriquées et disponibles dans une bibliothèque. Le

développeur doit associer une classe de méta-objet à chaque classe d'objet et fournir aux méta-objets

les informations relatives à l'objet. Pour introduire cette information, un ensemble de fenêtres

Outil deprogrammation

(objets)

Fichier cible(C++)

AGL(UML)

BDAGL

Editeurs et outilsFenêtres sur le métaobjet

Etats

Compatibilités

ModesMessagesméthodes

Validationtemporelle

Autres ...

Bibliothèquecible

Figure 9.1. Schéma de l'environnement de développement.

111

Page 112: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

spécifiques à chaque type d'information ou de propriété de l'objet a été conçu : états, compatibilités,

modes/messages, messages/méthodes, etc.

Enfin les interactions entre les différents outils de développement (AGL, Outils de

programmation et Editeurs des méta-objets) doivent être les plus automatiques et simples possible à

utiliser. Un environnement composé de Visual Studio comme outil de programmation et Rose pour

UML avec un "add-in" pour les décorations UML à été testé pour vérifier les idées.

9.2 Modélisation avec UML

La modélisation avec UML comporte la spécification de classes et relations dans différents

types de diagrammes. En particulier la structure du modèle est décrite par le diagramme de classes

(class diagram).

A chaque classe d'objet l'utilisateur doit associer une classe de méta-objet. Les méta-objets

ARTO sont fournis dans une bibliothèque accessible depuis l'AGL. Toutes les classes de méta-objet

ARTO descendent de la classe CRootMetaObject. Les méta-objets basiques disponibles dans ARTO

sont : CRootMetaObject, CMiniMetaObject, CMetaObject et CMetaStateDependent. La figure 9.3

montre la relation d'héritage entre les classes de méta-objets.

Classe_1

Classe_2 Classe_3

Figure 9.2. Diagramme de classes.

Figure 9.3. Cla .

CRootMetaObject

CMiniMetaObject

CMetaObject

CMetaStateDependent

sses des métaobjets dans ARTO

112

Page 113: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Chacune des classes apporte des fonctionnalités au modèle.

• CRootMetaObject : est la classe racine des méta-objets. Elle contient l'identifiant de

l'objet.

• CMiniMetaObject : c'est la classe qui contient tous les composants des méta-objets : les

threads, la queue de messages, l'espace pour les messages envoyés, etc. Elle contient

aussi l'ordonnanceur et la politique de décision locale

• CMetaObject : descendant de CMiniMetaObject, elle contient les mécanismes pour le

filtrage. Dans cette classe sont introduits l'analyse des messages, les tests de

compatibilité, la validité dans le mode et dans l'état, etc. Beaucoup des propriétés des

méta-objets se trouvent dans cette classe.

• CMetaStateDependent : classe descendant de CMetaObject qui contient les services de

communication entre objets dépendants par les états.

Toute autre classe peut être introduite par l'utilisateur comme descendante d'une des classes de

base d'ARTO. Sauf cas particulier, il faut une classe de méta-objet par classe d'objet pour que le méta-

objet puisse stocker toutes les informations spécifiques.

Lorsque l'utilisateur établit une relation entre une classe d'objet et une classe de méta-objet, il

doit fournir les informations relatives à l'objet au méta-objet. Dans l'environnement AGL l'utilisateur

peut y accéder via des fenêtres spécialisées à cet effet. Ces fenêtres lui permettent d'entrer et d'éditer

Classe_1

Classe_2 Classe_3

CMetaObjet

CMetaObject_CCMetaObject_BCMetaObject_A

Figure 9.4. Relation entre classes d'objets et de métaobjets.

113

Page 114: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

les informations qui formeront la base de connaissance du méta-objet. Les durées des méthodes, les

rapports entre mode de l'application messages et méthodes, les compatibilités entre méthodes, etc. sont

introduites directement dans l'environnement de développement. Toutes ces informations sont ajoutées

et sauvegardées avec le modèle. La figure 9.4 montre 3 classes d'objets chacune associée à une classe

de méta-objet. Ces dernières sont toutes descendantes de la classe CMetaObject.

Dans l'environnement pour le développement des applications ARTO, des fenêtres

spécialisées pour chaque type d'information permettent à l'utilisateur d'inclure dans les méta-objets des

données concernant à l'objet et le contexte. Le diagramme d'états est saisi en UML. La figure 9.5

illustre cette idée.

Classe_1

CMetaObjet_A

Etat/méthodes

Modes/messages/méthodes

Compatibilitéentre

méthodes

Politiques

Fenêtres dans l'AGLpour l'édition de la base

de connaissances dumétaobjet

Contexte

Figure 9.5. Fenêtres pour l'édition de la Base de Connaissances des métaobjets.

114

Page 115: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

10 Résultats

Le modèle a été validé par des expériences réalisées avec un prototype qui réalise les

principales fonctionnalités des objets ARTO. L'objectif principal des expériences était de connaître les

effets des différents paramètres et politiques de prise de décision sur la QoS résultante. Les valeurs

mesurées sont le nombre de fautes temporelles et la qualité des services.

Le prototype est un programme écrit en langage C++ dont les classes des méta-objets des

objets sont définies à partir des classes des méta-objets ARTO de base. Une fenêtre d’interaction

permet à l’utilisateur le paramétrage et l’exécution des expériences. D’abord elle permet la création

d’un objet principal qui se charge de créer des objets de test. C’est à travers l’objet principal que

l’utilisateur modifie les paramètres d'exécution (nombre de messages envoyés aux objets, la

distribution des importances parmi les messages, la politique locale, la durée de l’exécution, etc.).

D'autres paramètres tels que le nombre de threads, la durée des méthodes, la longueur de la queue, le

nombre de méthodes par message, etc. doivent être modifiés dans le programme.

Pour tester l’effet du polymorphisme, pour chaque message sont définies trois méthodes avec

des durées WCET de 25, 150 et 400 µs. Leur durée effective est une valeur aléatoire uniformément

distribuée entre WCET/2 et WCET. Les dates d’échéances sont fixées à "now" + 5*WCET +

Uniforme(0..5000 µs) 26.

Les messages qui arrivent sont engendrés par l’objet principal qui les envoie aux objets de test

à raison de X messages chacun. Les dates des envois sont séparées par un temps aléatoire

uniformément distribué entre 3000 et 6000 µs. Le nombre minimum et maximum de X, la quantité de

messages à envoyer, sont fixés par l’utilisateur. Le programme exécute les expériences en

incrémentant X à partir de sa valeur minimale, afin de faire varier la charge. Les messages sont

effectivement envoyés par l’objet principal au moment du premier top d’horloge27 qui arrive après la

date d’envoi calculée aléatoirement (entre 3000 et 6000 µs). Comme la queue est rarement vide

lorsque le système est chargé, en général la loi d’arrivée des messages a peu d’importance.

Les durées d'exécution sont fixées par l’utilisateur à travers une option de la fenêtre

d’interaction du programme. La plupart des expériences étaient réalisées avec une durée de 2000

millisecondes, ce qui produit autour de 400 envois de messages pour chaque valeur de X. Dans toutes

les expériences, les valeurs minimales et maximales de X étaient 6 et 15 respectivement. Le nombre

approximatif de messages envoyés aux objets était 7200 pour X=6 et 18000 pour X=15.

Les résultats donnent les pourcentages de fautes temporelles (tâches ayant dépassé leur

échéance) en fonction de la charge pour différentes configurations (nombre de threads, politiques

locales, etc.). La charge varie entre 50 et 130 % et correspond au rapport entre la durée effective des

26 "now" représente la date actuelle. Uniforme(x..y) est une valeur aléatoire uniformément distribuée entre les valeurs x et y. 27 Le "top d’horloge" est fixé par programme pour se produire toutes les milisecondes.

115

Page 116: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

messages soumis et le temps de CPU disponible. Les résultats montrent aussi les variations de qualité

fournie en fonction de la charge.

10.1 Effet du nombre de threads

Le nombre de threads par objet a un effet important sur le fonctionnement des objets ARTO.

Bien que de nombreux auteurs aient négligé la concurrence intra objet pour ne pas compliquer leur

modèle, la disponibilité de plusieurs threads par objet a un effet favorable dans la réduction des fautes,

spécialement pour les messages urgents. Son influence est spécialement importante dans des situations

où un message arrive avec une date d'échéance plus proche que celle des messages en exécution. Celui

qui arrive risque d'avoir une faute si aucun thread n'est disponible avant qu’il ne soit trop tard pour

démarrer son exécution. Le risque diminue avec un nombre plus grand de threads dans l'objet. Le

graphique de la figure 10.1 montre l’effet du nombre de threads sur les fautes moyennes. Par l’effet du

temps de changement de thread on observe que le nombre de fautes moyennes augment légèrement si

le nombre de threads augmente entre 1 et 4. A partir de 5 à 6 threads par objet les résultats ne changent

pas significativement. Les expériences ont été faites avec une méthode par message et une politique

locale basée sur l’importance (le message plus important est traité d'abord).

Lorsque le nombre de threads augmente, le problème du manque de threads diminue et tous

les messages qui arrivent peuvent passer au traitement global s'ils n'ont pas d'autres empêchements.

Lorsque le système devient plus chargé des messages peuvent être refusés. En raison de la politique

globale qui privilégie l'exécution de messages plus importants en cas de surcharge, les messages

refusés seront plutôt ceux d'importance basse, ce qui ne se voit pas sur ce graphique.

Fautes selon Nombre de Threads

0

5

10

15

20

25

30

70 75 80 85 90 95 100 105 110 115 120

Charge %

Faut

es %

1th 2th

3th 4th

5th 6th

7th 8th

10th 15th

Figure 10.1. Fautes en fonction du nombre de threads.

116

Page 117: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

10.2 Réservation de thread

La réservation de thread a été conçue pour assurer la disponibilité de threads aux messages

urgents. Les threads réservés ne peuvent être utilisés que par les messages urgents et lorsque tous les

autres threads sont occupés.

La figure 10.2 montre les courbes des fautes sans et avec réservation. L’exécution sans

réservation à été faite avec deux threads par objet. Avec réservation, un thread est réservé pour les

messages urgents. Dans les expériences le pourcentage de messages urgents a été augmenté à 40% afin

de mieux visualiser les résultats. L'effet de la réservation d’un thread pour les messages urgents est

clair car il leur assure le passage immédiat à l'exécution. Cependant pour les autres messages les fautes

augmentent avec cette politique car ils ont un thread de moins et les threads qui restent sont partagés

avec les messages urgents.

Fautes sans et avec réservation de thread

0

5

10

15

20

25

30

35

40

45

50

60 70 80 90 100 110 120 130 140

charge

Nom

bre

de fa

utes

Urgent, sans réservation

Urgent, avec réservation

Autres, Sans reservation

Autres, avec réservation

Figure 10.2. Fautes avec et sans réservation de thread.

10.3 Effet de la Politique Locale

Les graphes de la figure 10.3 montrent l’effet des politiques locales sur les fautes pour 3

différents cas de nombre de threads par objet. Les politiques locales testées sont : FIFO, le message le

plus important d’abord, et EDF. Lorsque le nombre de threads est minimum (un thread par objet) la

politique qui produit le moins de fautes est EDF, mais la qualité moyenne est aussi la plus basse

(Figure 10.3a). Cependant, au fur et à mesure que le nombre de threads augmente les politiques locales

ont des résultats plus proches. Avec un grand nombre de threads (10 threads dans la Figure 10.3c) le

système devient pratiquement indépendant des politiques en termes de fautes et de qualité fournie.

117

Page 118: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

1 thread

0

20

40

60

80

100

70 80 90 100 110 120 130 140Charge %

Qua

lité,

Fau

tes

%

Qua,+imp

Qua,FIFO

Qua,EDF

Fautes,+imp

Fautes,FIFO

Fautes,EDF

5 threads

0

20

40

60

80

100

70 80 90 100 110 120 130 140

Charge %

Qua

lité,

Fau

tes

% Qua,+imp

Qua,FIFO

Qua,EDF

Fautes,+imp

Fautes,FIFO

Fautes,EDF

(a) (b)

10 threads

0

20

40

60

80

100

70 80 90 100 110 120 130 140

Charge %

Qua

lité,

Fau

tes

%

Qua,+imp

Qua,FIFO

Qua,EDF

Fautes,+imp

Fautes,FIFO

Fautes,EDF

(c)

Figure 10.3. Qualité et Fautes en fonction des politiques, 1 (a), 5 (b) et 10 (c) threads par objet.

10.4 Politique Locale et Importance des Messages

Les effets des politiques locales sur les fautes selon le type de message (Urgent, Haute et

Normale) sont montrés dans les courbes de la figure 10.4. Pour toutes les politiques locales les

messages urgents ont le moindres de fautes. Le meilleur résultât (moins de fautes) se produit avec une

politique locale dont les messages sont choisis selon le plus important d’abord. La politique FIFO est

la que produit la plus grande quantité de fautes pour tous les types de messages.

118

Page 119: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Fautes selon politique et type de message(5 threads par objet)

0

10

20

30

40

50

60

70 80 90 100 110 120

Charge %

Faut

es

FIFO,Urgent

FIFO,Haute

FIFO, Normal

+imp,Urgent

+imp, Haute

+imp, Normale

EDF, Urgent

EDF, Haute

EDF, Normale

Figure 10.4. Effet de la Politique Locale selon importance des messages.

10.5 Polymorphisme.

Le polymorphisme est une des techniques importantes d’adaptation dans ARTO. Le fait

d’avoir plusieurs méthodes pour rendre le service donne à l'ordonnanceur la possibilité de choisir celle

qui s'adapte le mieux aux conditions de charge du système. Les exécutions ont été faites avec un, deux

et trois méthodes par message, de durées WCET, WCET/2 et WCET/8. La valeur de WCET utilisée

est de 400 µs et pour chaque méthode la durée réelle d’exécution est une valeur tirée au hasard entre

WCET/2 et WCET.

Le polymorphisme a deux effets principaux sur les résultats d'exécution. D'abord il a un effet

sur la qualité fournie car elle dépend de la méthode exécutée. Au fur et à mesure que la charge

augmente les méthodes de plus petite durée sont choisies et la qualité moyenne fournie diminue. Par

contre lorsque le temps de CPU disponible le permet les méthodes de plus grande durée sont exécutées

ce qui produit une plus grande qualité. Le graphe de la figure 10.5(a) montre la dégradation de la

qualité en fonction de la charge. Avec les paramètres d'exécution choisis les courbes ne montrent pas

une grande différence entre les résultats de 2 et 3 méthodes par message.

Un autre effet du polymorphisme s’observe sur le nombre de fautes en fonction de la charge.

Lorsqu'une seule méthode existe pour fournir le service les objets n'ont pas de choix. Si la charge ne

permet pas l’exécution de la méthode ils auront une faute. Cependant, lorsque plusieurs méthodes

existent avec des durées et qualités plus petites, le nombre de fautes peut être diminué pour un même

119

Page 120: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Qualité vs nombre de méthodes par message(5 threads)

70,0

75,0

80,0

85,0

90,0

95,0

100,0

70 80 90 100 110 120 130 140Charge

Qua

lité Qua,1meth

Qua,2meth

Qua,3ùeth

Fautes vs nombre de méthodes par message(5 threads)

0

5

10

15

20

25

30

35

40

45

50

70 80 90 100 110 120 130 140Charge

% d

e Fa

utes

Fautes,1meth

Fautes,2meth

Fautes,3meth

(a) (b)

Figure 10.5. Fautes et Qualité en fonction du nombre de méthodes par message.

niveau de charge. Les méthodes de plus petite durée seront exécutées pour éviter des fautes. Le graphe

de la Figure 10.5 (b) montre les courbes des fautes pour une, deux et trois méthodes par message.

10.6 Polymorphisme et politique locale

Pour une, deux ou trois méthodes par message la politique locale qui produit le minimum de

fautes est toujours EDF. Ce résultat était prévu car la politique globale elle aussi choisit le prochain

message à exécuter selon EDF et toute autre politique locale sera moins adaptée. Comme déjà vu, le

polymorphisme diminue le nombre de fautes pour un même niveau de charge, mais aussi la qualité

Fautes selon politique local et nombre de méthodes(2 threads)

0

5

10

15

20

25

30

35

40

70 80 90 100 110 120 130

Charge

% d

e Fa

utes

+imp, 1meth

FIFO, 1meth

EDF, 1meth

+imp, 2meth

FIFO, 2 meth

EDF, 2meth

+imp, 3meth

FIFO, 3meth

EDF, 3meth

Qualité selon politique local et nombre de méthodes(2 threads)

70,0

75,0

80,0

85,0

90,0

95,0

100,0

70 80 90 100 110 120 130Charge

% d

e Q

ualit

é

+imp, 1meth

FIFO, 1meth

EDF, 1meth

+imp, 2meth

FIFO, 2 meth

EDF, 2meth

+imp, 3meth

FIFO, 3meth

EDF, 3meth

(a) (b)

Figure 10.6. Fautes et Qualité selon la Politique locale et le nombre de méthodes.

120

Page 121: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

fournie. La figure 10.6 contient les courbes des Fautes (a) et de Qualité (b) pour les différentes

politiques locales et nombre de méthodes par message.

10.7 Polymorphisme et importance des messages

La figure 10.7 montre l’effet du polymorphisme sur les messages selon leur importance. Les

messages plus importants ont toujours moins de fautes ce qui est dû à l’effet de la politique globale.

Cependant l’écart entre le nombre de fautes des messages plus importants (urgents) et moins

importants (normaux) diminue avec l'augmentation des méthodes par message.

Fautes; 1 méthode par message

0

2

4

6

8

10

12

14

16

18

20

70 80 90 100 110 120 130Charge %

Faut

es %

H, 1 méthode

N, 1 méthode

U, 1 méthode

Fautes; 2 méthodes par message

0

2

4

6

8

10

12

14

16

18

20

70 80 90 100 110 120 130

Charge %

Faut

es %

H, 2 méthodes

N, 2 méthodes

U, 2 méthodes

(a) (b)

Fautes; 3 méthodes par message

0

2

4

6

8

10

12

14

16

18

20

70 80 90 100 110 120 130Charge %

Faut

es %

H, 3 méthodes

N, 3 méthodes

U, 3 méthodes

(c)

Figure 10.7. Effet du polymorphisme dans les fautes selon l'importance des messages.

121

Page 122: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

11 Conclusions

Dans des contextes d’exécution de plus en plus changeants et imprédictibles les solutions

logicielles traditionnelles semblent ne pas être les plus appropriées. En général elles se basent sur des

analyses statiques qui dépendent fortement de la connaissance du contexte d’exécution et des

événements affectant le système. Cette connaissance est aujourd’hui pratiquement impossible à

obtenir en raison de la complexité croissante des outils informatiques courants (matériels et logiciels).

En plus, les réseaux de communications et les systèmes distribués qu’ils supportent introduisent des

paramètres qui augmentent l’incertitude. Cette situation pose des problèmes si les applications ont des

besoins non fonctionnels qui dépendent du contexte. La qualité des services normalement liée aux

aspects non fonctionnels (précision, temps, périodicité, etc.) devient alors une propriété importante à

maîtriser. Dans les contextes d’exécution modernes, les applications rigides ont du mal à réussir car

elles agissent toujours de la même façon quel que soit le contexte. Dans ce sens une certaine flexibilité

est désirable pour faire face à un contexte trop dynamique. Le modèle proposé dans ce travail suit une

approche dans laquelle le contexte est pris en compte par l’application, et des décisions sont prises

dynamiquement pendant l’exécution afin de maximiser la qualité de service fournie. Il faut noter

cependant que la « maximisation » de la qualité est restreinte seulement au moment des prises de

décision car une maximisation de la qualité basée sur l’optimisation globale est impossible lorsque les

événements futurs ne sont pas connus. En plus le temps qu’une telle optimisation pourrait prendre peut

être prohibitif.

Etant donné le domaine d’application du modèle, le temps réel mou sans connaissance a priori

des événements, le modèle d’exécution a une importance fondamentale. Dans ce type d’applications la

réactivité des objets devient une obligation que le modèle d’objet actif choisi permet. En plus, dans

ARTO elle est augmentée par la possibilité d’avoir plusieurs threads par objet, ce qui s'est montré être

un très bon choix pour la réduction de fautes temporelles28. D’un autre coté l’inclusion des aspects

temporels dans les critères de qualité de service est une approche avantageuse car les autres aspects

non fonctionnels sont traités selon les mêmes principes, ce qui facilite les traitements.

Un des aspects importants dans la conception des objets ARTO était le respect au maximum

des propriétés de l’approche objet. Des principes tels que l’autonomie, la modularité et l'encapsulation,

ont guidé les décisions de conception. Par exemple les objets ARTO sont capables de décider eux-

mêmes leur comportement de façon indépendante, selon leur politique propre. D’un autre coté la

réutilisation, la portabilité, parmi autres, sont facilitées par l’architecture à méta niveaux. Elle permet

une claire séparation des domaines en isolant la solution au problème utilisateur de tous les aspects

non fonctionnels dépendants du contexte. La connaissance que le méta objet a du contexte et des

caractéristiques de l’objet qu’il contrôle (services, états, contraintes, etc.) garantit le meilleur choix de

comportement vis à vis de la dynamique du système.

122

Page 123: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Cependant pour l’utilisation contrôlée des ressources partagées, une gestion centralisée qui

agit au niveau global a été mise en œuvre. Ainsi la principale ressource utilisée par les objets, la CPU,

est gérée par l’ordonnanceur, un traitement global commun qui décide de l’exécution des tâches

lancées par les objets selon un critère EDF29. Ce critère assure le respect des dates d’échéance des

tâches en charge normale30. En cas de surcharge l’ordonnanceur privilégie l’exécution des tâches plus

importantes, contrôlant ainsi la dégradation. Dans le cas extrême seulement les tâches critiques sont

exécutées. Evidemment, la surcharge est une situation indésirable qui peut produire des dommages

dans le système car l’exécution des services avant leur date d’échéance n’est pas assurée. De toute

façon le méta objet est aussi muni de mécanismes d’adaptation qui sont utiles dans des situations de

surcharge tels que l’exécution de type « n fois sur m », réalisée via l’utilisation de méthodes nulles.

Quelles que soient les techniques appliquées par les objets, les situations de surcharge doivent être des

cas exceptionnels et pas la norme, sinon d'autres mesures devraient être considérées. Par exemple,

augmenter la puissance du matériel ou utiliser des systèmes d’exploitation adaptés.

Il faut noter cependant que les possibilités de fournir une bonne qualité de service dépendent

fortement de la richesse de méthodes que les objets apportent pour la réalisation des services. Une plus

grande variété donnerat aux méta objets plus de chances de prendre e une meilleuresdécisions

Un des aspects d’une grand importance et qui affecte directement la bonne performance du

modèle est que les propriétés temporelle des systèmes d’exploitation commerciaux de propos général

sont difficiles à maîtriser, spécialement lorsque la documentation nécessaire n’est pas accessible. De

nombreuses études ont montré que les services liés au temps dans de ce type de systèmes, tels que les

timers ou horloges, sont très peu fiables et que de solutions plus sophistiquées utilisant des services de

très bas niveau (matériel) sont nécessaires pour obtenir une meilleure précision. Sans doute que des

systèmes d’exploitation spécialement conçus pour des applications temps réel sont plus précis et

prédictibles pour les aspects temporels, mais dans ce travail le choix a été d’utiliser des systèmes

commerciaux normaux et de profiter des outils de développement existants. Aussi l’idée était de ne

pas attacher la solution à des systèmes peu accessibles.

En relation avec la construction d’applications ARTO, l’utilisation de langages de type 4GL

même dans une étape encore précoce a permis de vérifier que le choix était correct. Ces outils de

développement offrent aux concepteurs une grande puissance d’expression que facilite la construction

de systèmes complexes, leur documentation, la portabilité, la maintenance, etc. En particulier l'outil

ROSE offre en plus la possibilité d’ajouter des modules plug-ins permettant, par exemple la génération

automatique de code. ROSE permet aussi d'associer de nouvelles fonctionnalités aux événements tels

que le « click » d’un bouton de la souris. Les classes des méta objets sont des descendantes de classes

de base prise dans une bibliothèque. A partir d'informations supplémentaires introduites comme la

28 La réduction de fautes temporelles était le critère de qualité le plus important. 29 EDF, Earliest Deadline First, la tâche avec la date d’échéance la plus proche est exécutée d’abord. 30 Il faut noter que la date d’échéance est la seule contrainte temporelle présente dans le modèle.

123

Page 124: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

durée des méthodes, la compatibilité de méthodes ou la taille de la file d'attente des messages, le code

des méta objets d'une application est engendré automatiquement. Ce type de capacités ouvre une

grande gamme de possibilités qui facilitent énormément la construction d’applications.

Les résultats des expériences avec le prototype montrent que les mécanismes d’adaptation des

objets ARTO leurs permettent effectivement faire face aux changements de contexte d’exécution.

D’un coté les politiques au niveau local leurs permettent de prendre des décisions adéquates pour le

traitement des messages en fonction de critères propres. D’un autre coté le traitement global assure la

bonne utilisation des ressources partagées et ainsi une meilleure qualité de service. Les résultats

permettent d'apprécier la façon dont les différents paramètres affectent le comportement des objets.

Effet du nombre de threads par objet

Le nombre de threads par objet affecte principalement le nombre de fautes. Un seul thread par

objet est trop limité car, s’il est occupé, tout message qui arrive doit attendre la libération du thread

pour avoir la chance d’être exécuté. C’est pour cela que plusieurs threads par objet réduit le nombre de

fautes. Cependant les exécutions ont montré qu’à partir d’un nombre particulier de threads les résultats

sont pareils et qu’une valeur entre trois et cinq semble être suffisante (Figure 10.1).

Effet de la politique locale

La politique locale qui produit le plus petit nombre de fautes est celle qui choisit les messages

selon EDF. C’est un résultat prévu car au niveau global les messages sont exécutés aussi selon EDF.

Les autres critères locaux produisent un nombre de fautes plus grand. Il faut noter que l’effet de la

politique locale est dépendant du nombre de threads par objet. Au fur et à mesure que le nombre de

threads croît le système devient indépendant des politiques locales car tous les messages ont la chance

de passer au traitement global sans attendre dans la queue (Figure 10.3).

Effet de la réservation de threads

La réservation de thread est une bonne technique pour réduire le risque de fautes des messages

urgents. Néanmoins elle peut augmenter les fautes des autres messages et un nombre plus grand de

threads peut être nécessaire pour réduire ce problème.

Effet du polymorphisme

Le polymorphisme est la technique qui donne aux objets ARTO leur grande capacité

d’adaptation. Lorsque plusieurs méthodes sont offertes pour un service, le traitement global peut

choisir la méthode la plus adéquate selon le contexte. La réduction des fautes est effective lorsqu'il y a

plusieurs méthodes par message. Choisir une méthode plus rapide diminue les fautes, mais la QoS

fournie diminue aussi. Cependant le contrôleur global choisit la méthode de plus grande qualité

capable d’être exécutée dans le contexte, ce qui assure la meilleure utilisation des ressources.

Effet de l’importance des messages.

L’importance des messages est prise en compte dans deux situations. Au niveau local lorsque

la politique de choix de message est fondée sur l’importance, et au niveau global lorsqu'un message ne

loge pas dans le planning. Dans la figure 10.4 on peut voir que les messages les plus importants

124

Page 125: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

(Urgents) ont le minimum de fautes (presque zéro) lorsque la politique locale est basée sur

l’importance. C’est la conséquence du double effet de choisir le plus important d’abord au niveau

global et de privilégier les messages les plus importants en cas de surcharge. De toute façon pour les

autres politiques locales on observe aussi que les messages plus importants ont moins de fautes que les

moins importants, ce qui montre l’effet de la politique globale en cas de surcharge.

Travaux futurs envisagés

Plusieurs travaux peuvent être dérivés à partir du modèle ARTO tel qu’il est aujourd’hui. Des

travaux sont possibles pour compléter des idées déjà présentées dans ce document, pour ajouter des

nouvelles idées ou pour ouvrir des nouveaux domaines d’application.

Parmi les mécanismes d’adaptation au niveau méta qui peuvent être réalisés :

• L’exécution de type « task-pair »

• L’exécution de type « n fois sur m »

• Les réponses calculées à partir de l’historique (valeur moyenne des dernières N valeurs,

valeur estimée, etc.)

Il est aussi possible d'ajouter des mécanismes pour négocier l’utilisation de ressources :

• la réservation de temps CPU par les objets

• l’allocation de temps CPU basée sur un pourcentage d'utilisation maximum par quantum de temps.

Il faut des mécanismes de contrôle pour garantir le respect de ce type d’accords.

Des exécutions avant et après

Le méta objet peut exécuter des méthodes avant et après la réalisation des services. Bien que

cette capacité soit déjà inclue dans le prototype ARTO, elle n’a pas été essayée. Elle serait utile par

exemple, pour la sauvegarde des valeurs historiques à utiliser dans des réponses calculées par le méta

objet.

Appels enchaînés

Un sujet difficile à traiter mais qu’il est nécessaire de résoudre est le calcul de temps et la

propagation de contraintes liées aux appels enchaînés. C’est un problème complexe dont la discussion

a déjà commencé mais aucune solution n’a été encore envisagée.

Environnement de développement

En relation à l’environnement de développement, de nombreuses possibilités sont ouvertes.

D’abord la génération automatique de code peut être exploitée au maximum, permettant aux

programmeurs se concentrer dans la conception des solutions au plus haut niveau possible.

Ensuite des analyses peuvent être ajoutées dans des modèles exprimés avec ROSE. Par

exemple, des analyses temporelles des appels.

125

Page 126: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

Un autre travail au niveau du cadre de développement est l’expression et l'analyse des besoins

de qualité de service. Des idées ont été déjà initiées pour l’expression des contraintes dans le style

UML [6].

Systèmes distribués

Les systèmes distribués offrent des possibilités intéressantes pour la mise en œuvre des objets

ARTO. D’abord la délégation de message peut être vraiment exploitée dans un environnement

distribué. Cependant plusieurs difficultés doivent être prises en compte, en particulier la localisation

des objets et tous les aspects associés (délais, identification, disponibilité du réseau, etc.).

Le problème de propagation de contraintes est un problème encore plus difficile dans des

environnements distribués, car en plus des temps de communication variables, les temps d’exécution

de méthodes distantes ne sont pas connus localement. La conséquence est que le planning local est

difficile à maîtriser.

Dans le contexte des systèmes distribués il faut sans doute analyser l’utilité que peuvent

apporter les logiciels de gestion d’objets tels que CORBA et DCOM. En plus des travaux ont été déjà

effectués afin d’ajouter à ce type de systèmes des services permettant la construction d’applications

temps réel distribuées.

126

Page 127: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

12 Bibliographie [Blair94] BLAIR G., PAPATHOMAS M., COULSON G. et al. Supporting real-time multimedia behaviour in

open distributed systems: an approach based on synchronous languages. In : ACM Press. Proc. of the second ACM international conference on Multimedia, 1994, San Francisco, USA. New York, NY, USA, 1994, pp. 299-306.

[Brand 98] BRAND S. , NUTT G., BERK T. et al. A dynamic quality of service middleware agent for mediating application resource usage. In : IEEE Computer Society. Proc. of the 19th IEEE Real-time systems symposium, RTSS, december 1998, Madrid, Spain. Washington, DC, USA, 2001, pp. 307-317.

[Bobrow88] BOBROW D., DeMICHEL L., GABRIEL R. et al. Common Lisp object system specification., SIGPLAN Notices, September 1988, vol. 23, n° special issue.

[Burleson 93] BURLESON W., KO J., NIEHAUS D. et al. The Spring scheduling co-processor: a scheduling accelerator. In : Proc. of the International Conference on Computer Design, October 1993, Cambridge, MA, USA, pp. 140-144.

[Campbell 96] CAMPBELL A., AURRECOECHA C., HAUW L. A Survey of QoS architectures. ACM/Sjpringer Verlag Multimedia Systems Journal, Special Issue on QoS Architecture, 1998, vol. 6, n° 3, pp. 167-178.

[Caromel89] CAROMEL D. Service Asynchrony and wait-by-necessity. Journal of object oriented programming, 1989, vol. 2, n° 4, pp. 12-22.

[Carpenter97] CARPENTER B., ROMAN M., VASILATOS N. et al. The RTX real-time subsystem for Windows NT. In : Proc. of the USENIX Windows NT Workshop, (date) 1997, Seattle, Washington, USA, p 33-.

[Chiba93] CHIBA S., MASUDA T. Designing an extensible distributed language with a Meta-Level architecture. In : Proc. of The European Conference on Object Oriented Programming, ECOOP93, july 1993, Kaiserslautern, Germany, pp. 482-501.

[Chiba95] CHIBA S. A metaobject protocol for C++. In : ACM. Proc. of the 10th Annual Conference OOPSLA'95, October 1995, Austin, TX, USA, Vol. 30, pp. 285-299.

[Clark 92] CLARK R.K., JENSEN E.D., REYNOLDS F.D. An architectural overview of the Alpha real-time distributed kernel. In : Proc. of the USENIX Workshop on Microkernel and Other Kernel Architectures, April 1992, Seattle, USA,pp. 127-146.

[Cointe88] COINTE P. A tutorial introduction to metaclass architectures as provided by Class oriented languages. In : Proc. of the International Conference on Fifth Generation Computer Systems, FGCS’88, nov. 1988, Tokyo, Japan, vol.2, pp. 592-608.

[Desfray94] DESFRAY P. Object engineering - the fourth dimension. Paris, France : Addison-Wesley, Masson Editeur, 1994, 230 p.

[Desfray96] DESFRAY P. Modélisation par objets: la fin de la programmation. Paris : Masson, 1996, 360 p. [Fabre96] FABRE J.-C. Systèmes sûrs de fonctionnement : tolérance aux fautes par protocole à méta-objets.

L’objet, 1997, vol. 3, n° 1, pp. 9-28. [Ferber89] FERBER J. Computational reflection in Class based object oriented languages. In : Proc. of

OOPSLA'89, October 1989, New Orleans, LA, USA, pp. 317-326. [Foote89] FOOTE B., JOHNSON R.E. Reflective facilities in SmallTalk80. In : Proc. of OOPSLA'89, october

1989, New Orleans, LA, USA, pp. 327-335. [Furht91] FURHT B., GROSTICK D. et al. Real-time UNIX systems : design and application guide. Boston :

Kluwer Academic Publishers, 1991, 316 p. [Furht93] FURHT B. Real-Time computer systems : current and future trends. In : Proc. of the First IEEE

Workshop on Real-Time Applications, May 1993, New York, USA, pp. 1-6. [Guerraoui95] GUERRAOUI R. Les langages concurrents à objets. Technique et Sciences Informatiques, 1995,

vol. 14, n° 8, pp. 945-973. [Goldberg83] GOLDBERG A., ROBSON D. Smalltalk-80 : the langage and its implementation. Massachusetts,

USA : Addison Wesley Reading, 2nd édition, 1989, 585 p. [Harel87] HAREL D. StateCharts : a visual formalism for complex systems. Science of Computer Programming,

1987, vol. 8, pp. 231-274. [Honda92] HONDA Y., TOKORO M. Soft real-time programming through reflection. In : Proc. of IMSA

Workshop’92, Reflection and Meta-level Architecture, nov. 1992, Tokyo, Japan, pp. 12-23. [ISO93] ISO. The Reference Model of Open Distributed Processing (RM-ODP), ITU-T Recommendations

X.901 to X.904 | ISO/IEC 10746. Genève, ISO, 1984, 40 p. [ISO94] ISO. ITU-T Recommendation X.200 | ISO/IEC 7498-1 : Information technology - Open Systems

Interconnection - Basic Reference Model : The Basic Model. Genève, ISO, 1994, 59 p.

127

Page 128: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

[ISO95] ISO. ITU-T Recommendation X.902 | ISO/IEC 10746-2 : Information technology - Open Distribution Processing - Reference model: Foundations. Genève, ISO, 1996, 20 p.

[ISO97] ISO. ITU-T Recommendation X.641 | ISO/IEC 13236 : Information technology - Quality of Service - Framework. Genève, ISO, 1998, 48 p.

[Jensen85] JENSEN E.D., LOCKE C.D., TOKUDA H. A time-value driven scheduling model for real-time operating systems. In : IEEE. Proc. of the Symposium on Real-Time Systems, November 1985, San Diego, CA, USA, pp. 112-122.

[Jones98] JONES M.B., REGEHR J. Problems you’re having may not be the problems you think you’re having : results from a latency study of windows NT. In : Proc. of the 5th IEEE Real-Time Technology and Applications Symposium – RTAS’99, june 1999, Vancouver, BC, CA, pp. 287-292.

[Kiczales91] KICZALES G. The Art of MOP. MIT Press, 1991, 335 p. [Kiczales92] KICZALES G. Towards a new model of abstraction in software engineering. In : Proc. of the

International Workshop on Object Orientation in Operating Systems, octobre 1992, Palo Alto, CA, USA, pp. 127-128.

[Lee98] LEE C., SIEWIOREK D. An approach for quality of service management. CMU-CS-98-165. Pittsburgh, PA, USA : School of Computer Sciences, Carnegie Mellon University, 1998, 30 p.

[Leslie97] LESLIE I., McAULEY D., BLACK, R. et al. The design and implementation of an operating system to support multimedia distributed applications. IEEE Journal on Selected Areas in Communications, 1996, vol. 14, n° 7, pp. 1280-1296.

[Lin98] LIN C., CHU H., NAHRSTEDT K. A soft real-time scheduling server on the Windows NT. In : Proc. of the 2nd USENIX Windows NT Symposium, August 3-5 1998, Berkeley, CA, USA, pp. 149-156.

[Liu73] LIU C.L., LAYLAND J.W. Scheduling algorithms for multiprogramming in a hard real-time environnement. Journal of the association for computing machinery, 2000, Vol. 20, N° 1, pp. 46-61.

[Locke86] LOCKE C.D. Best-Effort decision making for real-time scheduling. Ph.D. Thesis. Pittsburgh, PA, USA : Carnegie-Mellon University, 1986.

[Maes87] MAES P. Concepts and experiments in computational reflection. In : Proc. of the OOPSLA’87, 1987, Orlando, FL, USA, pp. 147-155.

[Malenfant96] MALENFANT J., JACQUES M., DEMERS F.N. A tutorial on behavioral reflection and its implementation. In : Actes de la première conférence internationale, Reflection'96, avril 1996, San Francisco, CA, USA, pp. 1-20.

[Masuhara92] MASUHARA H., MATSUOKA S., WATANABE T. et al. Object-Oriented concurrent reflective languages can be implemented efficently. In : Proc. of OOPSLA'92, October 1992, Vancouver, BC, CA, pp. 127-144.

[Matsuoka91] MATSUOKA S., WATANABE T., ICHISUGI Y. et al. Object-Oriented concurrent reflective architectures. In : Proc. of the ECOOP Workshop on Object-Based Concurrent Computing, July 1991, Geneva, Switzerland, pp. 211-226.

[McAffer] McAFFER J. Meta-Level programming with CodA. In : Proc. of the 9th European Conference on Object-Oriented Programming, ECOOP'95, august 1995, Aarhus, Denmark, p 190-214.

[Meyer92] MEYER B. Applying design by contrat. IEEE Computer, 1992, vol. 25, n° 10, pp. 40-51. [Miller 96] MILLER F., LAM H-M., MEI X., et al. Practical Experience with a smoothing algorithm for video

streaming. In : Proc. of the 7th International Workshop on Network and Operating System Support for Digital Audio and Video, may 1997, St. Louis, MO, USA, pp. 207-213.

[OMG97] OBJECT MANAGEMENT GROUP. Unified Modeling Language v. 1.1. OMG document ad/97-08-11 [en ligne]. August 1997. Disponible sur : http://www.omg.org/uml/ (consulté le 26.04.2001).

[Rajku 97] RAJKUMAR R., LEE C., LEHOCZKY J.P. et al. A QoS-based resource allocation model. In : Proc. of the IEEE Real-Time Systems Symposium, December 1997, San Francisco, CA, USA, p 298-.

[Ramamritham94] RAMAMRITHAM K., STANKOVIC J. Scheduling algorithms and operating systems support for real-time systems. Proceedings of the IEEE, 1994, vol. 82, n° 1, pp. 55-67.

[Ramamritham98] RAMAMRITHAM K., SHEN C., GONZALEZ O. et al. Using Windows NT for real-time applications : experimental observations and recommendations. In : Proc. of the Fourth IEEE Real-Time Technonogy and Applications Symposium, june 1998, Denver, CO, USA.

[RFC2205] NETWORK WORKING GROUP. Resource ReSerVation Protocol, Version 1 Functional Specification. Request for Comments: 2205, Category: Standards Track, Internet RFC/STD/FYI/BCP [en ligne]. Disponible sur : http://www.faqs.org/rfcs/rfc2205.html (consulté le 19.02.2002).

[RTP96] KLEIN R. The realtime transport protocol. Technical Report, Northwest Alliance for Computational Science and Engineering, 1996.

[RTX] Venturcom, Inc. Real Time Extensions (RTX) [en ligne]. Disponible sur http://www.vci.com (consulté le 12.06.2001).

128

Page 129: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

[Selic92] SELIC B., GULLEKSON G., McGEE J. et al. ROOM : an object-oriented methodology for developing real-time systems. In : Proc. of the Fith International Workshop on Computer-Aided Software Engineering, July 6-10, 1992, Montreal, Quebec, Canada, pp. 230-240.

[Smith84] SMITH B.C. Reflection and semantics in Lisp. In : Proc. of the Symposium on Principles of Programming Languages, january 1984, Salt Lake City, UT, USA, pp. 23-35.

[Stankovic89] STANKOVIC J.A., RAMAMRITHAM K. The Spring Kernel: a new paradigm for real-time operating systems. ACM operating systems review, 1989, vol. 23, n° 3, pp. 54-71.

[Stankovic91] STANKOVIC J.A. The Spring architecture. In : Proc. of EUROMICRO ’90 Workshop on Real Time, june 1990, Horsholm, Denmark, pp. 104-113.

[Stankovic95] STANKOVIC J.A., SPURI M., DI NATALE M. et al. Implications of Classical Scheduling Results For Real-Time Systems. IEEE Computer, 1995, vol 28, n° 6, pp. 16-25.

[Streinch95] STREINCH H. Task pair scheduling : an approach for dynamic real-time systems. Journal of Mini and Microcumputers, 1995, vol 17, n° 2, pp. 77-83.

[Takashio92] KAZUNORI T. TOKORO M. DROL: an object-oriented programming language for distributed real-time systems. In : Proc. of the OOPSLA'92, oct. 1992, Vancouver, BC, Canada, pp. 276-294.

[Takashio93] TAKASHIO K., TOKORO M. Time polymorphic invocation : a real-time communication model for distributed systems. In : Proc. of the First Workshop on Parallel and Distributed Real-Time Systems, April 1993, Los Angeles, CA, USA.

[Terrier96] TERRIER F. A Real Time Object Model. In : Proc. of the TOOLS Europe’96 conference, feb. 1996, Paris, France, pp. 127-141.

[Tokuda90] TOKUDA H., NAKAJIMA T., RAO T. Real-Time Mach: toward a predictable real-time system. In : Proc. of USENIX Mach Workshop, oct. 1990, Berkeley, CA, USA, pp. 73-82.

[Tokuda93] TOKUDA H., KITAYAMA T. Dynamic QoS control based on real-time threads. Lectures Notes in Computer Science, 1994, n° 846, pp. 114-.

[Watanabe88] WATANABE T., YONEZAWA A. Reflection in an object-oriented concurrent language. In : Proc. of OOPSLA'88, Sept. 1988, San Diego, CA, USA, pp. 306-315.

[Yodaiken97] YODAIKEN V., BARABANOV M. A real-time Linux. In : Proc. of the Linux Applications Development and Deployment Conference, USELINUX, January 1997, Anaheim, CA, USA.

[Yokote92] YOKOTE Y. The Apertos reflective operating system : the concept and its implementation. In : Proc. of the Conference on Object-Oriented Programming Systems, Languages, and Applications – OOPSLA ’92, oct. 1992, Vancouver, BC, Canada, pp. 414-434.

129

Page 130: ARTO : un modèle d'objet adaptable pour la qualité de servicecsidoc.insa-lyon.fr/these/2002/contreras/these.pdfARTO : un modèle d’objet adaptable pour la qualité de service Résumé

13 Communications personnelles [1] CONTRERAS J. et SOURROUILLE J.-L. Adaptive Active Object. In : Workshop Reader of ECOOP'98

Workshop on Reflective Object-Oriented Programming and Systems, july 1998, Brussels, Belgium. Springer Verlag LNCS, vol 1543.

[2] CONTRERAS J. et SOURROUILLE J.-L. A Reflective Architecture for Real-Time. In : Proc. of the 7th Electrotechnical and Computer Science Conference, ERK'98, Sept. 1998, Portorôz, Slovenie, Vol. A, pp. 33-36.

[3] CONTRERAS J.L. et SOURROUILLE J.L.. EDF Improvements for Faults Reduction. In : Proc. of the IEEE International Symposium on Industrial Electronics, ISIE'99. July 99, Bled, Slovenie, Vol 1, pp. 75-78.

[4] BABAU J.Ph., COLNARIC M., CONTRERAS J.L., et al. Execution Model for Real-Time Server Object. In : Proc. of the IEEE International Symposium on Industrial Electronics, ISIE'99, July 1999, Bled, Slovenie, Vol 1, pp. 70-74.

[5] CONTRERAS J.l. et SOURROUILLE J.-L. A Scheduling Strategy to Preserve Object Autonomy. In : Preprints of the 25th IFAC Workshop on Real-Time Programming, WRTP’2000, Palma, Spain, May 2000, pp. 153-159.

[6] CONTRERAS J. L., SOURROUILLE J.-L. A Framework for QoS Management. In : Proc. of TOOLS’39. July 2001, Santa Barbara, CA, USA, pp. 183-193.

[7] SOURROUILLE J.-L. et CONTRERAS J.L. Objets Autonomes Adaptables. Journées Systèmes à composants adaptables et extensibles, Grenoble, 2002. [en ligne]. Disponible sur http://arcad.essi.fr/2002-10-composants/papiers_recus/long06-sourrouille.pdf (consulté le 4.11.2002).

130