Projet système PC : 2019 - JULIEN Tristan, LANUSSE Quentin

De Ensiwiki
Révision de 24 juin 2019 à 14:54 par Lanusseq (discussion | contributions) (Semaine 3)

Aller à : navigation, rechercher
BambinOS logo.png
Titre du projet BambinOS
Cadre Projet système

Équipe Quentin LANUSSE, Tristan JULIEN
Encadrants Gregory Mounie, Patrick Reignier, Yves Denneulin

Présentation

L'objectif du projet système est la réalisation d'un noyau de système d'exploitation sur une architecture Intel x86 et, pour la première fois en 2019, le risc-v 64 bits. Les concepts principaux à mettre en oeuvre sont :

  • la création et l'exécution des processus ;
  • leur synchronisation ;
  • leur ordonnancement ;
  • la gestion des entrées/sorties (clavier, écran) ;
  • l'implémentation d'un interprète de commandes.

Equipe

Gestion de projet

Organisation

Nous avons décidé de faire l'intégralité du projet en pair programming afin que chacun de nous puisse bien comprendre tout ce que nous avons fait. Avec le recul, si cela nous a peut-être légèrement ralenti nous ne pensons pas que nous aurions pu aller beaucoup plus loin même avec une répartition des tâches. Nous avons également pris grand soin d'équilibrer le temps de codage et le nombre de commits de chacun, grâce à cela, nous avons tous les deux une excellent compréhension de chaque fonctionnalité notre OS.

Planning prévisionnel

Planning effectif

Phases de développement

Phase 1 : prise en main de l'environnement

100 %

Phase 2 : Création et lancement de processus de niveau noyau

100 %

Phase 3 : Ordonnancement, création dynamique et terminaison de processus de niveau noyau

100 %

Phase 4 : Gestion des communications et synchronisation de processus de niveau noyau

100 %

Phase 5 : Séparation des espaces mémoire noyau et utilisateur : gestion de processus utilisateur

0 %

Phase 6 : Gestion du clavier et implémentation d'un pilote de console

0 %

Phase 7 : Implémentation d'un interprète de commandes

0 %

Journal de bord

Semaine 1

05 Juin 2019

  • Clonage du projet
  • Prise en main de l'environnement
  • Intégration dans le projet du code de gestion d'affichage développé en Logiciel de Base en 1ère Année
  • Début de création d'une structure de processus

06 Juin 2019

  • Modification de la structure de processus
  • Début de lancement d'une fonction
  • Blocages sur la gestion des piles au sein des processus
  • Mise en place du context_switch()
  • Découverte de l'environnement de debug

07 Juin 2019

  • Fonctionnement du context_switch() avec une table des processus statique
  • Début d'utilisation d'une queue des processus
  • Création du logo de BambinOS


Semaine 2

11 Juin 2019

  • Modification et finalisation (pour la phase 2) de l'utilisation des processus avec une queue (queue de processus activables + pointeur vers le processus actif)
  • Gestion du timer
  • Gestion des interruptions pour changer de processus
→ Fin de la Phase 2

12 Juin 2019

  • Gestion automatique des PIDs des processus
  • Gestion de l'endormissement d'un processus pour une durée déterminée : wait_clock (Phase 4)

13 Juin 2019

  • Fonctions de terminaison des processus : exit, kill
  • Primitives de gestion des processus : getprio, chprio, getpid
  • Gestion de la filiation entre processus, et implémentation de waitpid
→ Fin de la Phase 3

14 Juin 2019

  • Correction de code pour passage des premiers tests côté Kernel
→ Les tests 1 à 6 sont passés


Semaine 3

17 Juin 2019

  • Correction de code pour passage de nouveaux tests
  • Refacto du code pour passage du test 8 (début)

18 Juin 2019

  • Fin de refacto du code pour passage du test Kernel 8
  • Utilisation d'une fonction unique changer_etat() lors d'un changement d'état de processus.
  • Implémentation de la base des files de messages, il faut maintenant finaliser leur mise en place pour passer les tests qui les concernent.
→ Les 10 premiers tests côté Kernel sont validés.

19 Juin 2019

  • Correction de l'implémentation des files de messages pour passage de tests
→ Les tests 10 à 14 côté Kernel sont validés.

20 Juin 2019

  • Mise en place de la libération d'espace alloué :
    • à des processus morts
    • à des files de messages supprimées
  • Correction de code pour passage des derniers tests Kernel (15 à 20)
→ Tous les tests côté Kernel sont à présent validés.

21 Juin 2019

  • Début de la phase 5 :
    • Lecture de documentation
    • Tentative de passage au mode user (ajout d'une pile user aux processus)
→ Difficile

24 Juin 2019

  • Phase 5...
    • Passage des fonctions à lancer côté user et corrections d'autres erreurs de ce genre.
→ Difficile


Démonstration

Difficultés rencontrées