Projet système PC : 2010 - Damien Dejean et Gaetan Morin

De Ensiwiki
Révision de 15 juin 2010 à 12:16 par Dejeand (discussion | contributions) (Nouvelle page : Catégorie:Projets de spécialité == Présentation: == Le projet de spécialité systèmes consiste à programmer un petit système d'exploitation. Un cahier des charges, fourn...)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Aller à : navigation, rechercher


Présentation:

Le projet de spécialité systèmes consiste à programmer un petit système d'exploitation. Un cahier des charges, fourni, nous donnait les fonctionnalités minimales à implémenter :

Gestion du matériel 
  • Affichage à l'écran
  • Lecture du clavier
Gestion des processus 
  • Création, lancement, arrêt de l'exécution des programmes
  • Ordonnancement (qui a le droit de s'exécuter et pour combien de temps)
Communication entre processus à l'aide de files de messages
  • Création/suppression
  • Déposer/retirer un message
Implémentation d'un shell
  • Commandes pour obtenir l'état du système (ps, pinfo)
  • Gestion des processus (lancement d'une application au premier ou en arrière plan, kill, ...)

Pour avoir plus de détails nous vous invitons à visiter la page officielle du projet sur laquelle le cahier des charges minimal est explicité.

A ce cahier des charges nous avons ajouté un ensemble de fonctionnalités:

  • Un pilote graphique plus avancé: VESA. C'est un standard implémenté dans toutes les cartes qui permet d'avoir une plus grande résolution que le mode texte de base et permet de dessiner des pixels de 256 à 16 millions de couleurs.
  • Un drivers de souris PS2.
  • Un drivers pour le haut parleur système.
  • Un gestionnaire de fenêtres: un programme qui permet à chaque processus d'avoir un endroit de l'écran, dans lequel dessiner des pixels ou présenter une interface, qui soit différent du terminal dans lequel il a été lancé. Ce programme s'appuie bien entendu sur le pilote VESA.

Illustration de nos extensions

Apports et difficultés

Le projet système nous a permis d'explorer en profondeur certains aspects de la programmation d'une machine et nous a ainsi apporté beaucoup. Voici quelques uns de ces apports

  • La rigueur et la conformité par rapport à un cahier des charges.
  • Lecture et compréhension d'une documentation.
  • Apprentissage des difficultés de la mise en application.

Nous avons également été confronté à certaines difficultés inhérente à la programmation de bas niveau:

  • Garder un code propre et modulaire.
  • Débuggage dans un environnement sans barrières (les "segmentations fault" peuvent être silencieuses par exemple).
  • Savoir prendre en compte tous les effets de bords de toutes les parties du noyau: parfois un bug survient dans votre terminal parce que le drivers graphique fait une corruption de mémoire par exemple.