2021-03-28 22:31:29 +02:00
|
|
|
# Scheduler
|
|
|
|
|
2021-03-28 21:23:35 +02:00
|
|
|
Le centre de calcul (scheduler) est un automate qui effectue des transitions locales sur un état global
|
|
|
|
|
|
|
|
Les modifications successives de cet état global décrivent sa trajectoire dans son espace de phase
|
|
|
|
|
|
|
|
Chaque transition locale est calculée indépendamment, en mode asynchrone, par un thread de calcul
|
|
|
|
|
|
|
|
Tous les threads de calcul appliquent les mêmes règles selon le même algorithme
|
|
|
|
|
|
|
|
Un processus principal (scheduler) initie et termine ces threads
|
|
|
|
|
|
|
|
Il garantit la cohérence de l'état global et valide l'ensemble du calcul ou l'interrompt en cas d'erreur
|
|
|
|
Il est seul à avoir accès à l'état global et à la liste des threads de calcul
|
|
|
|
Il n'a pas accès aux règles de transition
|
|
|
|
Il assure également (ou délègue) les fonctions de communications avec les modules périphériques
|
|
|
|
|
|
|
|
Il exécute un cycle qui comporte deux étapes principales:
|
|
|
|
|
|
|
|
- recherche aléatoire d'un espace local
|
|
|
|
|
|
|
|
- si trouvé:
|
|
|
|
|
|
|
|
- arrêt de cette recherche
|
|
|
|
|
|
|
|
- préemption de cet espace local
|
|
|
|
|
|
|
|
- initiation d'un nouveau thread de calcul auquel est attibué cet espace local
|
|
|
|
|
|
|
|
- sinon arrêt de cette recherche en un temps fini
|
|
|
|
|
|
|
|
- recherche des threads de calcul en fin d'exécution
|
|
|
|
(ces threads se signalent dans une liste; leur temps de calcul est aléatoire)
|
|
|
|
|
|
|
|
- si trouvé(s):
|
|
|
|
|
|
|
|
- arrêt de cette recherche
|
|
|
|
|
|
|
|
- mise à jour de l'état global (insertion du ou des états locaux calculés)
|
|
|
|
|
|
|
|
- terminaison des threads de calcul concernés et libération des verrous associés
|
|
|
|
|
|
|
|
- sinon arrêt de cette recherche en un temps fini
|
|
|
|
|
|
|
|
- stimule le superviseur qui effectue : mesures / recueil des commandes / retour d'information
|
|
|
|
|
|
|
|
- s'arrête s'il le superviseur renvoie une alerte d'intégrité
|