Projet système PC : 2011 - Thibaut Charton, Benjamin Guebhardt : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Les difficultés rencontrées)
(Les difficultés rencontrées)
Ligne 65 : Ligne 65 :
 
:Notre binôme était composé de deux personne aux parcours vraiment différent:
 
:Notre binôme était composé de deux personne aux parcours vraiment différent:
 
:Benjamin est un étudiant de Phelma, étudiant à l'Ensimag via la filière en commun SLE. Il n'a donc pas la même expérience de la programmation en général, et notamment du C et de l'assembleur qu'un élève issu de l'Ensimag.
 
:Benjamin est un étudiant de Phelma, étudiant à l'Ensimag via la filière en commun SLE. Il n'a donc pas la même expérience de la programmation en général, et notamment du C et de l'assembleur qu'un élève issu de l'Ensimag.
:Thibaut est en filière SLE, et n'a donc pas eu accès au projet PSE et aux cours/TD de CSE qui approfondissent beaucoup la problématique des systèmes d'exploitation.
+
:Thibaut est en filière MMIS, et n'a donc pas eu accès au projet PSE et aux cours/TD de CSE qui approfondissent beaucoup la problématique des systèmes d'exploitation.
 
:Cette disparité des compétences a rendu plus ardue la réalisation de ce projet, car si toutes les compétences étaient présentes, elles n'étaient pas forcément uniformes et nous avons donc dû passer beaucoup de temps à expliquer à l'autre ce qu'il n'avait pas vu pendant ses cours.
 
:Cette disparité des compétences a rendu plus ardue la réalisation de ce projet, car si toutes les compétences étaient présentes, elles n'étaient pas forcément uniformes et nous avons donc dû passer beaucoup de temps à expliquer à l'autre ce qu'il n'avait pas vu pendant ses cours.
 
:Cette difficulté est aussi ce qui a fait que le projet est intéressant: nous avons tous les deux énormément appris de ce que l'autre pouvait lui apporter.
 
:Cette difficulté est aussi ce qui a fait que le projet est intéressant: nous avons tous les deux énormément appris de ce que l'autre pouvait lui apporter.

Version du 10 juin 2011 à 08:55


L'équipe, le projet

Ce projet a été réalisé par:

Ce projet se déroule dans le cadre de la 2e année à l'Ensimag, et consiste en le développement d'un système d'exploitation avec une base de départ aussi restreinte que possible. Notre équipe a été encadrée, pour cela, par Grégory Mounié

Les objectifs du projet

Ce projet consiste en le développement d'un système d'exploitation assez rudimentaire mais fonctionnel. Les contraintes imposées ici le sont par un cahier des charges assez strict. Le principal objectif du projet est le respect de ce cahier des charges. Notre OS fonctionne uniquement en ligne de commandes. Les fonctionnalités imposées par le cahier des charges sont:

  • La gestion de l'affichage (en mode ligne de commandes);
  • La gestion de l'horloge interne du processeur;
  • La création de processus, qui représente en fait la base du lancement d'applications par l'OS;
  • L'ordonnancement des processus créés:
    • Notre machine de référence ne dispose que d'un processeur. Un seul processus peut s'exécuter à un temps donné, il faut donc implémenter une politique permettant au système de décider quel processus doit s'exécuter,
    • L'algorithme choisi ici est relativement simple: à chaque processus, on affecte une priorité et c'est le processus de plus haute priorité qui s'exécute;
  • La synchronisation entre processus: lorsque des processus ont besoin d'un accès à une ressource qui ne peut être partagée, on a besoin d'un outil, les sémaphores, permettant aux différents processus de se partager la ressource sans que deux processus y accèdent en même temps.
    • Les sémaphores peuvent aussi être utilisés dans de nombreux autres cas;
  • Les modes de privilèges: l'architecture utilisée (ici x86) permet certaines protections (protection de certaines zones mémoire, protection des entrées/sorties ...) afin de s'assurer d'un fonctionnement maîtrisé du système. Nous devons implémenter l'utilisation de ces modes de privilège.
    • Cette partie constitue la plus complexe et la plus longue étape du projet;
  • La gestion du clavier: le système doit pouvoir lire et gérer des caractères entrés au clavier, selon des règles précises;
  • Le terminal: La dernière étape du projet est l'implémentation d'un terminal qui doit permettre d'utiliser certaines fonctions afin de démontrer le bon fonctionnement de l'OS.

