Bladeren bron

chapters/sandbox_architecture: ajout de précisions sur zygote

Alexandre Janniaux 6 jaren geleden
bovenliggende
commit
c882b2362c
1 gewijzigde bestanden met toevoegingen van 30 en 0 verwijderingen
  1. 30 0
      chapters/sandbox_architecture.tex

+ 30 - 0
chapters/sandbox_architecture.tex

@@ -32,3 +32,33 @@ donné qu'on diminue les changements de contexte et appels systèmes. On garde c
 «orchestrateur» pour initialiser chaque nouvel étage mais les modules peuvent
 fonctionner de façon indépendante après, du moment que tous les éléments qui
 sont liés à l'étage ont été créés.
+
+\section{La notion de processus Zygote}
+
+Afin d'optimiser le démarrage de nouveaux processus, beaucoup de systèmes
+utilisent un processus spécial, appelé «Zygote». Ce processus est responsable de
+créer les nouveaux processus et permet un démarrage plus rapide en
+préchargeant toutes les bibliothèques et préparant toutes les initialisations
+au préalable.
+
+Les nouveaux processus sont alors créés à partir d'un appel système
+\inltype{fork} qui est moins coûteux que la création complète d'un processus
+depuis rien. Mais n'est pas officiellement disponible sous Windows,
+officieusement disponible sur les versions Windows 10 professionnels via les
+détails internes liés à l'implémentation des pico-processus, et ne permet pas de
+pouvoir efficacement faire de l'ASLR entre les différents processus de
+l'application. Ce dernier point existe notamment sur Android, même si des
+mitigations existent.
+
+Le processus Zygote permet également d'efficacement cloisonner les descripteurs
+de fichier à hériter. Mais cela peut être préférée à une méthode plus
+systématique de libération de tous les descripteurs associés au processus.
+
+Néanmoins, la partie la plus intéressante du Zygote concerne le débogage de la
+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
+l'on veut déboguer le processus parent ou bien le processus enfant lors d'un
+appel à \inltype{fork}. Dans l'architecture que l'on va construire, on sera
+suffisament dépendant de la bonne réalisation des opérations demandées pour
+pouvoir attacher des débogueurs au processus Zygote et basculer directement sur
+le processus enfant à chaque création de nouveau processus.