Catégorie:Projets de spécialité Catégorie:Deuxième Année Catégorie:Informatique
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.
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.
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 |
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.
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.
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).
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.