Projet système PC : 2019 - LIMOUSIN Marylie, FAYANT Dylan : Différence entre versions
De Ensiwiki
(→Phase 3 : Ordonnancement, création dynamique et terminaison de processus de niveau noyau) |
(→Phase 6 : Gestion du clavier et implémentation d'un pilote de console) |
||
(28 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 9 : | Ligne 9 : | ||
==Planning== | ==Planning== | ||
− | [[Fichier: | + | [[Fichier:PlanningOS.png]] |
==Phases de développement== | ==Phases de développement== | ||
Ligne 20 : | Ligne 20 : | ||
=== Phase 3 : Ordonnancement, création dynamique et terminaison de processus de niveau noyau === | === Phase 3 : Ordonnancement, création dynamique et terminaison de processus de niveau noyau === | ||
− | {{Avancement | | + | {{Avancement | 100}} |
=== 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 | 100}} |
=== 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 | | + | {{Avancement | 100}} |
=== 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 === | ||
− | {{Avancement | | + | {{Avancement | 25}} |
=== Phase 7 : Implémentation d'un interprète de commandes === | === Phase 7 : Implémentation d'un interprète de commandes === | ||
Ligne 69 : | Ligne 69 : | ||
* Fin de la filiation entre processus | * Fin de la filiation entre processus | ||
* Poursuite de la terminaison d'un processus (exit, kill, waitpid) | * 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 | ||
+ | |||
+ | ====18-06-19==== | ||
+ | |||
+ | * Tests | ||
+ | * Fin des files de messages | ||
+ | * Lecture de documentation pour la phase 5 | ||
+ | |||
+ | ====19-06-19==== | ||
+ | |||
+ | * Tests | ||
+ | * Debug des files de messages | ||
+ | |||
+ | ====20-06-19==== | ||
+ | |||
+ | * Tests | ||
+ | * Debug des files de messages | ||
+ | * Lecture de documentation pour la phase 5 | ||
+ | |||
+ | ====21-06-19==== | ||
+ | |||
+ | * Passage en mode user | ||
+ | * Traitant 49 | ||
+ | |||
+ | === Semaine 4 === | ||
+ | ====24-06-19==== | ||
+ | |||
+ | * Passage de mode user à mode kernel | ||
+ | * Passage de mode kernel à mode user | ||
+ | * Debug | ||
+ | |||
+ | ====25-06-19==== | ||
+ | |||
+ | * Tests | ||
+ | * Debug | ||
+ | * Gestion des interruptions clavier | ||
+ | * Préparation soutenance | ||
==Démonstration== | ==Démonstration== | ||
+ | |||
+ | Notre OS passe les tests de 1 à 18 en mode user : | ||
+ | |||
+ | [[Fichier:Resultats_OS.png]] | ||
==Choix techniques== | ==Choix techniques== | ||
Ligne 79 : | Ligne 136 : | ||
* 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. | * 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 d'un tableau dynamique et de deux queues : un tableau de messages, une queue de Processus en attente d'écriture, une queue de Processus en attente de lecture. |
Version actuelle en date du 25 juin 2019 à 14:11
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
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
18-06-19
- Tests
- Fin des files de messages
- Lecture de documentation pour la phase 5
19-06-19
- Tests
- Debug des files de messages
20-06-19
- Tests
- Debug des files de messages
- Lecture de documentation pour la phase 5
21-06-19
- Passage en mode user
- Traitant 49
Semaine 4
24-06-19
- Passage de mode user à mode kernel
- Passage de mode kernel à mode user
- Debug
25-06-19
- Tests
- Debug
- Gestion des interruptions clavier
- Préparation soutenance
Démonstration
Notre OS passe les tests de 1 à 18 en mode user :
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 d'un tableau dynamique et de deux queues : un tableau de messages, une queue de Processus en attente d'écriture, une queue de Processus en attente de lecture.