Projet système PC : 2019 - LIMOUSIN Marylie, FAYANT Dylan : Différence entre versions
De Ensiwiki
(→Choix techniques) |
(→Phase 4 : Gestion des communications et synchronisation de processus de niveau noyau) |
||
Ligne 23 : | Ligne 23 : | ||
=== 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 | | + | {{Avancement | 70}} |
=== 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 === |
Version du 17 juin 2019 à 10:27
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 Démonstration
- 7 Choix techniques
- 8 Difficultés rencontrées
Présentation
L'objectif du projet système est le développement du noyau d'un OS compatible avec une architecture INTEL. Le projet se découpe en plusieurs phases qui à terme permettront d'avoir un système gérant les entrées sorties, un shell ainsi que les processus.
Equipe
- Marylie Limousin (filière apprentissage)
- Dylan Fayant (filière apprentissage)
Planning
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
Journal de bord
Semaine 1
05-06-19
- Prise en main des sources et de l'environnement
- Gestion de l'affichage
- Ajout d'une structure de processus et des états possibles
- Début de fonction pour le changement de contexte
06-06-19
- Création d'un processus, lancement de la fonction associée
- Changement de contexte d'un processus vers un autre
- Début d'ordonnancement et de gestion du timer
07-06-19
- Ordonnancement
- Timer
- Endormissement et réveil d'un processus
- Début de la terminaison d'un processus
Semaine 2
11-06-19
- Arguments des fonctions
- Gestion des priorités entre processus à l'aide d'une queue
- Début de la filiation entre processus
- Poursuite de la terminaison d'un processus
12-06-19
- Fin de la filiation entre processus
- Poursuite de la terminaison d'un processus (exit, kill, waitpid)
13-06-19
- Fin de la terminaison d'un processus (exit, kill, waitpid)
- Tests
- Début des files de messages
14-06-19
- Tests
- Poursuite des files de messages
Semaine 3
17-06-19
- Tests
- Poursuite des files de messages
Démonstration
Choix techniques
Processus
- Pour la gestion de la file des processus, nous avons utilisé la queue, très utile pour gérer la priorité entre processus. Il s'agit d'une file circulaire triée par priorité.
- La gestion de la filiation est faite grâce à un élément de la structure Processus : le ppid. Il s'agit du pid du processus père. De ce fait, nous pouvons retrouver facilement le père et les fils d'un processus.
File de messages
- Pour la gestion de la file des messages, nous avons utilisé un tableau statique de pointeur vers des structures de type FileMessages.
- Chaque structure FileMessages est constituté entre autres de trois queues : une queue de Messages, une queue de Processus en attente d'écriture, une queue de Processus en attente de lecture.