From 500f8f1a7c476eb3473f7b31c7e89fb1651dfeb2 Mon Sep 17 00:00:00 2001 From: Adrien Bourmault Date: Sun, 28 Mar 2021 19:23:35 +0000 Subject: [PATCH] scheduler architecture --- architecture.md | 44 -------------------------------------------- server/scheduler.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 44 deletions(-) create mode 100644 server/scheduler.md diff --git a/architecture.md b/architecture.md index b2c0478..a988e2c 100644 --- a/architecture.md +++ b/architecture.md @@ -53,51 +53,7 @@ --- -Le centre de calcul (serveur) 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é --- diff --git a/server/scheduler.md b/server/scheduler.md new file mode 100644 index 0000000..05d73e4 --- /dev/null +++ b/server/scheduler.md @@ -0,0 +1,45 @@ +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é