Projet système PC : 2021 - DJERRAH Linda, XU Yin

De Ensiwiki
Révision de 25 juin 2021 à 12:38 par Djerrahl (discussion | contributions) (Difficultés)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Aller à : navigation, rechercher
Project schedule.png
Titre du projet BugOS
Cadre Projet système

Équipe Linda DJERRAHYin XU
Encadrants Yves Denneulin , Gregory Mounie, Patrick Reignier

Présentation

TODO

Équipe

Linda DJERRAH

Yin XU

Organisation

Nous avons travaillé en peer progamming sur la même session ce qui explique la présence d'un unique nom dans l'historique de commit git. Par contre, lors de la phase de la fixation des bugs, chacun investiguait de son coté.

Phases du développement

Phase 1 : Prise en main de l'environnement

100 %

Durant cette première phase, nous avons commencé par la lecture de la documentation sur ENSIWIKI. Par la suite, nous avons installé l'environnement de travail. Et enfin, nous avons géré l'affichage à l'écran en codant la fonction console_putbytes en implémentant : ptr_mem, ecrit_car, place_curseur, efface_ecran, traite_car, defilement.

Phase 2 : Gestion des processus, changement de contexte et interruptions

100 %

Durant cette deuxième phase, nous avons lu les documentations suivantes: assembleur (Séance TP PSE), timer (Séance TP PSE), processus (Séance TP PSE), explications sur le changement de contexte (Séance TP PSE), le code assembleur du contexte switch de référence (dans la page 'aspects techniques')

Une fois les notions sur le changement de contexte comprises et une fois les rappels sur l'assembleur lus, nous avons implémenté le TP sur les processus TP PSE. Puis, nous avons implémenté la gestion du temps et nous avons réussi à afficher en haut à droite de l'écran une horloge indiquant depuis combien de temps le système à démarré TP PSE.

Nous nous sommes un peu perdu durant cette phase en suivant les TPs de PSE car le travail attendu dans les spécifications du projet n'est pas exactement ce que les TPs demandent. Nous nous sommes retrouvés à coder des fonctions puis les supprimer et par conséquent, nous avons perdu du temps.

Les primitives systèmes implémentées à l'issue de cette phase :

Phase 3 : Gestion du cycle de vie des processus: ordonnacement, endormissement, terminaison et filiation

100 %

Durant cette phase, nous avons géré le cycle de vie des processus. Nous avons commencé par réaliser le TP de PSE sur l'ordonanncement: ordonnancement (Séance TP PSE). Mais le TP comme mentionné dans la phase 2, ne suit pas excatement les spécifications du projet. Nous avons donc abondonné la réalisation des TPs et nous nous sommes focalisés sur les spécifications du projet.

Pour valider notre implémentation, nous avons fait passer les tests user que nous avons déplacé dans kernel. Nous avons rencontré des

Cette phase était fastidieuse, nous avons passé beaucoup de temps à fixer les bugs avec GDB. Plus particulièrement dans la fonction start. Nous avons eu un problème de nettoyage des processus mais nous avons réussi à fixer le problème.

==> Les tests 1 à 9 passent

Les primitives systèmes implémentées à l'issue de cette phase :

Phase 4 : Gestion des files de messages

90 %

Pour cette phase, nous avons commencé par la création de la structure de la File de messages. Nous avons choisi d'utiliser deux Queue : une queue pour les messages de la file et une autre queue pour les processus bloqués en attente d'émission ou de réception de messages. Ensuite, nous avons implémenté les primitives systèmes suivantes : pcreate, pdelete, psend, preceive, pcount, 'preset


==> Tests 10 à 16 passent

Les primitives systèmes implémentées à l'issue de cette phase :

Phase 5

0 %

Phase 6

0 %

Phase 7

0 %

Extensions

Journal de bord

Semaine 1

Lundi 7 juin

Phase 1 :

  • Lecture de la documentation
  • Prise en main de l'environnement

Mardi 8 juin

  • Développement de la fonction printf pour le kernel

Phase 2 :

  • Lecture de la documentation (Assembleur, timer, processus et explications sur le changement de contexte)
  • Ecriture de la fonction qui affiche une chaine de caractères en haut à droite de l'écran

Mercredi 9 juin

  • Ecriture du traitant de l'interruption 32
  • Initialisation de la table des vecteurs d'interruption

Jeudi 10 juin

  • Réglage de la fréquence de l'horloge programmable
  • Démasquage et masquage des interruption

Vendredi 11 juin

  • Création de la structure processus et du tableau des processus
  • Implémentation du changement de contexte d'exécution(ctx_sw)
  • Implémentation du mécanisme d'ordonnancement selon l'algorithme du tourniquet


Semaine 2

Phase 3 :

  • Implémentation de la fonction start pour la création des processus (sans la gestion dynamique de la taille de la pile et sans arguments en entrée)
  • Implémentation du mécanisme d'ordonnancement avec priorité (utilisation de queue.h)
  • Implémentation de la fonction de changement de priorité (chprio)

Lundi 14 juin

  • Correction de l'affichage d'une chaîne de caractères en haut à droite
  • Implémentation de wait_clock (endormissement des processus)
  • Gestion du réveil des processus

Mardi 15 juin

  • Changement de la signature de start (Allocation dynamique de la taille de la pile d'exécution et avec la récupération d'un argument à passer à la fonction appelée par le processus)

Mercredi 16 juin

  • Implémentation de la terminaison d'un processus sans argument
  • Implémentation de la récupération d'une priorité d'un processus donné par son pid

Jeudi 17 juin

  • Gestion de la filiation (père et fils)
  • Implémentation de kill
  • Implémentation de waitpid

Vendredi 18 juin

  • Implémentation d'une fonction assembleur pour le paramètre de la fonction terminaison
  • Implémentation de la fonction clock_setting et current_clock
  • Passage des tests de 1 à 7

Semaine 3

Lundi 21 juin

  • Nettoyage du code
  • Fexation de quelques bugs (réécriture de la fonction start)

Mardi 22 juin

Phase 4 :

  • Implémentation des fonctions pour la gestion des files de messages (pcreate, pdelete, psend, preceive, preset, pcount)

Mercredi 23 juin

  • Fixation des bugs des files de messages

Jeudi 24 juin

  • Gestion des valeurs de retour pour les processus remis dans l'état activable par un autre processus ayant exécuté preset et pdelete
  • Debeugage de la fonction start
  • Passage des tests 1 à 15 sauf le test 8

Vendredi 25 juin

  • Ajout de commentaires
  • Complétion de Ensiwiki

Difficultés

Le début du projet était compliqué, nous nous sommes perdus dans les documentations fournies. Nous avons également perdu du temps à suivre les TPs de PSE qui n'était pas directement le travail attendu dans les spécifications du projet.