Projet système PC : 2019 - LOPEZ Clément, PIZZO Adrien

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

Équipe Clément LOPEZ, Adrien PIZZO
Encadrants Yves Denneulin , Gregory Mounie, Patrick Reignier


Présentation

Le projet système nous permet de développer le noyau d'un OS. Le projet est sous-découpé en plusieurs phases distinctes qui, si elles sont toutes réalisées, permettront d'avoir un système gérant les entrées sorties, les processus, la gestion clavier et un shell.

Equipe

Planning

Planning prévisionnel

Planning effectif

Phases de développement

Phase 1 : prise en main de l'environnement

100 %

Cette phase permet de reprendre en main le projet de l'année précédente et se réhabituer à tester et déboguer le code. Nous avons notamment appris de nouveau à utiliser GDB.

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

100 %

Au cours de cette phase nous avons implémenté la création de processus et le changement de contexte entre deux processus. La gestion de l'horloge et des interruptions qui lui sont liés est également issue de cette phase. Cette partie sert à obtenir un système à temps partagé.

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

100 %

Cette phase consiste à gérer le cycle de vie des processus (ordonnancement selon l'algorithme du tourniquet, terminaison, filiation).

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

100 %

Nous avons mis en place une structure de données permettant à des processus de se communiquer des informations et de se synchroniser selon le modèle producteur consommateur. La gestion de l'endormissement fait également partie de cette phase.

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

05/06/2019 - Phase 1 - Mise en place de l'environnement

  • Présentation initiale du projet par M.Mounié
  • Réalisation du code nécessaire à l’affichage à partir du printf.
  • Débug du printf (l'insertion en position du tout dernier caractère entrainait la suppression de toute la ligne)
  • Fin de la phase 1

06/06/2019 - Phase 2 - Processus

  • Création de la structure processus
  • Implémentation de la fonction start

07/06/2019 - Phase 2 - Horloge

  • Debug de la fonction start --> Le context_switch se fait (enfin) !
  • Debut implementation scheduler & horloge

11/06/2019 - Phase 2 - Interruptions

  • Gestion des interruptions.
  • Modifications horloge.
  • Debug gestion du context_switch pour les interruptions... to be continued...

12/06/2019 - Phase 2 - Interruptions

  • On a continué le debug gestion du context_switch pour les interruptions... to be continued...
  • Commencement phase 3 : primitive + logique ordonnancement à l'aide de queues.

13/06/2019 - Phase 2 - Interruptions

  • Matinée de debug avec Monsieur Reignier. GDB c'est bien, c'est passionnant.
  • Après-midi : Nous avons compris la source de notre erreur sur la phase 2, à savoir notre structure statique de processus qui est présente simplement pour le test, nous sommes ravis.
  • Debut modification de la fonction start pour gérer les queues.

17/06/2019 - Phase 3

  • Implémentation waitpid.
  • Passage des tests 1 & 2 (nous avons fais du debug).
  • Implémentation chprio.
  • Passage des tests 3 & 4 sans trop de soucis.
  • Modification waitpid (suppression du processus qu'on attend dans la liste des fils).
  • Debug pour le test 5 : OK.

18/05/2019 - Phase 3 & Phase 4

  • Matin : passage tests 6 à 8
  • wait_clock & passage test9
  • Après midi : nous sommes revenus sur les processus pour la libération de la mémoire, cela a entrainé des complications
  • Debug libération de la mémoire : OK

19/05/2019 - Phase 4

  • Structure files
  • Implémentation des fonctions psend, pdelete, pcreate
  • Mise en place de l'environnement sur l'ordinateur personnel de M. PIZZO

20/05/2019 - Phase 4

  • Fin des primitives de files
  • Passage tests 10 à 12
  • Passage tests 14 et 15

21/05/2019 - Phase 4

  • Passage du test 13 (Nous avons du beaucoup reprendre psend et preceive pour l'immédiateté).

24/05/2019 - Phase 4

  • pcreate : vérification que les mem_alloc ont fonctionné. -> Passage de la première partie du test 17.
  • Ajustement de constantes.

25/05/2019 - Revue du code

  • Relecture du code.
  • Refactorisation du code.
  • Meilleure gestion des processus en attente de fils
  • Automatisation des tests.

Difficultés rencontrées

  • Phase2 : Notre pseudo queue statique a entraîné plusieurs jours de debug puisque nous pensions que le problème venait de la fonction start.
  • Test13 : nous avons pris une journée entière pour comprendre et debug le test, nous avions un soucis sur l'immédiateté et sur l'ordonnancement.