Projet système PC : 2019 - GRAVALLON Guillaume, MOISSIARD Anael : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Tests Kernel)
(Phase 4 : Gestion des communications et synchronisation de processus de niveau noyau)
(Une révision intermédiaire par le même utilisateur non affichée)
Ligne 28 : Ligne 28 :
  
 
=== Phase 4 : Gestion des communications et synchronisation de processus de niveau noyau ===
 
=== Phase 4 : Gestion des communications et synchronisation de processus de niveau noyau ===
{{Avancement | 10}}
+
{{Avancement | 15}}
  
 
=== Phase 5 : Séparation des espaces mémoire noyau et utilisateur : gestion de processus utilisateur ===
 
=== Phase 5 : Séparation des espaces mémoire noyau et utilisateur : gestion de processus utilisateur ===
Ligne 104 : Ligne 104 :
 
'''Tests Kernel :'''
 
'''Tests Kernel :'''
 
* Correction de bugs pour le passage des tests Kernel 6 à 9
 
* Correction de bugs pour le passage des tests Kernel 6 à 9
 +
'''Phase 4 :'''
 +
* Réflexions sur les files de messages et début de création des structures et primitives associées
  
 
==Difficultés rencontrées==
 
==Difficultés rencontrées==
 
* Difficultés pour identifier l'origine de certains bugs, l'utilisation de gdb avec Qemu pour examiner la mémoire n'étant pas forcément triviale pour les non initiés
 
* Difficultés pour identifier l'origine de certains bugs, l'utilisation de gdb avec Qemu pour examiner la mémoire n'étant pas forcément triviale pour les non initiés

Version du 14 juin 2019 à 13:24

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

Équipe Guillaume Gravallon, Anaël Moissiard
Encadrants Yves Denneulin , Gregory Mounie, Patrick Reignier


Présentation

Voici la page de présentation du Projet Système réalisé dans le cadre de notre 2ème année en apprentissage à l'ENSIMAG.

L'objectif de ce projet est la réalisation, à partir de presque rien, d'un noyau de système d'exploitation sur une architecture Intel x86.

Equipe

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

15 %

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 %

Tests Kernel

45 %

Tests User

0 %

Journal de bord

Semaine 1

05 Juin 2019

Phase 1 :

  • Découverte et prise en main de l'environnement
  • Récupération et modification du code utilisé en cours de Logiciel de Base de 1ère année pour permettre l'affichage de caractères à l'écran

Phase 2 :

  • Création de la structure des processus
  • Début de travail sur le lancement de processus et le changement de contexte entre processus

06 Juin 2019

Phase 2 :

  • Correction de la structure des processus
  • Lancement des processus
  • Changement de contexte entre processus

07 Juin 2019

Phase 2 :

  • Gestion des interruptions de l'horloge afin de procéder au changement de contexte entre processus à une fréquence déterminée

Phase 3 :

  • Mise en place de l'ordonnancement grâce aux macros de gestion de liste chaînée pré-existantes
  • Adaptation du changement de contexte pour la compatibilité avec la liste chaînée

Semaine 2

11 Juin 2019

Phases précédentes :

  • Correction d'erreurs concernant le défilement à l'écran et le changement de processus

Phase 3 :

  • Création dynamique de processus
  • Réflexion sur la filiation entre processus et la terminaison de processus

12 Juin 2019

Phase 3 :

  • Travail sur les primitives de gestion des processus:
    • Terminaison du processus actif
    • Terminaison d'un autre processus
    • Obtention de la priorité d'un processus
    • Obtention du PID du processus appelant
  • Ajout de la gestion dynamique des identifiants de processus, avec possibilité pour un nouveau processus de récupérer l'identifiant d'un processus préalablement détruit
  • Gestion de la fin de processus lorsque la fonction se termine
  • Amélioration de la fonction d'ordonnancement

13 Juin 2019

Phase 3 :

  • Finalisation des primitives de processus:
    • Attente d'un processus fils par son père
    • Correction sur les suppression de processus

Phase 4 :

  • Endormissement des processus
  • Ajout d'un processus idle qui prend la main lorsqu'il n'y a aucun autre processus activable

Tests Kernel :

  • Correction de bugs pour le passage des tests Kernel 1 à 5

14 Juin 2019

Tests Kernel :

  • Correction de bugs pour le passage des tests Kernel 6 à 9

Phase 4 :

  • Réflexions sur les files de messages et début de création des structures et primitives associées

Difficultés rencontrées

  • Difficultés pour identifier l'origine de certains bugs, l'utilisation de gdb avec Qemu pour examiner la mémoire n'étant pas forcément triviale pour les non initiés