Définition et contexte

L'inconvénient majeur dans la modélisation de la nature incombe principalement à l'outil informatique utilisé. En effet, nos algorithmes informatiques sont de nos jours interprétés par des ordinateurs mono-processeur (ou bi-processeurs). Or, la nature se joue de cette limitation. Une simulation naturelle parfaite devrait en théorie imposer l'utilisation d'un processeur pour chaque cellule de l'entité biologique modélisée. Ce qui est totalement aberrant lorsque l'on sait qu'une simple plante contient des millards de cellules. L'informatique contemporaine a tenté de palier ce problème en organisant les différents travaux (ou tâches) des ordinateurs, de manière à les faire exécuter un par un, par le processeur. C'est ce qu'on appelle le multitâches. Un système d'exploitation multitâches, comme Linux, Unix ou Windows, délivre ainsi aux différents processus et threads lancés, du temps CPU, c'est-à-dire du temps d'exécution par le processeur. On appelle alors ordonnancement, le fait d'attribuer du temps CPU à tel ou tel processus, en fonction de sa priorité. Sous Unix (et donc Linux), le scheduler s'occupe de la mise à jour des priorités des différents threads.

Mais revenons à la modélisation de nos plantes. Pour simuler l'évolution des plantes, il suffit de considérer les entités qui évoluent dans une plante. Il y a les branches, les racines, les feuilles et autres fruits... Dans le cadre de notre projet, nous nous sommes limités à l'évolution des branches (pour les autres éléments le raisonnement est identique). Pour entreprendre la pousse quasi instantanée de toutes les branches (modélisées dans la classe axe), une liste de toutes les branches actives (devant évoluer) doit être générée. Il s'agira ensuite, de sélectionner une branche (la plus prioritaire), de la faire pousser, puis de sélectionner la branche suivante etc... Or, en regardant bien ce système, on s'aperçoit qu'il s'agit d'un système multitâches. Pourquoi ne pas dès lors, utiliser le noyau multitâches de Linux pour faire pousser "en temps réel", nos plantes ? L'objet de ce projet est donc d'utiliser directement le noyau multitâche d'Unix (Dispatcher, scheduler...).

Une fois cette réflexion faite, une autre question se pose : Quelle entité devons nous manipuler ? les threads ou les processus ?

Nous allons décrire dans la suite de ce document l'implémentation en thread. Le cas des processus sera évoqué à la fin de ce chapitre.

julien michot 2006-08-05