Améliorations autour de PolyORB Kernel
Le but de ce projet est de travailler sur le noyau PolyORB Kernel. Ce noyau minimal est conçu pour construire des systèmes critiques sûrs et sécurisés. Il fournit un ensemble de fonctionnalités qui sont activables/désactivables à la compilation. Quelques lignes de code et la configuration sont générées à partir de modèles AADL. Ainsi, nous pouvons vérifier le modèle puis générer le système à partir du modèle. Nous garantissons alors que l'implémentation du système suit les spécifications et nous réduisons le nombre d'erreurs de conception.
Nous avons repris le concept d'OS partitionnés : l'OS est constitué de partitions contenant des threads. Chaque partition est isolée spatialement (une partition ne peut pas accéder à l'espace d'adressage d'une autre partition) et temporellement (une partition ne peut pas déborder sur le temps d'exécution d'une autre partition). On retrouve ce concept de système partitionné dans les spécifications d'ARINC653.
Nous proposons ici que vous puissiez travailler sur le noyau PolyORB Kernel et d'améliorer le mécanisme d'isolation temporelle. Actuellement, le noyau propose un mécanisme d'ordonnancement Round-Robin. Cependant, nous souhaiterions un ordonnanceur générique, pouvant ordonnancer aussi bien les threads que les partitions. De plus, nous souhaiterions implémenter davantage d'ordonnanceur :
- EDF
- RMS
- Time-slice
- ...
Ajouté à cela, nous souhaiterions avoir une gestion des verrous suivant les protocoles d'héritage/plafond de priorité (PIP/PCP). Le protocole de verrouillage sera choisi lors de l'instanciation du verrou.
L'ordonnancement sera bien entendu préemptif et il faut bien évidemment veiller isoler temporellement toutes les partitions du système.