Browse Source

chapters/sandbox_architecture: précision sur les processus et corrections

Alexandre Janniaux 6 years ago
parent
commit
c20a65592e
1 changed files with 36 additions and 8 deletions
  1. 36 8
      chapters/sandbox_architecture.tex

+ 36 - 8
chapters/sandbox_architecture.tex

@@ -32,15 +32,18 @@ transmettre les ressources et faire la vérification d'accès. Il est également
 utile pour vérifier que les processus workers sont encore en vie et signaler les
 utile pour vérifier que les processus workers sont encore en vie et signaler les
 erreurs.
 erreurs.
 
 
-% TODO: expliauer IPC
+% TODO: expliquer IPC
 Les avantages du modèle broker sont qu'il est généralement le modèle le plus
 Les avantages du modèle broker sont qu'il est généralement le modèle le plus
 simple à implémenter, et n'a pas besoin de fonctionnalité particulière du point
 simple à implémenter, et n'a pas besoin de fonctionnalité particulière du point
-de vue du système, à part pour créer les IPC. Il est également bien plus simple
-à comprendre, à développer, à isoler et à suivre étant donné que tous les
-échanges passent par le broker avant d'être transmis au bon processus. Ce
-modèle constitue ainsi un cadre privilégié pour développer la sandbox et
-l'amener sur tous les systèmes, à condition de garder en tête les contraintes
-des autres modèles.
+de vue du système, à part pour créer les communications inter-processus (IPC).
+Nous pouvons même simuler toutes les problématiques d'accès par des jetons
+d'accès représenté par une certaine IPC, que le broker associera à un accès réel
+et reproduira les actions demandées par le worker.  Il est également bien plus
+simple à comprendre, à développer, à isoler et à suivre étant donné que tous les
+échanges passent par le broker avant d'être transmis au bon processus. Ce modèle
+constitue ainsi un cadre privilégié pour développer la sandbox et l'amener sur
+tous les systèmes, à condition de garder en tête les contraintes des autres
+modèles.
 
 
 Le processus broker sera initialisé dans le processus principal et sera donc
 Le processus broker sera initialisé dans le processus principal et sera donc
 père de tous les autres processus de la sandbox. Cela permettra d'utiliser des
 père de tous les autres processus de la sandbox. Cela permettra d'utiliser des
@@ -59,11 +62,36 @@ donné qu'on diminue les changements de contexte et appels systèmes. On garde c
 fonctionner indépendamment après, du moment que tous les éléments qui
 fonctionner indépendamment après, du moment que tous les éléments qui
 sont liés à l'étage ont été créés.
 sont liés à l'étage ont été créés.
 
 
+Ce modèle nécessite la possibilité d'initialiser une IPC entre deux workers qui
+doivent communiquer, mais potentiellement aussi mettre en place une autre IPC
+plus efficace pour les transferts de données du pipeline, commme des mémoire
+partagées. Il faut également que dans ce modèle, les workers ne puissent pas
+récupérer les droits des autres workers.
+
+C'est grâce à ce modèle qu'on peut mettre en valeur la puissance d'expression et
+de contrôle des jetons d'accès, car aucun contrôle de l'orchestrateur n'est
+nécessaire pour appliquer une réduction des privilèges et définir précisément
+les accès disponibles dans chaque partie du pipeline par conception plutôt que
+par des règles et contrôles d'accès.
+
 %TODO: schéma orchestrateur-worker
 %TODO: schéma orchestrateur-worker
 
 
 \section{Les processus worker}
 \section{Les processus worker}
 
 
 %TODO: décrire rôle du processus worker
 %TODO: décrire rôle du processus worker
+Dans les deux modèles précédents, on a utilisé des processus workers qui vont
+avoir le même rôle, mais éventuellement des implémentations différentes.
+
+Chaque worker est équipé d'un thread jouant le rôle de boucle événementielle et
+récupérant les messages soit de tous les autres modules connectés, soit depuis
+le broker uniquement selon le modèle utilisé. La boucle événementielle sera
+décrite plus tard.
+
+Les workers peuvent démarrer de plusieurs façons. Soit un nouveau processus est
+créé en étant configuré comme un worker, avec des IPC correctes déjà attribuées.
+Soit le processus est créé depuis un fork et le thread worker peut démarrer tout
+de suite en ayant connaissance de son IPC vers l'orchestrateur ou le broker. La
+seconde option peut notamment apparaître lorsqu'un processus Zygote est utilisé.
 
 
 \section{La notion de processus Zygote}
 \section{La notion de processus Zygote}
 
 
@@ -88,7 +116,7 @@ systématique de libération de tous les descripteurs associés au processus si
 l'on ne souhaite pas utiliser ce processus pour des raisons de performances
 l'on ne souhaite pas utiliser ce processus pour des raisons de performances
 également.
 également.
 
 
-Néanmoins, la partie la plus intéressante du Zygote concerne le débogage de la
+Néanmoins, l'autre partie très intéressante du Zygote concerne le débogage de la
 sandbox. Sous Linux, \texttt{gdb} n'est capable de s'accrocher qu'à un seul
 sandbox. Sous Linux, \texttt{gdb} n'est capable de s'accrocher qu'à un seul
 processus à la fois. Il faut alors choisir avec \texttt{set follow-fork-mode} si
 processus à la fois. Il faut alors choisir avec \texttt{set follow-fork-mode} si
 l'on veut déboguer le processus parent ou bien le processus enfant lors d'un
 l'on veut déboguer le processus parent ou bien le processus enfant lors d'un