Gem-graph/server/scheduler.md

46 lines
1.7 KiB
Markdown

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é