Projet système PC : 2013 - Julie DUMAS et Thomas HISCOCK

De Ensiwiki
Révision de 19 juin 2013 à 09:27 par Duma1 (discussion | contributions) (Historique de commandes)

Aller à : navigation, rechercher


ChOS7
ChOS7.png

Développeurs Julie Dumas
Thomas Hiscock

É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 pour une machine monocoeur intel 32bit (IA32).

Cahier des charges

Une spécification détaillée des fonctionnalités est fournie [1]. Notre système doit fournir un certain nombre de fonctionnalités de bases.

Gestion de l'affichage

Pouvoir afficher des caractère à 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.

Pilote de console

Enfin pour rendre notre système utilisable par n'importe quel possesseur d'une machine IA32, il faudra implémenter une console. Celle ci récupérera les données tapées au clavier et les interprétera comme des commandes à exécuter.

Réalisation

Cahier des charges minimal

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

  • Le jeu de 20 tests fourni par les enseignants
  • Des tests unitaires réalisés par nos soins

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.

  • La commande hist permet d'afficher cet historique.
  • Il est possible de réexécuter une commande à partir de son numéro dans l'historique (commande run).
  • On ne peut pas réexécuter une commande run.

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ée 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.

  • La commande crshell permet de creer un nouveau shell.
  • On peut ensuite naviguer entre les shells créés avec les touches F1, F2, F3, F4.
  • Cette navigation peut être faite manuellement à l'aide de la commande swshell

Difficultés rencontrées

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

  • Peu de liberté, forte contraintes des spécifications, en particulier les appels systèmes
  • L'ajout de la mémoire virtuelle cette année. Il s'agit d'une partie difficilement débugable et elle complique la séparation user/kernel.
  • La durée du projet a été réduite cette année à 2 semaines à plein temps, au lieu de 4 les années précédentes.

Conclusion