Projet système PC : 2012 – Charles ARACIL, Taoufik BENAYAD et Camille DESVERNOIS

De Ensiwiki
Aller à : navigation, rechercher


BunnyOS
BunnyOS.jpg

Développeurs Charles ARACIL,
Taoufik BENAYAD,
Camille DESVERNOIS


Équipe du projet

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

Notre enseignant tuteur est : Damien DEJEAN

Présentation du projet

Le projet système se déroule dans le cadre du projet de spécialité de deuxième année à l'ENSIMAG qui dure un mois. Le but du projet est de concevoir un système d'exploitation avec un minimum de fonctionnalités (gestion de processus, pilote de console, interpréteur de commandes) et d'y rajouter des extensions selon le choix de l'équipe.
Le projet a démarré avec un cahier des charges minimal décrivant les fonctionnalités minimales nécessaires au bon fonctionnement du système d'exploitation. Les extensions ajoutées sont décrites plus bas sur cette page.

Contenu du système d'exploitation

Interprète de commandes

L'interprète de commandes (shell) représente l'interface homme machine de base par laquelle l'utilisateur communique avec le système d'exploitation et fait appel à ses services. Le shell qu'on a créé implémente les fonctionnalités de base décrites dans le cahier des charges mais aussi celles qui correspondent aux extensions.
Le shell gère le passage de paramètres (commande kill <pid> par exemple), et l'historique des commandes entrés. L'utilisateur a la possibilité de parcourir l'historique avec les flèches du clavier(haut, bas).

Commande Signification

ps

  • Afficher les informations sur les processus existants

sinfo

  • Afficher des informations sur les sémaphores existants

lspci

  • Lister tous des périphériques liés au PCI

echo

  • Activer ou désactiver l’écho sur la console

date

  • Afficher la date actuelle

couleur

  • Changer la couleur du texte du shell: couleur <couleur>

clear

  • Effacer l'écran

kill

  • Tuer le processus dont le pid est passé en paramètre: kill <pid>

exit

  • Sortir du noyau

ifconfig

  • Afficher l'adresse mac de la carte réseau

playmusic

  • Jouer un morceau de piano

test

  • Lancer les tests: test <nom du test>

bunny

  • Afficher la mascotte de BunnyOS

sleep

  • Passer le shell dans l’état endormi (paramètre en millisecondes): sleep <temps>

version

  • Afficher la version du noyau

clock

  • Afficher la frequence des interruptions horloge

aide/help

  • Afficher les commandes disponibles
  • Pour plus d'informations, saisir: aide <commande>
Commande help sur le BunnyOS

Extensions

Pilote souris PS/2

Après activation du contrôleur PS/2, à chaque déplacement de la souris une interruption est levée et fait appel au traitant qui s'occupe d'interpréter les paquets de données envoyés par la souris.
Trois paquets de huit bits sont envoyés par la souris à chaque déplacement. Le premier indique le sens de déplacement de la souris selon les deux axes (et s'il y a clique sur les boutons droit, gauche ou milieu). Le second indique la variation du déplacement selon l'axe horizontal. Le dernier indique la variation du déplacement selon l'axe vertical.
La fonctionnement de la souris a été testé en mode VGA (voir plus bas) en simulant le curseur par une case rouge.

Pilote PCI

La réalisation d'extensions demande de pouvoir communiquer avec les différents composants et périphériques de l'ordinateur. Parmi ceux-ci on trouve les composants PCI. Nous avons donc réaliser un driver simple permettant de communiquer avec le bus PCI, en particulier il permet de rechercher un périphérique et enregistre l'espace de configuration PCI correspondant afin de le contrôler.

Pilotes audio

Pilote SoundBlaster

Le pilote SoundBlaster était un standard présent sur les cartes éponymes de Creative. Nous avons commencé la programmation du driver puisque la VirtualBox est capable de la virtualiser, que le driver est bien documentée et donc relativement facile à faire. Nous avons cependant arrêté de le développer car nous voulions que notre OS puisse booter sur machinie. Or les cartes SoundBlaster sont désuètes depuis 2004, elles ne sont donc présentes ni dans les machines de l'école ni sur nos portables, et donc le driver ne peut fonctionner dessus. Nous avons donc préféré le driver décrit dans la partie suivante.

Pilote AC97

L'Audio Codec '97 (AC'97) est un standard développé par Intel encore présent dans bon nombre de cartes sons. Elles sont à fortiori présentes dans les pc de l'école, ce qui nous permet de générer du son non seulement sur VirtualBox, donc laquelle est présent le codec, mais aussi directement sur machine nue. Nous avons donc importé une musique se jouant au démarrage du système, et qui peut être rejouer sur demande par la commande playmusic du shell.

Interface utilisateur graphique

Console VGA 80x25

La première interface utilisateur utilise le mode console permettant d'écrire 25 lignes de 80 caractères de long à l'écran. L'interface graphique implémentée permet, via cet affichage simpliste, de gérer différents encarts pour surveiller l'activité du système ou réaliser des tâches de fond. Le passage d'un encart à l'autre se fait via une commande dans le shell ou par la combinaison de touches Alt+Tab.

Interface graphique VBE 2.0

L'interface VBE est encore inachevée, complexe à mettre en oeuvre du fait de le nécessité de passer un mode réel. La ligne directive étant de développer un gestionnaire de fenêtre. A l'heure actuelle, le passage en mode réel et l'affichage de fenêtre est effective, il manque encore la gestion de ces fenêtres à proprement parler.

Bilan

Outils Utilisés

  • VirtualBox: logiciel de virtualisation de systèmes d'exploitation
  • Mercurial: logiciel de gestion de versions
  • ddd: outil de débogage

Références

  • OsDev Wiki pour les développeurs de systèmes d'exploitation
  • VBE 2.0 Spécification du VBE 2.0 par la VESA

Téléchargement