Ce module gère les liens de filliation entre process.
Chaque process stocke son parent (ou le fait de ne pas avoir de parent).
Note : Contrairement à linux, il n'y a pas de pid servant des roles particuliers tels que le ramassage de zombie ou un processus inactif : notre système est conçu de sorte qu'aucun zombie ne soit orphelin, et le scheduler se met en pause si aucun processus ne cherche a s'executer.
Une structure chains
(cf stdlib
) stocke les fils vivant d'un process dans la chaine 2*pid
et ses process zombies dans la chaine 2*pid+1
.
Si un process meurt, tous ses fils sont détachés, et s'il est lui même attaché a un parent, il change de chaîne et passe dans la chaîne zombie de ce dernier.
Si un parent wait son enfant, ce dernier est pop de la chaîne zombie du parent.
Si il n'y a pas d'enfant zombie satisfaisant, mais des enfants vivants satisfaisants, le processus parent est mis en veille.
Il sera reveillé a la mort d'un enfant satisfaisant.