Projet système PC : 2019 - SAMAILLE Noé, MUGNIER Jean-Charles : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Ajout apports et difficultés)
(Prévisionnel)
Ligne 16 : Ligne 16 :
 
=== Prévisionnel ===
 
=== Prévisionnel ===
  
TODO
+
Phase 1 : 1 jour
 +
Phase 2 : 2,5 jours
 +
Phase 3 : 2 jours
 +
Phase 4 : 2 jours
 +
Phase 5 : 2,5 jours
 +
Phase 6 : 2 jours
 +
Phase 7 : 2 jours
  
 
=== Effectif ===
 
=== Effectif ===

Version du 26 juin 2019 à 01:31

Project schedule.png
Titre du projet aperOS
Cadre Ensimag

Équipe Noé Samaille, Jean-Charles Mugnier
Encadrants Gregory Mounié, Patrick Reignier


Présentation

TODO

Executable

TODO

Planning

Prévisionnel

Phase 1 : 1 jour Phase 2 : 2,5 jours Phase 3 : 2 jours Phase 4 : 2 jours Phase 5 : 2,5 jours Phase 6 : 2 jours Phase 7 : 2 jours

Effectif

TODO

Avancement du projet

Phase 1 - Prise en main de l'environnement

100 %

Phase 2 - Processus, changement de contexte gestion du temps (kernel)

100 %

Phase 3 - Ordonnancement et cycle de vie des processus (kernel)

100 %

Phase 4 - Files de messages

100 %

Phase 5 - Protection de l'éxecution et appels systèmes

95 %

Phase 6 - Console

100 %

Phase 7 - Interprète de commandes

100 %

Extensions

Sources

Journal de bord

Liste chronologique des jours, puis sous-liste chronologique des tâches.

Mercredi 5 Juin 2019

  • Présentation initiale du projet par M. Mounié.
  • Jean-Charles et Noé : Mise en place (en parallèle) du code nécessaire à l'affichage.
  • Fin de la phase 1.
  • Jean-Charles et Noé: Début de la réflexion sur le changement de contexte entre processus.

Jeudi 6 Juin 2019

  • Jean-Charles : démarrage des tests de la phase 1.
  • Noé : Mise en place des structures de processus.
  • Noé : Mise en place du changement de contexte.
  • Jean-Charles et Noé : Choix d'un nom d'OS et d'un logo ASCII.

Vendredi 7 Juin 2019

  • Noé : Fin du changement de contexte.
  • Noé : Mise en place du Timer.
  • Bon Week-end !

Mardi 11 Juin 2019

  • Fin de la phase 2
  • Jean-Charles : Fin des tests de la phase 1.
  • Jean-Charles & Noé : merge branches tests -> master puis develop -> master.
  • Jean-Charles & Noé : Début de la phase 3.
  • Noé : Gestion de l'ordonnancement.

Mercredi 12 Juin 2019

  • Noé : Fin gestion de l'ordonnancement.
  • Jean-Charles : Endormissement des processus.
  • Noé : Terminaison des processus.

Jeudi 13 Juin 2019

  • Jean-Charles : implemenation des tests fournis.
  • Jean-Charles & Noé: Fin de l'endormissement des processus.
  • Noé: Fin de la terminaison des processus.
  • Fin de la phase 3.

Vendredi 14 Juin 2019

  • Noé & Jean-Charles : Debbuging des 3 premieres phases sur les tests fournis.
  • Noé : Tests 1, 2 et 3 PASSED.
  • Noé : Début de la phase 4 : File de messages.
  • Jean-Charles : Tests 4 et 5 PASSED.
  • Bon Week-end !

Lundi 17 Juin 2019

  • Jean-Charles : Test 6 PASSED.
  • Noé : Tests 7, 8, 9 PASSED.
  • Noé : Implementation des files de messages.
  • Noé : Tests des files de messages.
  • Noé : Tests 10, 11, 12 PASSED.

