Projet système PC : 2010 - Charles EYNARD, Olivier PARENT-COLOMBEL, Matthieu RUCH

De Ensiwiki
Aller à : navigation, rechercher

Mycomputer.png  Deuxième Année  CDROM.png  Informatique 

tacOS
Tacos-logo.png
Développeur Charles Eynard, Olivier Parent-Colombel, Matthieu Ruch

Le projet

Vous pouvez télécharger le fichier binaire exécutable par Virtual Box ici.


Intitulé Description

L'équipe (Qui ?)

Nous sommes trois étudiants de phelma venus en deuxième année à l'ensimag. Charles Eynard et Matthieu Ruch sont en SLE (systèmes et logiciels embarqués) et Olivier Parent-Colombel est en télécommunications. Nous sommes encadrés par Mr. Franck Rousseau.

Le projet (Quoi ?)

Le but du projet était de réaliser un système d'exploitation. C'est-à-dire un programme informatique faisant le lien entre le matériel de l'ordinateur (clavier, écran, souris) et les logiciels utilisateurs tel qu'un éditeur de texte par exemple.

Il fallait dans un premier temps répondre à un cahier des charges clair et dans un second temps réfléchir à des ajouts possibles.

Où ?

Le projet s'est déroulé dans les salles d'ordinateurs D200 et D201 de l'ENSIMAG.

Quand ?

Le projet a débuté le 20 mai 2010 et s'est terminé le 16 juin 2010, date de la soutenance. Il a eu lieu dans le cadre des projets de spécialité de l'ENSIMAG.

Comment ?

Dans un premier temps, nous avons principalement utilisé les connaissances acquises dans les cours de deuxième année de l'ENSIMAG tels que Systèmes d'exploitation et programmation concurrente et Pratique du Système. Dans un second temps, nous avons utilisé des sources externes pour réaliser les extensions.

Vous pourrez voir plus bas les outils informatiques et de gestion de projet utilisés.

Fonctionnalités

Les réalisations peuvent être séparées en deux parties:

  • La réalisation du cahier des charges initial
  • Les fonctionnalités secondaires que l'équipe a choisies

Fonctionnalités principales

Note: les fonctionnalités citées ici représentent un bref résumé du cahier des charges complet. Pour plus d'informations, merci de vous y référer.

  • Multi-tâches : possibilité de lancer plusieurs processus sur notre système (wikipedia).
  • Files de messages : infrastructure logicielle permettant à deux processus de communiquer (wikipedia).
  • Protection du système: création d'un mode utilisateur où les opérations possibles sont restreintes pour que l'utilisateur ne puisse pas faire des actions dommageables pour le système (wikipedia).

Extensions

  • Signal de terminaison: dans le terminal, un processus qui s'exécute peut être terminé en appuyant sur CTRL+C
  • Multi-console: permet de gérer plusieurs consoles
  • Souris: la souris est gérée et peut être affichée sur l'écran
  • Copier-coller: l'utilisateur peut sélectionner le texte avec le clique gauche et le coller avec un clique droit
  • Date: l'heure et la date connue par l'ordinateur avec l'horloge en temps réel (wikipedia) est récupérée et peut être affichée
  • Disque-dur: les disques dur de type IDE sont reconnus. Notre système d'exploitation peut lire le système de fichier ext2, lire des fichiers et les modifier (on ne peux pas en créer).

Démonstration video

  • Test des fonctions de base (attente sur un processus, terminaison d'un processus): vimeo
  • Affichage de la date, multi-console, souris et copier-coller: vimeo
  • Navigation dans les fichiers du disque dur et affichage d'un fichier: vimeo
  • Écriture dans un fichier du disque-dur et affichage des information sur le disque-dur vimeo

Outils utilisés

Outils informatiques

Nous avons utilisé ces outils informatiques durant le projet:

  • Subversion pour distribuer et gérer le code entre les membres du groupe
  • DDD et GDB pour debugger le système d'exploitation
  • VirtualBox qui est un logiciel qui permet d'émuler un ordinateur. Virtual Box nous a permis de démarrer et redémarrer notre système d'exploitation plus facilement.

Outils de gestion de projet

Seulement deux outils de gestion de projet ont été utilisés:

  • Diagramme de GANTT (prévisionnel et effectif)
  • Cahier de bord permettant de suivre avec précision l'évolution de notre projet

Le fait que le projet était bien encadré, avec une feuille de route claire, nous a évité bien des déboires au niveau de la planification.

Bilan

Aspects positifs

  • Le projet fut très instructif et intéressant; nous avons vraiment compris la base de l'informatique.
  • Nous avons pu mettre en application plusieurs de nos cours de deuxième année.
  • Il fut très satisfaisant d'obtenir un système d'exploitation qui fonctionne à la fin du projet.

Difficultés rencontrées

  • De nombreux bugs insoupçonnés sont apparus dans la phase de test. Leur résolution nous a pris beaucoup de temps. Nous fumes tout de même content que les bugs étaient causés par des erreurs d'étourderie et non pas par un dysfonctionnement grave de l'architecture de notre système d'exploitation.
  • Les extensions furent plus longues à développer que prévu.
  • Il fut difficile de réadapter des portions de code écrites au début du projet pour les extensions qui furent développées par la suite. Par exemple, le fait de développer le multi-console nous a forcé à modifier une bonne partie du code qui permettait d'afficher du texte à l'écran.
  • Le manque de connaissances et de documentation pour réaliser certaines des extensions (gestion du disque-dur, souris, etc.) fut assez pénalisant.

Finalement, nous aurions pu pousser davantage le développement des applications utilisateurs mais nous avons trouvé que le temps passé à la finalisation n'aurait pas été à la hauteur du résultat final.

Références

Références
Lien Contenu

IRQ et PS/2

http://a.p.c.free.fr/cours_irq.html

Documentation sur les IRQ (pic maître et esclave)

http://www.computer-engineering.org

Source intéressante sur le port PS/2 (clavier et souris)

http://wiki.osdev.org/Mouse_Input

Information plus précise sur la souris et bien structurée (avec les différentes commandes)

L'horloge temps réel (RTC)

http://www.nondot.org/sabre/os/files/MiscHW/RealtimeClockFAQ.txt

Commandes et registres de la RTC

Disque dur et systèmes de fichier

http://sos.enix.org/

Toutes les structures utilisées dans le projet pour l'ide et l'ext2 (sous licence GPL)

http://wiki.osdev.org/Ext2

Documentation de fond sur le format de fichier ext2.)