Projet système PC : 2010 - Charles EYNARD, Olivier PARENT-COLOMBEL, Matthieu RUCH : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Bilan)
 
(12 révisions intermédiaires par le même utilisateur non affichées)
Ligne 15 : Ligne 15 :
 
== Le projet ==
 
== Le projet ==
  
Vous pouvez télécharger le fichier binaire exécutable par [http://www.virtualbox.org/ Virtual Box] ici. Vous pouvez également revenir à [[Projet système : résultats|l'index]] des projets systèmes.
+
Vous pouvez télécharger le fichier binaire exécutable par [http://www.virtualbox.org/ Virtual Box] [[Media:Kernel-tacos.bin.gz|'''ici''']].
  
  
 
{| class="wikitable" width="100%" align="center"
 
{| class="wikitable" width="100%" align="center"
|+ Notre projet
 
 
|-
 
|-
 
! scope=col | Intitulé
 
! scope=col | Intitulé
Ligne 32 : Ligne 31 :
 
Le projet (Quoi ?)
 
Le projet (Quoi ?)
 
|width="90%"|
 
|width="90%"|
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 tels qu'un éditeur de texte par exemple.
+
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 [[Projet système : spécification|cahier des charges]] clair et dans un second temps réfléchir à des [[#Extensions|ajouts]] possibles.
 
Il fallait dans un premier temps répondre à un [[Projet système : spécification|cahier des charges]] clair et dans un second temps réfléchir à des [[#Extensions|ajouts]] possibles.
Ligne 60 : Ligne 59 :
  
 
=== Fonctionnalités principales ===
 
=== Fonctionnalités principales ===
'''Note:''' les fonctionnalités citées ici sont un bref résumé du cahier des charges [[Projet système : spécification|complet]]. Pour plus d'informations, merci de vous y référer.
+
'''Note:''' les fonctionnalités citées ici représentent un bref résumé du cahier des charges [[Projet système : spécification|complet]]. Pour plus d'informations, merci de vous y référer.
  
 
* '''Multi-tâches''' : possibilité de lancer plusieurs [http://fr.wikipedia.org/wiki/Processus_informatique processus] sur notre système ([http://fr.wikipedia.org/wiki/Multi-t%C3%A2ches wikipedia]).
 
* '''Multi-tâches''' : possibilité de lancer plusieurs [http://fr.wikipedia.org/wiki/Processus_informatique processus] sur notre système ([http://fr.wikipedia.org/wiki/Multi-t%C3%A2ches wikipedia]).
Ligne 68 : Ligne 67 :
 
=== Extensions ===
 
=== 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
 
* '''Multi-console''': permet de gérer plusieurs consoles
 
* '''Souris''': la souris est gérée et peut être affichée sur l'écran
 
* '''Souris''': la souris est gérée et peut être affichée sur l'écran
Ligne 73 : Ligne 73 :
 
* '''Date''': l'heure et la date connue par l'ordinateur avec l'horloge en temps réel ([http://fr.wikipedia.org/wiki/Horloge_temps_r%C3%A9el wikipedia]) est récupérée et peut être affichée
 
* '''Date''': l'heure et la date connue par l'ordinateur avec l'horloge en temps réel ([http://fr.wikipedia.org/wiki/Horloge_temps_r%C3%A9el wikipedia]) est récupérée et peut être affichée
 
* '''Disque-dur''': les disques dur de type [http://fr.wikipedia.org/wiki/Integrated_Drive_Electronics IDE] sont reconnus. Notre système d'exploitation peut lire le système de fichier [http://fr.wikipedia.org/wiki/Ext2 ext2], lire des fichiers et les modifier (on ne peux pas en créer).
 
* '''Disque-dur''': les disques dur de type [http://fr.wikipedia.org/wiki/Integrated_Drive_Electronics IDE] sont reconnus. Notre système d'exploitation peut lire le système de fichier [http://fr.wikipedia.org/wiki/Ext2 ext2], lire des fichiers et les modifier (on ne peux pas en créer).
 
 
 
 
  
 
== Démonstration video==
 
== Démonstration video==
Ligne 83 : Ligne 79 :
 
* Affichage de la date, multi-console, souris et copier-coller: [http://vimeo.com/12582952 vimeo]
 
* Affichage de la date, multi-console, souris et copier-coller: [http://vimeo.com/12582952 vimeo]
 
* Navigation dans les fichiers du disque dur et affichage d'un fichier: [http://vimeo.com/12583305 vimeo]
 
* Navigation dans les fichiers du disque dur et affichage d'un fichier: [http://vimeo.com/12583305 vimeo]
 +
* Écriture dans un fichier du disque-dur et affichage des information sur le disque-dur [http://vimeo.com/12586060 vimeo]
  
 
== Outils utilisés ==
 
== Outils utilisés ==
 
=== Outils informatiques ===
 
=== Outils informatiques ===
svn
+
Nous avons utilisé ces outils informatiques durant le projet:
ddd
+
* [http://subversion.apache.org/ Subversion] pour distribuer et gérer le code entre les membres du groupe
virtualbox
+
* [http://www.gnu.org/software/ddd/ DDD] et [http://www.gnu.org/software/gdb/ GDB] pour debugger le système d'exploitation
 
+
* [http://www.virtualbox.org/ 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 ===
 
=== Outils de gestion de projet ===
diagramme de gantt
+
Seulement deux outils de gestion de projet ont été utilisés:
cahier de bord
+
* Diagramme de GANTT (prévisionnel et effectif)
 
+
* Cahier de bord permettant de suivre avec précision l'évolution de notre projet
fait que le projet était bien encadré
+
Le fait que le projet était bien encadré, avec une [[Projet système : roadmap|feuille de route claire]], nous a évité bien des déboires au niveau de la planification.
  
 
== Bilan ==  
 
== Bilan ==  
 
=== Aspects positifs ===
 
=== Aspects positifs ===
 
+
* Le projet fut très instructif et intéressant; nous avons vraiment compris la base de l'informatique.
instructifs
+
* Nous avons pu mettre en application plusieurs de nos cours de deuxième année.
intéressant
+
* Il fut très satisfaisant d'obtenir un système d'exploitation qui fonctionne à la fin du projet.
satisfaisant la fin
+
  
 
=== Difficultés rencontrées ===
 
=== Difficultés rencontrées ===
bugs
+
* 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.
fonctionnalités plus longues que prévu à deévelopper
+
* Les extensions furent plus longues à développer que prévu.
readaptation de l'ancien code aux extensions
+
* 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.
peu de connaissances
+
* 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 ==

Version actuelle en date du 15 juin 2010 à 15:49

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.)