Hiérarchie des processus

Cet article décrit une façon de modéliser la filiation parent/fils entre les processus.

Structure

Pour modéliser la filiation parent/fils, nous pouvons faire le choix de listes chaînées intégrées aux processus. Nous allons donc rajouté un pointeur vers le process parent, un processus vers l'enfant. Supposons une structure struct process, nous pouvons la modifier ainsi:

1
2
3
4
struct process {
    struct process *parent;
    struct process *child;
};

Notre modélisation a un problème : nous ne pouvons pas créer plusieurs enfants. La solution est simple, on peut rajouter à chaque processus un pointeur vers son frère:

1
2
3
4
5
struct process {
    struct process *parent;
    struct process *child;
    struct process *sibling;
};

Chaque processus peut connaître la liste de ses enfants en parcourant récursivement le pointeur child puis sibling: parent->child->sibling->sibling->[...]. Cette structure agit comme une liste chaînée, l'insertion, la suppression et le parcours sont des opérations classiques, elles ne sont pas détaillées ici.

<