Projet système PC : 2012 - Gerault Xavier - Rocca Alexandre - Hackett Damien
Mol OS | |
---|---|
| |
Développeurs | Gerault Xavier Rocca Alexandre Hackett Damien
|
Sur cette page, vous trouverez un résumé des réalisations que nous avons effectuées dans le cadre du Projet Système.
Sommaire
Présentation du projet
Le Projet Système s'inscrit dans le cadre du Projet de Spécialité réalisé par tous les étudiants en 2ème année à l'ENSIMAG.
Ce projet s'est déroulé du 21 mai au 15 juin 2012.
Objectif du Projet
Nous avions pour but de réaliser un Système d'Exploitation d'une console de jeux, c'est à dire disposant de capacités graphiques (comme la couleur) et d'interactions (clavier, souris, sortie son) poussées, afin d'être capable de lancer des jeux vidéos.
Le Système d'Exploitation devra bien sûr posséder les caractéristiques minimales d'un OS que sont la gestion des périphériques, la gestion des processus et la segmentation.
Cette dernière propriété permet notamment d'obtenir un système stable et de restreindre les accès mémoires interdits (typiquement lorsqu'une application tente de modifier une case mémoire système).
Composition de l'équipe
L'équipe est composée de 3 étudiants issus de la formation Systèmes et Logiciels Embarqués de l'ENSIMAG
Nous étions encadrés par Franck Rousseau.
Réalisations
Exigences du Cahier des charges
- Contrôleur de l'affichage (fonction "printf")
- Interruption Horloge
- Contrôleur du Clavier
- Création, arrêt et ordonnancement de processus
- Création, prise et libération de Sémaphores
- Séparation Espace Utilisateur/Noyau
- Interface Shell Utilisateur
Pour plus d'information, vous pouvez consulter le cahier des charges original
Extensions Réalisées
- Gestion de la couleur en console
- Multiples Consoles Utilisateurs
- Contrôleur du Buzzer (musique)
- Contrôleur de Souris (permettant notamment de selectionner du texte en console)
- Prise en compte des touches spéciales (Flèches directionnelles, Echap ...)
- Contrôleur de Disque + Système de fichiers (du type du ext2 de Linux)
De plus, afin de tester les différents contrôleurs ainsi que les primitives systèmes, nous avons réaliser des jeux vidéos.
Commandes Shell
- Multi Console: Notre système possède par défaut 6 shells (numérotés de 0 à 5) accessibles en appuyant sur F[numéro du shell voulu+1]. On accède ainsi par exemple, au shell 2 en appuyant sur F3.
- Historique: Chacun de nos shells possèdent son propre historique. On peut ainsi accèder à une commande anciennement tapée en appuyant sur la flèche du haut.
- Prompt Évolué: En plus du nom d'utilisateur et du nom de machine, le prompt affiche le répertoire courant (à la manière du prompt de Bash).
Commandes propres au Shell
Commande | Description |
---|---|
echo |
Active/Désactive l'affichage des caractères entrés. |
exit |
Arrête le shell. |
clear |
Efface l'écran. |
color |
Permet de régler la couleur de police et de fond du shell. |
help |
Liste les commandes du shell. |
Commandes Système
Commande | Description |
---|---|
ps |
Affiche des informations sur les processus présents sur la machine. |
sinfo |
Affiche des informations sur les sémaphores présents sur la machine. |
sys_info |
Affiche des informations sur le système |
lspci |
Liste les périphériques et affiche leur description |
Commandes Système de Fichiers
Commande | Description |
---|---|
format |
Formate le disque en une partition ext2. |
ls [nomDuChemin] |
Liste les fichiers et dossiers présents dans le chemin indiqué (répertoire local le cas échant). |
mkdir [nomDuRépertoire] |
Crée un nouveau répertoire. |
cd [path] |
Changer de répertoire pour le path indiqué. |
write [nomDeFichier] [contenuAEcrire] |
Ecrit dans un fichier (le crée si il n'existe pas déjà). |
open [nomDeFichier] |
Affiche le contenu d'un fichier. |
Jeux et Musiques
Commande | Description |
---|---|
pong |
Le mythique jeu de Pong |
parcours |
Garder le curseur le plus longtemps sur la piste dans ce circuit en lacets, tel est le principe de ce jeu. |
soko |
Un jeu de "Sokoban", qui fera chauffer vos méninges. |
music |
Permet de lancer différentes mélodies issues du monde des jeux vidéos. |
piano |
Transforme le clavier en véritable clavier de piano. |
mute |
Permet de faire taire le buzzer si il vous tape sur le système. |
Autres Commandes
Commande | Description |
---|---|
testprof |
Lance le jeu de tests fourni par les professeurs. |
testEvent |
Permet de tester la réaction du système aux évenements (clavier, clic et mouvement souris, timer). |
philo |
Lance le test des Philosophes. |
banner |
Affiche le logo de Mol OS. |
Logiciels Utilisés
- Editeur de texte : vim, emacs et gedit
- Gestionnaire de Version : Mercurial (semblable à Git)
- Compilateurs / Debuggeur : Gcc, gdb/ddd
- Virtualisation : Virtualbox
- Documentation : doxygen
Bilan
Ce projet nous a permis de mettre en pratique les connaissances que nous avions acquises en cours de Système d'Exploitation et Programmation Concurrente (SEPC) et de Conception de Système d'Exploitation (CSE).
Nous avons de plus pu découvrir de nouveau aspects du Système d'Exploitation non abordés dans le cours de Pratique du Système, comme la programmation de drivers de périphériques ou la séparation Noyau/Utilisateur.
Enfin, ce projet nous a forcé à nous adapter à une environement nouveau (particulièrement avec Mercurial) et nous a apporté une nouvelle expérience du travail en groupe qui est enrichissante pour notre future vie d'ingénieurs.