Projet système PC : 2019 - LOPEZ Clément, PIZZO Adrien : Différence entre versions
(→Difficultés rencontrées) |
(→Journal de bord) |
||
Ligne 52 : | Ligne 52 : | ||
'''05/06/2019 - Phase 1 - Mise en place de l'environnement''' | '''05/06/2019 - Phase 1 - Mise en place de l'environnement''' | ||
* Présentation initiale du projet par M.Mounié | * Présentation initiale du projet par M.Mounié | ||
− | * Réalisation code nécessaire à l’affichage à partir du printf. | + | * Réalisation du code nécessaire à l’affichage à partir du printf. |
− | * Débug du printf (insertion en position du tout dernier caractère entrainait la suppression de toute la ligne) | + | * Débug du printf (l'insertion en position du tout dernier caractère entrainait la suppression de toute la ligne) |
* Fin de la phase 1 | * Fin de la phase 1 | ||
'''06/06/2019 - Phase 2 - Processus''' | '''06/06/2019 - Phase 2 - Processus''' | ||
* Création de la structure processus | * Création de la structure processus | ||
− | * | + | * Implémentation de la fonction start |
'''07/06/2019 - Phase 2 - Horloge''' | '''07/06/2019 - Phase 2 - Horloge''' | ||
Ligne 75 : | Ligne 75 : | ||
'''13/06/2019 - Phase 2 - Interruptions''' | '''13/06/2019 - Phase 2 - Interruptions''' | ||
* Matinée de debug avec Monsieur Reignier. GDB c'est bien, c'est passionnant. | * Matinée de debug avec Monsieur Reignier. GDB c'est bien, c'est passionnant. | ||
− | * Après-midi : Nous avons compris la source de notre erreur sur la | + | * Après-midi : Nous avons compris la source de notre erreur sur la phase 2, à savoir notre structure statique de processus qui est présente simplement pour le test, nous sommes ravis. |
− | * Debut modification de la fonction start pour | + | * Debut modification de la fonction start pour gérer les queues. |
'''17/06/2019 - Phase 3 ''' | '''17/06/2019 - Phase 3 ''' | ||
Ligne 83 : | Ligne 83 : | ||
* Implémentation chprio. | * Implémentation chprio. | ||
* Passage des tests 3 & 4 sans trop de soucis. | * Passage des tests 3 & 4 sans trop de soucis. | ||
− | * Modification waitpid (suppression du processus qu'on | + | * Modification waitpid (suppression du processus qu'on attend dans la liste des fils). |
* Debug pour le test 5 : OK. | * Debug pour le test 5 : OK. | ||
Ligne 89 : | Ligne 89 : | ||
* Matin : passage tests 6 à 8 | * Matin : passage tests 6 à 8 | ||
* wait_clock & passage test9 | * wait_clock & passage test9 | ||
− | * Après midi : nous sommes revenus sur les processus pour la libération de la mémoire, cela | + | * Après midi : nous sommes revenus sur les processus pour la libération de la mémoire, cela a entrainé des complications |
* Debug libération de la mémoire : OK | * Debug libération de la mémoire : OK | ||
'''19/05/2019 - Phase 4''' | '''19/05/2019 - Phase 4''' | ||
* Structure files | * Structure files | ||
− | * Implémentation des fonctions psend pdelete, pcreate | + | * Implémentation des fonctions psend, pdelete, pcreate |
* Mise en place de l'environnement sur l'ordinateur personnel de M. PIZZO | * Mise en place de l'environnement sur l'ordinateur personnel de M. PIZZO | ||
Ligne 106 : | Ligne 106 : | ||
'''24/05/2019 - Phase 4''' | '''24/05/2019 - Phase 4''' | ||
− | * pcreate : vérification que les mem_alloc ont | + | * pcreate : vérification que les mem_alloc ont fonctionné. -> Passage de la première partie du test 17. |
* Ajustement de constantes. | * Ajustement de constantes. | ||
'''25/05/2019 - Revue du code''' | '''25/05/2019 - Revue du code''' | ||
− | * | + | * Relecture du code. |
− | * | + | * Refactorisation du code. |
==Difficultés rencontrées== | ==Difficultés rencontrées== | ||
*Phase2 : Notre pseudo queue statique a entraîné plusieurs jours de debug puisque nous pensions que le problème venait de la fonction start. | *Phase2 : Notre pseudo queue statique a entraîné plusieurs jours de debug puisque nous pensions que le problème venait de la fonction start. | ||
*Test13 : nous avons pris une journée entière pour comprendre et debug le test, nous avions un soucis sur l'immédiateté et sur l'ordonnancement. | *Test13 : nous avons pris une journée entière pour comprendre et debug le test, nous avions un soucis sur l'immédiateté et sur l'ordonnancement. |
Version du 25 juin 2019 à 09:40
![]() | |
---|---|
Titre du projet | WIP |
Cadre | Projet système
|
Équipe | Clément LOPEZ, Adrien PIZZO |
Encadrants | Yves Denneulin , Gregory Mounie, Patrick Reignier |
Sommaire
- 1 Présentation
- 2 Equipe
- 3 Planning
- 4 Phases de développement
- 4.1 Phase 1 : prise en main de l'environnement
- 4.2 Phase 2 : Création et lancement de processus de niveau noyau
- 4.3 Phase 3 : Ordonnancement, création dynamique et terminaison de processus de niveau noyau
- 4.4 Phase 4 : Gestion des communications et synchronisation de processus de niveau noyau
- 4.5 Phase 5 : Séparation des espaces mémoire noyau et utilisateur : gestion de processus utilisateur
- 4.6 Phase 6 : Gestion du clavier et implémentation d'un pilote de console
- 4.7 Phase 7 : Implémentation d'un interprète de commandes
- 5 Journal de bord
- 6 Difficultés rencontrées
Présentation
Le projet système nous permet de développer le noyau d'un OS. Le projet est sous-découpé en plusieurs phases distinctes qui, si elles sont toutes réalisées, permettront d'avoir un système gérant les entrées sorties, les processus, la gestion clavier et un shell.
Equipe
- Clément LOPEZ (filière apprentissage)
- Adrien PIZZO (filière apprentissage)
Planning
Planning prévisionnel
Planning effectif
Phases de développement
Phase 1 : prise en main de l'environnement
Cette phase permet de re prendre en main le projet de l'année précédente et se re habituer à tester et déboguer le code. Nous avons notamment appris à nouveau à utiliser GDB.
Phase 2 : Création et lancement de processus de niveau noyau
Au cours de cette phase nous avons implémenté la création de processus et le changement de contexte entre deux processus. La gestion de l'horloge et des interruptions qui lui sont liés est également issue de cette phase. Cette partie sert à obtenir un système à temps partagé.
Phase 3 : Ordonnancement, création dynamique et terminaison de processus de niveau noyau
Cette phase consiste à gérer le cycle de vie des processus (ordonnancement selon l'algorithme du tourniquet, terminaison, filiation).
Phase 4 : Gestion des communications et synchronisation de processus de niveau noyau
Nous avons mis en place une structure de données permettant à des processus de se communiquer des informations et de se synchroniser selon le modèle producteur consommateur. La gestion de l'endormissement fait également partie de cette phase.
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
Journal de bord
05/06/2019 - Phase 1 - Mise en place de l'environnement
- Présentation initiale du projet par M.Mounié
- Réalisation du code nécessaire à l’affichage à partir du printf.
- Débug du printf (l'insertion en position du tout dernier caractère entrainait la suppression de toute la ligne)
- Fin de la phase 1
06/06/2019 - Phase 2 - Processus
- Création de la structure processus
- Implémentation de la fonction start
07/06/2019 - Phase 2 - Horloge
- Debug de la fonction start --> Le context_switch se fait (enfin) !
- Debut implementation scheduler & horloge
11/06/2019 - Phase 2 - Interruptions
- Gestion des interruptions.
- Modifications horloge.
- Debug gestion du context_switch pour les interruptions... to be continued...
12/06/2019 - Phase 2 - Interruptions
- On a continué le debug gestion du context_switch pour les interruptions... to be continued...
- Commencement phase 3 : primitive + logique ordonnancement à l'aide de queues.
13/06/2019 - Phase 2 - Interruptions
- Matinée de debug avec Monsieur Reignier. GDB c'est bien, c'est passionnant.
- Après-midi : Nous avons compris la source de notre erreur sur la phase 2, à savoir notre structure statique de processus qui est présente simplement pour le test, nous sommes ravis.
- Debut modification de la fonction start pour gérer les queues.
17/06/2019 - Phase 3
- Implémentation waitpid.
- Passage des tests 1 & 2 (nous avons fais du debug).
- Implémentation chprio.
- Passage des tests 3 & 4 sans trop de soucis.
- Modification waitpid (suppression du processus qu'on attend dans la liste des fils).
- Debug pour le test 5 : OK.
18/05/2019 - Phase 3 & Phase 4
- Matin : passage tests 6 à 8
- wait_clock & passage test9
- Après midi : nous sommes revenus sur les processus pour la libération de la mémoire, cela a entrainé des complications
- Debug libération de la mémoire : OK
19/05/2019 - Phase 4
- Structure files
- Implémentation des fonctions psend, pdelete, pcreate
- Mise en place de l'environnement sur l'ordinateur personnel de M. PIZZO
20/05/2019 - Phase 4
- Fin des primitives de files
- Passage tests 10 à 12
- Passage tests 14 et 15
21/05/2019 - Phase 4
- Passage du test 13 (Nous avons du beaucoup reprendre psend et preceive pour l'immédiateté).
24/05/2019 - Phase 4
- pcreate : vérification que les mem_alloc ont fonctionné. -> Passage de la première partie du test 17.
- Ajustement de constantes.
25/05/2019 - Revue du code
- Relecture du code.
- Refactorisation du code.
Difficultés rencontrées
- Phase2 : Notre pseudo queue statique a entraîné plusieurs jours de debug puisque nous pensions que le problème venait de la fonction start.
- Test13 : nous avons pris une journée entière pour comprendre et debug le test, nous avions un soucis sur l'immédiateté et sur l'ordonnancement.