Même si le cahier des charges est assez strict, nous avons un certain degré de liberté: nous sommes libres d'implémenter le cahier des charges de la manière que nous voulons, tant que les consignes données sont respectées. De plus, tout ajout à notre initiative est ici le bienvenu, tant qu'il ne contredit pas la spécification du projet. Enfin, une fois le cahier des charges rempli, nous pouvons choisir d'implémenter certaines extensions: gestion d'une interface graphique, de la carte son, d'un système de fichiers....

Ce que nous avons réalisé

Notre groupe étant un binôme, le seul objectif imposé était l'implémentation du cahier des charges de base (contrairement aux trinômes qui devaient implémenter un minimum d'extensions).

Par rapport aux spécifications

Nous avons a maximum respecté les spécifications. Voici quelques exemples de celles-ci:

Gestion de l'affichage et du timer

Gestion du clavier et terminal

Procédure de tests fournie

Les extensions

Nous n'avons pas eu le temps d'implémenter des extensions telles que celles qui étaient proposées. Cependant, nous avons étoffé les fonctionnalités du terminal en y ajoutant les commandes suivantes:

Ce que nous avons appris

Ce projet a été pour nous très riche en enseignements.

Le fonctionnement d'un OS
Au cours de notre scolarité, nous avons extrêmement peu d'occasions de nous plonger réellement dans le fonctionnement en profondeur d'un OS.
Ce projet représente donc une expérience presque unique et nous a donc permis de comprendre en profondeur le fonctionnement d'un OS.
L'importance d'un cahier des charges
Le cahier des charges fourni pour ce projet était très strict.
Il n'a pas toujours été évident de penser à toutes ses applications, et cela nous a donc beaucoup appris car nous avons pu faire certaines erreurs que nous espérons ne plus reproduire
L'expérience de la programmation bas niveau
De même que pour le fonctionnement d'un OS, il est assez rare que nous étudions en détail la programmation d'un ordinateur à un niveau aussi proche du matériel que pendant ce projet.
C'est pourquoi nous avons aussi pu découvrir une facette de la programmation qui nous était encore relativement inconnue
L'expérience du C
Le langage utilisé, le C, est un des langages les plus utilisés, si ce n'est le plus utilisé pour ce genre d'applications.
Cela nous a donc beaucoup apporté de réaliser un projet de cette envergure en C, car si Thibaut en avait déjà effectué pendant sa 1ere année à l'Ensimag, Benjamin, venant de Phelma, n'avait clairement pas cette expérience.

Les difficultés rencontrées

Plusieurs facteurs ont contribué à ce que le projet soit pour nous un véritable défi:

La composition du groupe
Notre binôme était composé de deux personne aux parcours vraiment différent:
Benjamin est un étudiant de Phelma, étudiant à l'Ensimag via la filière en commun SLE. Il n'a donc pas la même expérience de la programmation en général, et notamment du C et de l'assembleur qu'un élève issu de l'Ensimag.
Thibaut est en filière MMIS, et n'a donc pas eu accès au projet PSE et aux cours/TD de CSE qui approfondissent beaucoup la problématique des systèmes d'exploitation.
Cette disparité des compétences a rendu plus ardue la réalisation de ce projet, car si toutes les compétences étaient présentes, elles n'étaient pas forcément uniformes et nous avons donc dû passer beaucoup de temps à expliquer à l'autre ce qu'il n'avait pas vu pendant ses cours.
Cette difficulté est aussi ce qui a fait que le projet est intéressant: nous avons tous les deux énormément appris de ce que l'autre pouvait lui apporter.
La nature du projet
Le sujet, assez unique, est un sujet assez inhabituel et il nous a parfois été assez dur de résoudre certains bugs que nous avions du mal à comprendre
L'environnement de travail
Si l'environnement de travail était adapté au projet, il imposait certaines limitations qui ne sont pas présentes dans un projet plus commun.
Cela est principalement dû au fonctionnement de l'OS qui se faisait sur machine nue (ou virtualisée pour plus de commodité).
Il nous était notamment difficile de recourir au debugger dans certains cas car cela soulevait certains problèmes (par exemple les interruptions dues à m'horloge qui ne sont pas arrêtées par les points d'arrêt du debugger). Cela faisait que parfois le debugger causait certains bugs, que nous cherchions à résoudre alors qu'ils étaient dûs à son fonctionnement même.
Enfin, nous avons eu quelques difficultés à prendre en main le logiciel de version qui nous était fourni, par rapport à ceux que nous avions pu utiliser avant, et nous avons donc perdu du temps pour résoudre certains conflits à ce niveau

Sources externes

L'ASCII Art représentant le logo de WindOS est issu de http://ascii.co.uk