Catégorie:Projets de spécialité Catégorie:Deuxième Année Catégorie:Informatique

Équipe

Julie Dumas, filière SLE
Thomas Hiscock, filière SLE

Présentation

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.

Cahier des charges

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.

Gestion de l'affichage

Pouvoir afficher des caractères à l'écran en mode console 80x25.

Processus

Il faut que notre système puisse lancer plusieurs processus, et répartir le temps processeur entre eux.

File de message

Nous devons implanter un gestionnaire de file de message pour permettre la communication et la synchronisation entre les différents processus.

Mémoire virtuelle, Séparation mode user, mode kernel

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.

Pilote de console

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.

Réalisations

Cahier des charges minimal

Notre système d'exploitation respecte ce cahier des charges minimal. Son fonctionnement est validé par plusieurs éléments :

ChOS7 en fonctionnement (commande help)
ChOS7 en fonctionnement (commande help)

Commandes

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

Extensions

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.

Historique de commandes

Chaque shell enregistre les 10 dernières commandes exécutées.

Consoles multiples

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.

Difficultés rencontrées

Les principales difficultés rencontrées lors de ce projet ont été les suivantes :

Bilan

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.

Binaire du noyau et liens utiles

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.