Projet système PC : 2019 - LIMOUSIN Marylie, FAYANT Dylan : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Phase 6 : Gestion du clavier et implémentation d'un pilote de console)
 
(31 révisions intermédiaires par le même utilisateur non affichées)
Ligne 9 : Ligne 9 :
  
 
==Planning==
 
==Planning==
[[Fichier:Planning1.png]]
+
[[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 | 25}}
+
{{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 | 0}}
+
{{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 | 0}}
+
{{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 | 0}}
+
{{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 76 : Ligne 133 :
 
=== Processus ===  
 
=== 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é par priorité.
+
* 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.
+
* 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 ===
  
==Difficultés rencontrées==
+
* 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

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

Planning

PlanningOS.png

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

100 %

Phase 6 : Gestion du clavier et implémentation d'un pilote de console

25 %

Phase 7 : Implémentation d'un interprète de commandes

0 %

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 :

Resultats OS.png

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.