Projet système PC : 2010 - Benoit Douls et David De Monteil

De Ensiwiki
Aller à : navigation, rechercher

Présentation

Introduction

L'objectif de ce projet est de réaliser un mini système d'exploitation. Plus particulièrement, il s'agit d'amener de nouvelles fonctionnalités au projet de PSE (Pratique du Système) que nous avons réalisé au premier semestre. En effet, les fonctionnalités suivantes devront être ajoutées à ce projet :

  • Gestion des processus
  • Gestion des files de messages
  • Ajout du mode user
  • Gestion du buffer clavier
  • Réalisation d'un shell permettant d'avoir des informations sur les processus


Nous avons nommé notre OS : BeuhBeuhDaDa OS.


Equipe de réalisation du projet

  • Benoit Douls
  • David De Monteil


Cahier des charges

Nous avons complété toutes les spécifications de base noté ci-dessus. Au démarrage, l'OS lance le shell et l'utilisateur peut interagir avec celui-ci via des commandes bien définies.

Voici un listing complet de ces fonctions :

  • help : affiche l'aide
  • clear : efface l'écran
  • reboot  : redémarre l'ordinateur
  • ps  : affiche la liste des processus classé par PID
  • pinfo  : affiche les informations sur les files de messages classé par FID
  • echo  : change l'echo de la console
  • sys_info  : information du système
  • kill  : tuer un processus
  • creer_proc  : créer des processus de priorité 10 avec pour fonction une boucle infini
  • test_prof  : lancer les tests des professeurs


Explication de certaines fonctionnalités

La fonction test_prof permet à partir du shell de lancer le processus avec pour fonction test_proc permettant d'appeller les différents tests fourni dans la base de test.

La fonction creer_proc n'a pas une utilité réelle en elle même mais permet de tester la fonctionnalité kill facilement en affichant les processus en cours à l'aide de la commande ps. Cette fonction créer un processus de priorité 10 et qui lui même va créer 5 processus fils de priorité 10. On peut donc observer les résultats du kill en réalisant des appels kill sur ces processus puis en utilisant ps.


Extensions

Nous avons essayé de réaliser l'extension suivante : gérer un bi-coeur avec notre système d'exploitation. Cette extension s'est révélée très difficile à réaliser et nous n'avons pasa réussi à la mener jusqu'au bout. Nous avons pu tout de même apprendre des choses intéressantes sur la gestion des multi-processeurs et plus particulièrement l'initialisation de ceux-ci au démarrage d'un système.


Démonstration

La première démonstration possible consiste en l'utilisation du shell disponible en démarrant le système. Il permet d'executer les commandes citées ci-dessus et ainsi de pouvoir jeter un premier regard sur l'utilisation des appels systèmes.

Pour nos tests, nous avons utilisé un script de test permettant de réaliser différent test en mode kernel pour les tests de base des fonctionnalité sur les files de messages et les processus. Ce script nous permettait en sauvegardant le start kernel du test dans un dossier, de lancer facilement le test en recopiant celui-ci dans le kernel.

Nous avons aussi réalisé une démonstration qui met en oeuvre différents appels systèmes disponible dans le mini système d'exploitation : la gestion des caisse d'un magasin par fil de message.

Apports et difficultés rencontrés

Les apports

Ce projet nous a appris à pratiquer une méthode de travail assez stricte qui consistait dans un premier temps à analyser les spécifications pour comprendre au mieux la fonctionnalité à réaliser. Il a ensuite fallu définir des structures pour réaliser ces fonctionnalités avant de pouvoir réaliser la fonctionnalité.

Ce projet nous a aussi permis de travailler sur des concepts auquels nous ne sommes pas familié. La compréhension de ces concepts est donc très importante et très enrichissante.

Ce projet nous a aussi appris à exploiter une documentation officiel (documentation du processeur Intel) pour implémenter des fonctionnalités.

Pour finir, les méthodes de travail acquises tout au long du projet nous seront très utile pour la suite car poru notre futur il est très important de pouvoir se lancer dans une documentation technique sans en avoir peur en essayant de l'exploiter pour arriver à un résultat.


Les difficultés rencontrées

Les difficultés rencontrées tout au long du projet ont aussi été très important pour nous.

En effet, nous avons eu pas mal de difficulté à comprendre certain concept et leur mise en oeuvre a donc été difficile. Nous avons donc perdu du temps lors de plusieurs phase de réalisations sur des concepts clé du projet. Ceci nous a donc coûter du temps pour la phase d'extension du système que nous avons réalisé.


Bilan du projet

Ce projet, malgré les difficultés rencontrées, s'est révélé très enrichissant et nous a permis de mettre en pratique des notions difficiles. Nous avons donc beaucoup appris tout au long du projet sur la réalisation d'un mini système d'exploitation.