Catégorie:Projets de spécialité Catégorie:Deuxième Année Catégorie:Informatique
Julie Dumas, filière SLE
Thomas Hiscock, filière SLE
Le projet système consiste à développer un système d'exploitation 1 pour une machine monocoeur intel 32bit (IA32). Notre système s'appelle chOS7.
Une spécification détaillée des fonctionnalités est fournie 2. Notre système doit fournir un certain nombre de fonctionnalités de bases.
Pouvoir afficher des caractères à l'écran en mode console 80x25.
Il faut que notre système puisse lancer plusieurs processus, et répartir le temps processeur entre eux.
Nous devons implanter un gestionnaire de file de message pour permettre la communication et la synchronisation entre les différents processus.
La partie programme utilisateur devra s'exécuter dans un espace protégé. La mémoire virtuelle permet de fournir un espace virtuel au processus. Il faudra interdire à l'utilisateur tout accès au système autre que les appels systèmes spécifiés afin de ne pas effacer le noyau entre autre.
Enfin pour rendre notre système utilisable par n'importe quel possesseur d'une machine IA32, il faut implémenter une console. Celle-ci récupère les données tapées au clavier et les interprète comme des commandes à exécuter.
Notre système d'exploitation respecte ce cahier des charges minimal. Son fonctionnement est validé par plusieurs éléments :

Commande |
Description |
|---|---|
help |
Affiche l'ensemble des commandes du shell |
clear |
Efface l'écran |
pinfo |
Donne les informations sur les files de message utilisées |
ps |
Liste les processus avec leur priorité |
sysinfo |
Affiche les informations systèmes (pinfo et ps) |
exec nom |
Exécute l'application nom si elle est reconnu comme valide |
logo |
Affiche le logo de notre OS |
exit |
Quitte le shell courant |
kill n |
Tue le processus de pid n |
hist |
Affiche l'historique du shell courant |
echo on/off |
Active/désactive l'affichage |
tests |
Lance les tests automatiques |
testclavier |
Lance le test du clavier |
crshell |
Crée un nouveau shell |
swshell n |
Bascule vers le shell n |
Nos extensions ont principalement visés à améliorer le shell. Nous avons réalisé un historique de commande ainsi qu'une gestion de plusieurs shells.
Chaque shell enregistre les 10 dernières commandes exécutées.
La deuxième extension que nous avons commencée est la gestion de multi-shell. Il faut pour cela mettre en place une redirection des entrées clavier vers le shell actuel. De même il faut afficher à l'écran seulement le shell actuel. Dans notre système nous avons redirigé seulement les entrées. Mais comme nous ne gérons pas le lancement de tâches de fond, l'affichage reste cohérent.
Les principales difficultés rencontrées lors de ce projet ont été les suivantes :
Nous regrettons d'avoir eu moins de temps que les années précédentes et de n'avoir pas eu le temps d'améliorer le shell. Nous aurions aimé réaliser les améliorations suivantes :
Ce projet a été l'occasion de :
À la fin de ce projet nous comprenons beaucoup mieux le fonctionnement d'un système d'exploitation.
Il est possible de le lancer à l'aide d'un simulateur tel que qemu :
qemu-system-i386 -m 256 --no-kvm kernel.bin &
Ce binaire ne fonctionne pas sur machine réelle.