Projet système PC : 2018 - PUNEL Amaury, DUBUISSON Etienne

De Ensiwiki
Aller à : navigation, rechercher
Project schedule.png
Titre du projet NNOS (NoNameOS)
Cadre Projet système

Équipe Amaury Punel Etienne Dubuisson
Encadrants Julie Dumas , Gregory Mounie, Patrick Reignier


Présentation

Le NNOS est un OS intégrant la gestion des processus et des files de messages (synchro).

Gestion de projet

Nous nous sommes appuyés sur Trello pour organiser les tâches à réaliser durant la durée du projet. A chaque début de phase, nous mettions les points et fonctionnalités importantes à développer ainsi que les tests à réaliser sur ces points.

Gantt prévisionnel

Voici le Gantt prévisionnel du projet. Peu de temps sur les deux premières phases (celles-ci ayant déjà été codées l'année précédente). Puis trois à quatre jour sur les phases paraissant plus complexes et deux jours pour les extensions.

Gantt previsionnel PSE 2.png

Résultat final

Nous avons passé beaucoup de temps sur des problèmes liés à la lecture de la documentation.

Au début du projet, 1.5 jours ont été consacrée à la création d'un outil permettant de lancer des tests à partir d'une fonction unique mais celui-ci s'est révélé difficile à utiliser.

Nous avons créé 22 tests personnalisés pour tester une première fois les fonctionnalités puis nous avons fait passer les tests fournis qui ont révélés de nombreux problèmes dans notre implantation. Le temps de débug nous a énormément mis en retard dans l'avancement du projet.

La lecture de documentation pour la phase 5 a commencé tardivement par Etienne, pendant qu'Amaury continuait le débug des files de messages. Le développement n'a pas pu être commencé et nous avons choisi de ne pas nous lancer dans cette phase à deux jours de la fin du projet afin d'avoir le temps de finaliser les quatres premières phases.

Le dernier jour a été consacré au nettoyage du code, à l'ajout de commentaires et à la refactorisation de certaines parties.

Gantt final

Gantt final PSE.png

Difficultés rencontrées

  • Certains points de la documentation ne nous sont pas parus clairs ce qui a fait exploser le temps de débug au moment du passages des tests.
  • Langage C. Nous n'étions pas familier avec le langage C au début du projet, bien que la montée en compétence ait été rapide
  • Outils VCS : Git n'était pas maîtrisé au début du projet.

Journal de bord

Semaine 1

07 juin 2018

Prise en main des sources du projet. Lecture de la roadmap. Création d'un Trello afin d'organiser le travail. Ajout du printf() au projet.

08 juin 2018

Fin de la phase 1 après les tests sur le printf. Lancement de la phase 2. Ajout de l'horloge, des interruptions, de la gestion des processus. Développement des tests correspondants, ainsi qu'un système permettant le lancement des tests.

Lancement phase 3 après validation des tests de la phase 2.

Semaine 2

11 juin 2018

Avancement du scheduler : round robin OK. Début du start.

12 juin 2018

Toujours en phase 3. Start OK Le scheduler fonctionne via une liste chaînée et gère la priorité : les processus de priorité supérieure passent en premier.

13 juin 2018

Finalisation du scheduler (phase 3) géré par une file. Développement de la fonction sleep(). Début développement fonction exit().

Bug trouvé sur le printf : à corriger.

14 juin 2018

Développement filiation (père - fils). Fonction exit() OK. Début waitpid()

15 juin 2018

Finalisation du waitpid() Gestion de l'état zombie

Semaine 3

18 juin 2018

Zombie OK

Les tests fournis passent jusqu'au test 7.

Finalisation de la phase 3 et début de la phase 4.

19 juin 2018

Les tests passent jusqu'au test 9.

Fin de la phase 3.

20 juin 2018

Files de message quasiment implantées entièrement

Test 10 OK

Test 11 KO

Test 12 OK

21 juin 2018

Beaucoup de difficultés à faire passer les tests des files de messages.

La priorité pose problème : Faut-il forcer le passage des processus ayant moins de priorité afin qu'ils récupèrent les messages plus vite ?

Test 10, 11, 12 passent.

22 juin 2018

Mise en pause du test 13.

Tests 14 et 15 passent.

Semaine 4

25 juin 2018

Tests 1 à 17 OK en mode kernel

26 juin 2018

Nettoyage du code, finalisation du projet et du wiki.

Préparation de la soutenance.

27 juin 2018

Soutenances de fin de projet.

Réalisation des différentes phases

Phase 1

100 %

Phase 2

100 %

Phase 3

100 %

Phase 4

100 %

Phase 5

10 %

Phase 6

0 %

Phase 7

0 %

Choix techniques

IDE

  • CLion (Etienne, IDE permettant le développement en C, offre le support de Git)
  • Atom (Amaury, Editeur de texte paramétré pour reconnaître le C)

Affichage

  • qemu permet d'émuler le kernel sur une machine virtuelle.
  • Sortie dans la console permettant un débuggage plus facile. Il sufit d'ajouter outb(chaine[i], 0xE9); dans la fonction d'affichage et ajouter -debugcon stdio à la commande qemu.

Gestionnaires de version

  • Git

Librairies utilisées dans le projet

  • utlist : gestion des listes chaînées très simple. Utilisé pour les files de messages.