Mardi 18 Juin 2019

  • Jean-Charles et Noé : Pair programming.
    • Tests 13-17 & 20 PASSED.
  • Fin de la phase 4.
  • Jean-Charles et Noé : Début phase 5, réflexions sur la protection de l'execution.

Mercredi 19 Juin 2019

  • Jean-Charles et Noé : Pair programming.
  • Jean-Charles et Noé : Initialisation du traitant d'intérruption 49.
  • Noé : Implémentation du traitant d'intérruption 49.
    • Switch kernel lançant la bonne primitive système.
  • Noé : Implémentation d'une fonction assembleur init_user qui modifie ESP0 et permet le iret du premier processus user.
  • Noé : Implémentation de la primitive système cons_write.
  • Noé : Lancement du premier processus en mode user qui print hello world.

Jeudi 20 Juin 2019

  • Jean-Charles : début de la phase 6
  • Noé : Modification de init_user pour permettre le premier iret de chaque processus user.
  • Noé : Ajout de la fonction ret_user mappée côté kernel qui permet de gérer le return des processus user.
  • Noé : Implémentation et tests de chaque primitive système.
  • Noé : Passage des tests 1-8, 9-17 et 20 en mode user
    • Problème lors du user_stack_free, que l'on traitera par la suite si le temps le permet.

Vendredi 21 Juin 2019

  • Noé : correction du problème de user_stack_free
    • Phase 5 : le kernel se fait hack par le test 18, on suppose que la pagination pourrait nous aider à corriger ce problème. Comme elle est optionnelle pour les apprentis, on passe à la suite.
  • Fin de la phase 5
  • Jean-Charles : Phase 6 - gestion du keyboard (traitant côté kernel et fonctions côté user).
  • Jean-Charles : Phase 6 - implémentation de cons_read.
  • Jean-Charles & Noé : Phase 6 - Pair programming.
  • Fin de la phase 6
  • Jean-Charles & Noé : Conception de notre interprète de commande.
  • Bon Week-End !

Lundi 24 Juin 2019

  • Jean-Charles & Noé : Mise à jours et intégration du parseur de commandes fourni avec l'ensishell dans notre OS.
  • Jean-Charles & Noé : Commande ps.
  • Noé : Commande test.
  • Jean-Charles : Gestion du backspace et des flèches directionnelles gauche et droite dans la console.
  • Noé : Reffonte visuelle de la console.
    • Avec appel système de changement de couleur
  • Noé : Gestion du CTRL+L dans la console.
  • Noé : Commande clear.
  • Noé : BUGFIX libération de la mémoire lors d'input vide.

Mardi 25 Juin 2019

  • Jean-Charles : Gestion du mode inser.
  • Jean-Charles : Refactoration du code keyboard.
  • Jean-Charles : Gestion des touches begin, end et del.
  • Noé : Amélioration de la commande test (lancement d'un test particulier).
  • Noé : Commandes exit, kill, loop et waitpid pour la gestion des processus.
  • Noé : Commande reboot permettant de redémarrer la machine.
    • Trigger de reboot lors de l'exit du premier shell.
  • Noé : Modification du user_start affichant un écran d'accueil demandant le username.
  • Noé : Commande help affichant la documentation des différentes commandes.
  • Noé : Commande shell-fish lançant un nouveau shell.
    • Avec sauvegarde et restauration de la mémoire vidéo en switchant de shell.

Apports du projet

Nous avons trouvé le projet très instructif. Nous sommes plus à l'aise sur le fonctionnement des processus et des interruptions.

Difficultés rencontrées

Lors de la phase 2, nous avons eu du mal à comprendre que la taille de la pile (à renseigner lors de la création d'un processus) était en réalité la taille de la pile utilisateur et que la taille de la pile kernel est commune à tous les processus. Nous avons donc eu une implémentation des processus fausses jusqu'à la phase 3. Nous nous sommes rendus compte du problème grâce aux tests fournis.


Sources externes

OSdev : https://wiki.osdev.org/