Projet système PC : 2021 - BELHADJ Anthony, PAGEL Ange

De Ensiwiki
Aller à : navigation, rechercher
EnsiOS.png
Titre du projet ensiOS
Cadre Projet système

Équipe Anthony Belhadj Ange Pagel
Encadrants Yves Denneulin , Gregory Mounie, Patrick Reignier

Présentation

Documents importants

Équipe

Anthony BELHADJ (filière apprentissage)

Ange PAGEL (filière apprentissage)

Organisation

Gestion du temps

Planning prévisionnel

Aucun planning prévisionnel n'a été établi pour guider notre progression dans ce projet. Nous savions que nous allions régulièrement rencontrer des difficultés et qu'il serait difficile de se tenir à une date et un axe de progression définis par le planning prévisionnel.

Planning effectif

Planning-effectif-ensios2021-0.png

Méthode de développement

Nous avons travaillé en binôme (peer programming) presque tout au long du projet pour progresser ensemble et réfléchir sur le code à deux, en parallélisant parfois le travail pour aller plus vite.

GitLab

Nous développons exclusivement sur une branche "dev", sur laquelle sont fusionnées des branches de fonctionnalités associées aux issues GitLab ouvertes. Les modifications de "dev" sont fusionnées sur "master" lorsqu'un jalon est atteint.

Phases du développement

Phase 1

Progression

100 %

Description

Roadmap : Phase 1

  • Prendre en main l'environnement de développement (chargement et débogage de noyau) et gérer l'affichage à l'écran.

Phase 2

Progression

100 %

Description

Roadmap : Phase 2

Phase 3

Progression

100 %

Description

Roadmap : Phase 3

  • Gérer l'ordonnancement, la création dynamique, la terminaison et la filiation des processus (toujours au niveau noyau).

Phase 4

Progression

95 %

Description

Roadmap : Phase 4

  • Gérer la communication (via l'emploi de file de message) et l'endormissement (appel wait_clock) des processus.

Phase 5

Progression

0 %

Description

Roadmap : Phase 5

  • Séparer les espaces mémoires du noyau et des processus en utilisant la mémoire virtuelle (facultatif pour les apprentis).
  • Ajouter le mode utilisateur.

Phase 6

Progression

0 %

Description

Roadmap : Phase 6

  • Développer un pilote de console.

Phase 7

Progression

0 %

Description

Extensions

0 %

Tests Noyau

75 %

Tests Utilisateur

0 %

Journal de bord

Semaine 1

Lundi 7 Juin

⇒ Phase 1

  • Prise en main de l'environnement.
  • Gestion de l'affichage à l'écran.

Mardi 8 Juin

⇒ Phase 1

  • Documentation et organisation du code responsable de l'affichage à l'écran.
  • Fin de la Phase 1

⇒ Phase 2

  • Gestion de la notion de processus et de changement de contexte entre deux processus (au niveau noyau).
  • Gestion du timer et des interruptions.

Mercredi 9 Juin

⇒ Phase 2

  • Documentation et organisation du code responsable de la notion de processus et de changement de contexte.
  • Correction de bogues.

Jeudi 10 Juin

⇒ Phase 2

  • Documentation et organisation du code responsable du timer et des interruptions (en cours).
  • Gestion de l'affichage de l'heure.

⇒ Phase 3

  • Gestion de l'ordonnancement et de la création dynamique de processus (en cours).

Vendredi 11 Juin

⇒ Phase 2

  • Documentation et organisation du code responsable du timer et des interruptions.

⇒ Phase 3

  • Gestion de l'ordonnancement et de la création dynamique de processus (en cours).
  • Gestion de la terminaison des processus (en cours).

Semaine 2

Lundi 14 Juin

⇒ Phase 2

  • Finalisation de la Phase 2.
  • Fin de la Phase 2

⇒ Phase 3

  • Gestion de l'ordonnancement et de la création dynamique de processus.
  • Gestion de la terminaison des processus.

Mardi 15 Juin

⇒ Phase 3

  • Gestion de la filiation des processus (en cours).

Mercredi 16 Juin

⇒ Phase 3

  • Gestion de la filiation des processus.
  • Documentation et organisation du code responsable de la filiation des processus.
  • Fin de la Phase 3

Jeudi 17 Juin

⇒ Phase 3+

  • Introduction de la notion de priorité de processus.

⇒ Phase 4

  • Gestion des files de messages (en cours).

Vendredi 18 Juin

⇒ Tests

  • Configuration des tests noyau (en cours).

⇒ Phase 4

  • Gestion des files de messages (en cours).

Semaine 3

Lundi 21 Juin

⇒ Tests

  • Configuration des tests noyau.
  • Débogage du code.
  • Implémentation de primitives nécessaires aux tests.

Mardi 22 Juin

⇒ Tests

  • Débogage du code.

⇒ Phase 3+

  • Gestion des files de priorité des processus.
  • Fin des améliorations apportées à la phase 3.

Mercredi 23 Juin

⇒ Phase 4

  • Gestion des files de messages (en cours).

⇒ Autre

  • Amélioration des fonctionnalités d'affichage.

Jeudi 24 Juin

⇒ Phase 4

  • Gestion des files de messages (en cours).

⇒ Tests

  • Débogage du code.

Vendredi 25 Juin

⇒ Phase 4

  • Gestion des files de messages (en cours).

⇒ Tests

  • Débogage du code.

⇒ Autre

  • Amélioration des fonctionnalités d'affichage.

Difficultés

  • Nous n'avons pas réussi à passer le test noyau n°9 ; malgré l'aide des professeurs et de nos camarades, nous ne sommes pas parvenus à identifier et résoudre un problème qui se loge vraisemblablement dans la gestion des registres. C'est bon, c'est passé. :^)

Apports

  • "À la fin du projet système, vous n'aurez plus peur de GDB" : c'est vrai ! Nous avons régulièrement utilisé GDB pour déboguer notre projet, et nous n'hésitons plus à lancer le débogueur plutôt que de faire des printf partout.