Gem-graph/server/scheduler.md

1.7 KiB

Scheduler

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'aide du superviseur, 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 à l'aide d'un flag dans la liste des threads)

  • 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é