Projet système PC : 2013 - Fabian Bouchy, Jérémy Carrier et Adrien Hamraoui

De Ensiwiki
Aller à : navigation, rechercher
BolOS
Bolos logo.png
Logo du système BolOS

Développeurs Fabian Bouchy

Jérémy Carrier
Adrien Hamraoui

Présentation

La console sans les drivers VESA.
La console avec les drivers VESA.

Le projet système

Le projet système clôt la deuxième année en alternance. Le cahier des charges est disponible sur la page du Projet système. Le code source du projet ne peut pas être rendu public parce qu'il influencerait les futurs réalisations. Les membres de l'équipe disposent tout de même d'une copie de ce code.

L'équipe

L'équipe est composée de trois étudiants de la fillière apprentissage :

Réalisation

Durant nos trois semaines de développement nous avons pu aborder différentes problématiques du développement d'un système d'exploitation. Nous avons respecté toutes les spécifications et développé les fonctionnalités demandées dans le cahier des charges :

  • Un ordonnanceur fonctionnant en round-robin avec priorité
  • La gestion de l'affiliation entre processus
  • La gestion de la vie des processus
  • La séparation mémoire kernel/user
  • L'implémentation de sémaphores
  • L'implémentation de drivers clavier
  • Un interpréteur de commandes

Nous mettons à disposition le binaire de notre noyau sans le driver VESA : Média:BolosKernel.bin.tar.gz.

Apports et Difficultés

Ce projet nous a permis d'assimiler les notions théoriques vues pendant l'année. La mise en application de tous les algorithmes appris nous a permis de prendre conscience de leur performances.

Le travail en trinôme a été très bénéfique. Contrairements aux projets effectués en binôme, lorsque les avis divergeaient entre deux membres de l'équipe, le troisième pouvait donner son avis et trancher objectivement. Cela nous a évité énormément de conflits et nous a aussi permis d'avoir des discussions constructives et argumentées.

Nous avons pu nous organiser pour travailler de manière efficace grâce à une bonne gestion de projet. Nous avons la plupart du temps travaillé en parallèle en se partageant le travail. Mais nous avons aussi su former des binôme à l'intérieur de notre équipe pour travailler sur certains aspects un petit plus prenants.

Boloshell

C'est notre shell maison. Voici les commandes disponibles à ce jour :

Commande Description

help

Affiche l'ensemble des commandes disponibles dans le Shell

kill

Tue un processus suivant son PID

echo

Active/desactive l'echo

semstress

Lance la batterie de stress-tests sur les sémaphores

piano

Un programme qui joue la partition écrite dans la console

ensitest

Lance le programme de test de l'Ensimag

philosophes

Lance des tests sur les philosophes

sinfo

Affiche des informations sur les sémaphores

ps

Affiche des informations sur les processus

infinity

Boucle infinie pour essayer la commande kill

Il est possible de lancer chaque processus en arrière-plan avec &.

Gestion de projet

Tout au long de ce projet, nous avons mis en place des solutions de gestion de projet pour faciliter l'avancement de ce dernier.

Pour cela, nous avons utilisé l'outil de gestion de version décentralisée git ainsi que le suivi de bogue de github.com.

Git

Pour ce projet, l'école nous a mis à disposition un entrepôt git sur les serveurs de l'école.

Aperçu des branches du projet bolos sur github.com.

Nous avons adopté la stratégie suivante:

  • Une branche master sur laquelle nous étiquetions les différentes versions stables de notre os,
  • Une branche develop là où nous effectuions nos développements intermédiaires et différentes fusions.
  • Une branche par fonctionnalité ou phase pour paralléliser notre travail. Ainsi lorsqu'une fonctionnalité devait être développée, nous réalisons un fork depuis develop. Une fois le travail réalisé, une fusion dans develop était opéré pour partager à l'ensemble de l'équipe.

Cette stratégie de branche est une version simplifiée et librement inspirée de celle de Nvie.

Suivi de bogue de GitHub.com

Milestones du projet bolos sur github.com.

Ce site internet propose de créer gratuitement pour les étudiants des entrepôts git. Nous avons saisi cette opportunité pour utiliser leur système de suivi de bug.

Ainsi, nous pouvions créer des phases (v1, etc..) pour garder à l'esprit nos objectifs et répertorier les différents problèmes que l'on rencontrait au cour du projet. De plus, il était possible de renseigner les dates butoirs pour chacune des phases.

Issues du projet bolos sur github.com.

Dès que nous rencontrions un bogue, un défaut de spécification, ou toute autre idée, nous ajoutions un élément à cet outils. Pour chacune de ses entrées, nous affections une ou plusieurs catégories telles que bug, feature, question.

Tests

En plus des tests fournis par l'Ensimag (accessible depuis le shell: ensitest), nous avons mis en place deux catégories de test pour limiter la régression.

Pour exécuter ces tests tout au long du projet, plusieurs cibles de compilation ont été crées. Elles ont été doublées d'une target pour lancer automatiquement GDB sur les tests. Leur lancement est accessible depuis la racine du projet, ou depuis le répertoire kernel.

Grâce à l'ensemble de ses tests, nous étions à même de détecter des régressions et d'identifier la source.

Test Kernel

Les tests kernels permettent de s'assurer qu'il n'y a pas de régression au niveau Kernel de notre système d'exploitation. Avec ces tests, on test directement les fonctions kernel sur lesquelles sont basés les appels systèmes.

Test User

Les tests User permettent de s'assurer qu'il n'y a pas de régression au niveau user de notre système d'exploitation. Par exemple, nous testons ici les appels systèmes, les sémaphores avec des philosophes et l'exécution de la batterie de test fournis par l'école.

Extensions

PC Speaker

Nous avons réalisé un driver permettant d'utiliser le haut-parleur de la carte mère.

Nous avons ensuite réalisé une interface dans le noyau et dans les appels systèmes permettant de jouer des notes. Nous avons développé une petite application "piano" pour illustrer le fonctionnement de notre pilote. Cette application permet d'interprêté à la volée des partitions textuelles.

Pilotes VESA

Nous avons aussi réalisé un driver permettant d'utiliser l'extension du BIOS VESA afin d'afficher notre shell en haute résolution (very low HD). Une interface noyau est présente pour écrire un caractère, remplire une zone de l'écran.

Malheureusement notre pilote ne fonctionne que sur qemu, et par manque de temps aucune application graphique n'a été développée.

Références

PC Speaker

Pilotes VESA