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

De Ensiwiki
Aller à : navigation, rechercher
(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 31 : Ligne 31 :
  
 
=== 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 ===
{{Avancement | 60}}
+
{{Avancement | 90}}
  
 
=== Phase 6 : Gestion du clavier et implémentation d'un pilote de console ===
 
=== Phase 6 : Gestion du clavier et implémentation d'un pilote de console ===

Version du 21 juin 2019 à 12:10

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

100 %

Phase 5 : Séparation des espaces mémoire noyau et utilisateur : gestion de processus utilisateur

90 %

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

100 %

Tests User

80 %

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

Semaine 3

17 Juin 2019

Phase 4 :

  • Création des primitives liées aux communications par messages entre processus

Tests Kernel :

  • Validation des tests 10 à 12

18 Juin 2019

Phase 4 :

  • Rectification des primitives liées au communications de messages

Tests Kernel :

  • Validation des tests 13 à 16 et 20

19 Juin 2019

Phase 5 :

  • Travail sur l'initialisation de processus utilisateurs
  • Saut du mode kernel au mode utilisateur
  • Début de mise en place des interruptions qui permettront d'effectuer les appels systèmes

20 Juin 2019

Tests Kernel :

  • Validation du test 17.

Note : Les tests 17, 18 et 19 ne sont pas destinés à être exécutés en mode Kernel, leur validation est optionnelle ou impossible.

Phase 5 :

  • Finalisation du saut du mode kernel au mode user lors du lancement du système
  • Rectification de la procédure de déclenchement et de la gestion de l'interruption 49
  • Mise en place de la bibliothèque d'appels système

21 Juin 2019

Phase 5 :

  • Libération de pile user anciennement allouée

Tests User :

  • Validation des tests 1 à 6, 8, 10 à 17 et 20

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.
  • La phase 5, et notamment le passage en mode user depuis le mode kernel, était assez complexe et nécessitait une compréhension assez fine des mécanismes du processeur. Développer le code nécessaire à cette étape a sans nul doute été la partie la plus difficile du projet.