Projet système PC : 2011 – Conrad LELUBRE et Julien OUDOT

De Ensiwiki
Aller à : navigation, rechercher


SOS
SOS.jpg

Qui sommes nous ?

Nous sommes deux étudiants, en deuxième année en apprentissage :

Nous nous destinons tous les deux à la filière ISI proposée par l’Ensimag aux apprentis troisième année. Nous avons été encadrés pas Sébastien Viardot.

Spécifications minimales

Afficher des chaînes de caractères

La première étape de la réalisation de notre système d’exploitation est la mise en œuvre de l’affichage des chaînes de caractères sur la console de l’utilisateur. Ces caractères comportent entre autres les tabulations, backspaces et les retours à la ligne.

Interpréter les commandes

Pour permettre à l’utilisateur d’utiliser notre système d’exploitation et d’interagir avec lui, nous avons mis en œuvre un interpréteur de commande, plus communément appelé Shell. Celui-ci consiste en une suite de commandes mises à la disposition de l’utilisateur. Voici ces commandes :

Commande Action engendrée

help

Récapitulatif des commandes disponibles

exit

Permet de quitter le shell

ps

Affiche les processus existants

sys_info

Affiche la liste des processus, des sémaphores et quelques informations sur le système

clear

Place le prompteur en haut de l'écran et efface les affichages précédents

test 42

Lance une série de tests internes au système

test n

Si n est compris entre 1 et 20 inclus, lance le test n°n du fichier de test fourni

echo 1/0

Active ou désactive l'affichage de la saisie utilisateur

Le mode noyau et le mode utilisateur

Dans un système d'exploitation, certaines actions et certaines zones mémoires doivent être protégées des accès utilisateurs. Les programmes sont exécutés en mode utilisateur et n'ont pas accès à ces zones/actions. Les demandes d'accès sont donc gérées par le noyau qui s'exécute en mode noyau et qui assure, de cette manière, l'intégrité du système d'exploitation.

Les demandes d'accès aux zones noyau sont effectuées grâce à l'interruption numéro 49. Une telle demande engendre une sauvegarde du contexte d'exécution de l'utilisateur avant le passage dans le mode noyau. A la fin de l'appel noyau, le contexte utilisateur sera restauré pour lui permettre de continuer son exécution.

Outils

  • Mercurial : Gestionnaire de version décentralisé. Utilisé pour gérer les modifications successives des fichiers sources.
  • Eclipse : Environnement de développement intégré (EDI). Utilisé avec le plugin de développement C pour un développement plus convivial.
  • gcc : Compilateur de langage C. Pour générer le binaire à partir du code source C.
  • Virtual-Box : Logiciel de Virtualisation. Utilisé pour lancer notre OS.
  • gdb et ddd : Débugger. Utilisé pour débugger notre code.

Bilan

Apports du projet

Dans le cadre de ce projet, nous avons pu mettre en pratique dans un cas concret les notions de cours abordées durant l'année. Nous avons vu, grâce à cette expérience, la logique et la cohérence des différents points techniques abordés dans le cadre du cours de système d'exploitation.

Difficultés rencontrées

La principale difficulté de ce projet est la planification des tâches. Pour cela, il faut réussir à faire une prévision sur la difficulté d'une tâche jamais réalisée. En faisant une planification efficace, nous avons donc pu travailler à deux lorsque la tâche présentait une difficulté particulière, et à passer à un travail en parallèle lorsque nous jugions que les principales difficultés techniques avaient été surmontées. De plus, il n'est pas évident de se retrouver dans la multitude des ressources mise à disposition dans le cadre du projet. Selon nous, la réussite de ce projet réside particulièrement dans le fait d'utiliser de manière réactive et pertinente l'ensemble de ces ressources, qu'elles soient internes (cours), ou externes (documentation Intel).

Bilan d'avancement

Finalement, notre réalisation est assez fiable pour passer 9 tests des 20 du jeu de tests fourni. Notre Shell est plutôt minimaliste puisqu'il ne permet pas d'exécuter un certains nombre de commande UNIX comme le ls, le sleep, ou encore le cd nom_fic. De même, les pipes ne sont pas gérés, tout comme la redirection dans les fichiers ou l'exécution en arrière plan.

La convivialité du Shell est également à affiner puisqu'il est pour l'instant impossible de revenir sur une ligne saisie ou de remonter dans l'historique.

Pour conclure, nous pensons qu'il nous a manqué deux ou trois jours pour pouvoir réaliser un système bien plus complet et robuste.

Binaires du noyau

  • SOS à lancer dans virtual box

Fichier:SOSkernel.bin.tar.gz