Projet système PC : 2019 - GRAVALLON Guillaume, MOISSIARD Anael
De Ensiwiki
Révision de 17 juin 2019 à 14:42 par Moissiaa (discussion | contributions) (→Phase 4 : Gestion des communications et synchronisation de processus de niveau noyau)
![]() | |
---|---|
Titre du projet | MorphOS |
Cadre | Projet système
|
Équipe | Guillaume Gravallon, Anaël Moissiard |
Encadrants | Yves Denneulin , Gregory Mounie, Patrick Reignier |
Sommaire
- 1 Présentation
- 2 Equipe
- 3 Phases de développement
- 3.1 Phase 1 : prise en main de l'environnement
- 3.2 Phase 2 : Création et lancement de processus de niveau noyau
- 3.3 Phase 3 : Ordonnancement, création dynamique et terminaison de processus de niveau noyau
- 3.4 Phase 4 : Gestion des communications et synchronisation de processus de niveau noyau
- 3.5 Phase 5 : Séparation des espaces mémoire noyau et utilisateur : gestion de processus utilisateur
- 3.6 Phase 6 : Gestion du clavier et implémentation d'un pilote de console
- 3.7 Phase 7 : Implémentation d'un interprète de commandes
- 3.8 Tests Kernel
- 3.9 Tests User
- 4 Journal de bord
- 5 Difficultés rencontrées
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
- Guillaume GRAVALLON (filière apprentissage)
- Anaël MOISSIARD (filière apprentissage)
Phases de développement
Phase 1 : prise en main de l'environnement
Phase 2 : Création et lancement de processus de niveau noyau
Phase 3 : Ordonnancement, création dynamique et terminaison de processus de niveau noyau
Phase 4 : Gestion des communications et synchronisation de processus de niveau noyau
Phase 5 : Séparation des espaces mémoire noyau et utilisateur : gestion de processus utilisateur
Phase 6 : Gestion du clavier et implémentation d'un pilote de console
Phase 7 : Implémentation d'un interprète de commandes
Tests Kernel
Tests User
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
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