Projet système PC : 2015 - D'ANGELO Antonino, PERRETTE Clément

De Ensiwiki
Aller à : navigation, rechercher
Karadoc.jpg
Titre du projet Karadoc OS
Cadre Projet système d'exploitation 2015
Page principale Projet_système

Équipe Antonino D'Angelo Clément Perrette
Encadrants David Beniamine Gaëtan Morin Grégory Mounié


Présentation générale du projet

Objectifs

Le Projet système a pour but de réaliser un noyau de système d'exploitation sur une architecture Intel. Les principaux objectifs sont la gestion des processus, la gestion du temps partagé, l'implémentation du pilote d'entrée/sorties et enfin la gestion d'un interpréteur de commandes.

Le travail est découpé en 7 phases.

Cahier des charges

Les spécifications précises du projet peuvent être consultées sur cette page : Projet système : spécification. Nous n'avons pas fait la gestion de la mémoire virtuelle qui est facultative pour les apprentis, ainsi que les sémaphores qui sont en option.

Apport global du projet

Ce projet nous a permis d'appréhender les mécanismes aux cœurs des systèmes d'exploitation modernes. Nous avons donc pu saisir toute la complexité de la gestion des processus dans un OS tout au long de leur vie. Nous avons aussi pu voir comment se faisaient les passages du mode noyau au mode utilisateur.

Gestion de projet

IDE

Nous avons choisi tous les deux d'utiliser GVIM pour réaliser ce projet.

Outil de gestion des sources

L'utilisation du dépôt GIT fourni par l'école est obligatoire. Nous avons décidé de créer une branche supplémentaire "experimental" une fois que notre projet passait la majorité des tests fournis en mode noyau. Une fois ces mêmes tests passés en mode user nous avons fusionné les deux branches. Nous avons travaillé en pair-programming lors des étapes difficiles du projet et nous avons codé de façon séparée lors d'étapes plus simples ne nécessitant pas pour nous de relever un défi particulier.

Organisation du travail

Afin d'organiser au mieux notre travail nous avons utilisé un Trello.


Réalisations

Phase 1

Prise en main de l'environnement de développement et gestion de l'affichage à l'écran.

Étant donné que nous étions tous les deux en cursus classique l'an dernier, nous n'avions pas réalisé les TP de PSE. La partie 1 nous a donc pris plus de temps qu'à nos camarades.

Implémentation :

100 %

Phase 2

Notion de processus et le changement de contexte entre deux processus.

Nous avons commencé par implémenter un ordonnanceur puis nous avons implémenté un traitant pour l'horloge, l'interruption 32. Dans ce traitant nous avons appelé l'ordonnanceur à intervalle régulier.

Implémentation :

100 %

Phase 3

Ordonnanceur : création dynamique, terminaison et filiation des processus.

Ici nous avons implémenté les fonctions kill() et exit() ainsi que la filiation entre processus.

Implémentation :

100 %

Phase 4

Gestion de la communication et de l'endormissement des processus.

Nouvelles implémentations notables : Files de messages, wait_clock().

Sans difficulté réelle, nous avons choisi d'effectuer les tests fournis après cette phase. Nous nous sommes confrontés à divers problèmes mineurs et parfois difficiles à debugger. Nous avons dû revenir en arrière et récréer des fonctions des phases 2 & 3 pour les rendre plus "propres" et plus proches de la spécification. Il nous a fallu deux jours à plein temps pour faire passer les tests tout en implémentant les files de messages.


Implémentation :

100 %

Tests de 1 à 17 et 20 : Ok -> Création de la branche expérimental

100 %

Phase 5

Séparation des espaces mémoire du noyau et des processus et ajout du mode utilisateur.

Les problèmes se sont accumulés à cette phase. Le fonctionnement du système change radicalement durant cette phase. L'empilement des registres et les changements successifs de piles déclenchent des erreurs parfois difficiles à débugger.


Implémentation :

100 %

Tests de 1 à 18 et 20

100 %

Phase 6

Gestion du clavier (entrées/sorties).

Dans cette phase nous avons implémenté le pilote clavier en utilisant les interruptions.

Implémentation :

100 %

Tests de 1 à 20

100 %

Phase 7

Gestion de l'interpréteur de commandes. Nous avons implémenter un shell avec les commandes suivantes :

Karadoc screen.png

Implémentation :

100 %