Projet système PC : 2019 - RAFFY Anthony, LUO Siwen : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Jeudi 6 Juin 2019)
(Mardi 11 Juin 2019)
Ligne 73 : Ligne 73 :
  
 
==== Mardi 11 Juin 2019 ====
 
==== Mardi 11 Juin 2019 ====
 +
* Début de phase 3
 
* Ajout de tests pour vérifier le fonctionnement de context-switch entre deux différents processus.
 
* Ajout de tests pour vérifier le fonctionnement de context-switch entre deux différents processus.
 
* Développement des fonctions d'endormissement. (sleep, wait_clock)
 
* Développement des fonctions d'endormissement. (sleep, wait_clock)

Version du 17 juin 2019 à 08:28

Project schedule.png
Titre du projet NullOS
Cadre Projet système

Équipe Anthony RAFFY, Siwen LUO
Encadrants Yves Denneulin , Gregory Mounie, Patrick Reignier


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 (le risc-v 64 bits).

Equipe

Planning

Planning prévisionnel

Previsionnel luo.png

Planning effectif

Fonctionnalités réalisées

Extensions réalisées

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

0 %

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 %

Mise en oeuvre

Mercredi 5 Juin 2019

  • Présentation initiale du projet par M. Mounié
  • Création d'un script permettant de faciliter le lancement de QEMU et GDB.
  • Anthony et Siwen : Mise en place (en parallèle) du code nécessaire à l’affichage et à la gestion du curseur.
  • Fin de la phase 1.

Jeudi 6 Juin 2019

  • Début de phase 2
  • Ajout de tests sur l'affichage afin de couvrir l'ensemble des cas possibles.
  • Mise en place des structures de code permettant le changement de contexte et la création de processus.
  • Début de développement sur les files de priorité afin de préparer la phase 3.
  • Développement de tests basiques sur le changement de contexte : deux processus affichant chacun un caractère et donnant la priorité au processus bloqué.

Vendredi 7 Juin 2019

  • Développement des fonctions permettant le masquage et le démasquage des interruptions.
  • Développement du traitant d'interruption pour l'interruption d'horloge.
  • Développement de la fonction permettant le réglage de la fréquence horloge.
  • Mise en place de la logique de l'ordonnanceur en utilisant la priorité de chaque processus.
  • Mise en place du processus "idle" au cas où aucun autre processus n'est actif.
  • Fin de la phase 2.

Mardi 11 Juin 2019

  • Début de phase 3
  • Ajout de tests pour vérifier le fonctionnement de context-switch entre deux différents processus.
  • Développement des fonctions d'endormissement. (sleep, wait_clock)
  • Développement des fonctions de terminaisons. (exit, kill)
  • Modification du changement de contexte pour tenir compte de la terminaison.
  • Modification de l'ordonnancement pour tenir compte des processus endormis et terminés.
  • Amélioration du code pour une meilleur lisibilité et maintenance.

Mercredi 12 Juin 2019

  • Ajout de tests permettants de vérifier le fonctionnement de primitives kill() et start().
  • Ajout de structures pour gérer la filiation.
  • Développement des fonctions de filiations (waitpid) et de l'état "en attente d'un fils".
  • Modification de l'ordonnancement pour gérer la filiation (fils zombie)
  • Ajout d'autres appels systèmes (chprio, getprio)
  • Fin de la phase 3
  • Ajout de tests afin de vérifier le fonctionnement de l'ordonnanceur, dans les cas où il existe un fil d'attente de processus, soient les pères ou les fils, soient les processus qui finissent automatiquement, ou ne se terminent jamais tous seuls.
  • Début de la phase 4 : file de messages
  • Changement des méthodes des listes chainées pour en faire des macros, afin de pouvoir les utiliser avec les files.
  • Modification de la structure de processus pour ajouter un état "en attente d'une entrée-sortie"
  • Ajout de tests pour la phase 4.
  • Ajout de pcreate().
  • Mise en place de la structure pour gérer les files.

Jeudi 13 Juin 2019

  • En cours de phase 4.
  • Ajout des fonctions pcreate() et psend().
  • Modification de l'ordonnancement pour tenir compte de l'état "en attente d'une entrée-sortie".
  • Modification du code pour lancer les tests de base.
  • Correction d'une erreur avec la valeur de retour de kill().
  • Ajout des tests permettants de vérifier le fonctionnement des primitives sleep(), waitclock(), kill() et waitpid().

Vendredi 14 Juin 2019

Apports & Difficultés rencontrées

Difficultés rencontrées

1, Reprise des connaissances de l'assembleur et de l'exécution de pile.

Apports