next up previous contents
Next: 3.4 Les réseaux de Up: 3. L'exécutif Previous: 3.2 Les conflits et   Table des matières


3.3 L'arbre de décision

Le programme de l'exécutif fait donc appel à un arbre de décision pour détecter les différents conflits et les résoudre. À cette fin, des règles sont nécessaires afin de déterminer, à partir du graphe des interactions d'incompatibilités, le comportement du système. Il y a plusieur types de règles intervenant dans la dynamique du système.



Les règles qui définissent les conditions de démarrage d'un service, les plus importantes du point de vue de l'exécutif puisque ce sont elles qui prennent en compte les incompatibilités entre les services. C'est à ce niveau que les conflits sont détectés. Elles doivent prendre en compte les états des groupes, les différentes stratégies - interruption ou attente - pour les conflits entre les services d'un même groupe et les services de groupes différents.

Enfin il y a les règles qui permettent d'analyser la terminaison des services et de maintenir à jour le vecteur d'état.



De plus, pour produire son automate, Kheops a besoin de règles complémentaires (autres que celles relatives aux conflits) afin d'avoir un modèle complet de l'évolution du système. En particulier il lui faut connaître les règles de stabilité (!). Il en faut autant que de services dans le groupe plus une prenant en compte le cas où le groupe est au << repos >>, c'est-à-dire où aucun service n'est en actif. Les deux types de règles sont les suivants :

1.
Si le groupe est au repos (IDLE) et qu'aucune demande de lancement de service n'est intervenue, alors le groupe reste au repos.
2.
Si un service est en cours et qu'il n'y a aucune demande de lancement de service incompatible qui pourrait l'arrêter, ni aucune notification d'arrêt de lui-même, alors le groupe reste en l'état du service en cours.

Cependant, ces règles pourront aisément être synthétisées automatiquement.



Les règles de démarrage de services, détecté par un évènement particulier, sont les suivantes :

Règle 1 :
un service ne peut être démarré s'il y a des services déjà démarrés et dont il doit attendre la fin.
Règle 2 :
un service qui n'attend pas la fin d'autres services et qui doit interrompre un ou plusieur services d'autres groupes doit les arrêter, si ceux-ci sont démarrés, un par un puis attendre que leur arrêt soit pris en compte.
Règle 3 :
un service qui n'attend pas la fin d'autres services et qui doit interrompre un service de son groupe doit l'arrêter, si celui-ci est démarré, et attendre que son arrêt soit pris en compte.
Règle 4 :
un service qui doit s'interrompre le fait sans rien attendre.
Règle 5 :
un service qui n'a aucune contrainte peut être démarré à l'instant.



En sus de ces règles il y a les règles de terminaison de service. Il n'y en a qu'une par groupe. Elle consistent en :

<< Si une notification d'arrêt de service pour un service du groupe et que ce service est actuellement en cours, alors le groupe passe dans l'état de repos IDLE >>.


next up previous contents
Next: 3.4 Les réseaux de Up: 3. L'exécutif Previous: 3.2 Les conflits et   Table des matières
Thomas Nemeth
1999-10-03