Projet système PC : 2018 - LAURENT Nils, ANGELY Alexis : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Page créée avec « {{Projet Étudiant |cadre=Projet système |titre= |equipe=[mailto:alexis.angely@ensimag.org Alexis Angély] [mailto:nils.laurent@ensimag.org Nils Laurent] |encadrants=... »)
 
(Répartition des tâches)
 
(29 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 
{{Projet Étudiant
 
{{Projet Étudiant
 
  |cadre=Projet système
 
  |cadre=Projet système
  |titre=
+
  |titre=DionysOS
 
  |equipe=[mailto:alexis.angely@ensimag.org Alexis Angély] [mailto:nils.laurent@ensimag.org Nils Laurent]
 
  |equipe=[mailto:alexis.angely@ensimag.org Alexis Angély] [mailto:nils.laurent@ensimag.org Nils Laurent]
 
  |encadrants=[mailto:julie.dumas@univ-grenoble-alpes.fr Julie Dumas ], [mailto:Gregory.Mounie@imag.fr Gregory Mounie], [mailto:Patrick.Reignier@imag.fr Patrick Reignier ]}}
 
  |encadrants=[mailto:julie.dumas@univ-grenoble-alpes.fr Julie Dumas ], [mailto:Gregory.Mounie@imag.fr Gregory Mounie], [mailto:Patrick.Reignier@imag.fr Patrick Reignier ]}}
  
 
== Présentation ==
 
== Présentation ==
 +
 +
Le projet système a pour but la réalisation d'un système d'exploitation sur une architecture Intel.
 +
 +
== Répartition des tâches ==
 +
Nous avons adopté plusieurs méthodologies selon les situations :
 +
* Quand il manque des tests, une personne en rédige et l'autre développe des fonctionnalités
 +
** On alterne la personne qui écrit les tests (ou qui améliore le mécanisme de test)
 +
* Quand possible, développement en parallèle sur des fonctionnalités
 +
* Quand on bloque sur une fonctionnalité critique, on debug à deux
 +
 +
==Planning effectif==
 +
 +
[[Fichier:PSE18_Angely_Laurent_Gantt_effectif.png]]
  
 
==Journal de bord==
 
==Journal de bord==
Ligne 12 : Ligne 25 :
  
 
==== 07 juin 2018 ====
 
==== 07 juin 2018 ====
 +
Prise en main de l'environnement de développement, développement des processus
 +
 +
Mise en place de l'affichage, réflexion sur la mise en œuvre de tests
  
 
==== 08 juin 2018 ====
 
==== 08 juin 2018 ====
 +
Tests de printf.
 +
 +
Développement des processus et des interruptions.
  
 
=== Semaine 2 ===
 
=== Semaine 2 ===
  
 
==== 11 juin 2018 ====
 
==== 11 juin 2018 ====
 +
Interruption et horloge intégrées. Ajout d'un fichier tests.sh pour lancer tous les tests dans le fichier tests.
 +
 +
Context_switch utilisé par l'ordonnanceur.
 +
 
==== 12 juin 2018 ====
 
==== 12 juin 2018 ====
 +
Développements de l'ordonnanceur, amélioration du mécanisme de tests.
 +
 
==== 13 juin 2018 ====
 
==== 13 juin 2018 ====
 +
Développement de l'état sleep des processus, modification du système de test.
 +
 
==== 14 juin 2018 ====
 
==== 14 juin 2018 ====
 +
Débug et fix de la gestion de l'endormissement, modification du système de test.
 +
 
==== 15 juin 2018 ====
 
==== 15 juin 2018 ====
 +
Développement de la filiation des processus, ajout de tests d'endormissement de processus.
  
 
=== Semaine 3 ===
 
=== Semaine 3 ===
  
 
==== 18 juin 2018 ====
 
==== 18 juin 2018 ====
 +
Développement de la relation père-fils entre processus, suppression des processus.
 +
 
==== 19 juin 2018 ====
 
==== 19 juin 2018 ====
 +
Gestion des fins d'un processus.
 +
 +
Réflexion sur les files de messages.
 +
 
==== 20 juin 2018 ====
 
==== 20 juin 2018 ====
 +
Développement des files de messages.
 +
 +
Correction de tests concernant l'arrêt de processus.
 +
 
==== 21 juin 2018 ====
 
==== 21 juin 2018 ====
 +
Développement des files de messages et tests sur les files de messages.
 +
 
==== 22 juin 2018 ====
 
==== 22 juin 2018 ====
 +
 +
Développement des files de messages
  
 
=== Semaine 4 ===
 
=== Semaine 4 ===
  
 
==== 25 juin 2018 ====
 
==== 25 juin 2018 ====
 +
Debug des files de messages.
 +
 
==== 26 juin 2018 ====
 
==== 26 juin 2018 ====
==== 27 juin 2018 ====
+
 
 +
Suppression des fichiers et des fonctions inutilisées.
 +
 
 +
Renommage et clarification des noms de fonctions et du nom des fichiers sources.
  
 
== Réalisation des différentes phases ==
 
== Réalisation des différentes phases ==
  
 
=== Phase 1 ===
 
=== Phase 1 ===
{{Avancement | 0}}
+
{{Avancement | 100}}
  
 
=== Phase 2 ===
 
=== Phase 2 ===
{{Avancement | 0}}
+
{{Avancement | 100}}
  
 
=== Phase 3 ===
 
=== Phase 3 ===
{{Avancement | 0}}
+
{{Avancement | 100}}
  
 
=== Phase 4 ===  
 
=== Phase 4 ===  
{{Avancement | 0}}
+
{{Avancement | 100}}
  
 
=== Phase 5 ===
 
=== Phase 5 ===
{{Avancement | 0}}
+
{{Avancement | 1}}
  
 
=== Phase 6 ===
 
=== Phase 6 ===
Ligne 61 : Ligne 110 :
  
 
== Choix techniques ==
 
== Choix techniques ==
 +
Deux listes sont utilisées pour garder en mémoire les processus qui peuvent être utilisés et les non utilisables. Ces listes utilisent le fichier queue.h fournit car cela permet d'insérer les processus en fonction de leur priorité et de leur date d’insertion, donc le processus en tête de liste est toujours celui qui doit s’exécuter. 
 +
 +
Utilisation de la bibliothèque [https://troydhanson.github.io/uthash/utlist.html utlist] pour les listes des messages et la liste des fils d'un processus. Cette bibliothèque a été utilisé car elle est réputée et fiable, car développer une structure de données nous aurez fait perdre du temps et des problèmes potentiels supplémentaires. De plus, comparer à la liste fournit, utlist permet de supprimer un élément d'une liste spécifique.
 +
 +
== Difficultés rencontrées ==
 +
Perte de temps sur la phase 3 à développer des tableaux dynamiques que l'on a changé pour des listes avec la bibliothèque utlist. Plusieurs problèmes sont apparus à cause du développement de ces tableaux dynamiques, on a donc choisi de prendre une bibliothèque extérieure pour se concentrer sur le développement de la phase 3. 
 +
 +
Difficultés lors de la phase 4, problème de compréhension des fonctions psend et preceive ce qui nous à fait perdre beaucoup de temps.

Version actuelle en date du 26 juin 2018 à 16:38

Project schedule.png
Titre du projet DionysOS
Cadre Projet système

Équipe Alexis Angély Nils Laurent
Encadrants Julie Dumas , Gregory Mounie, Patrick Reignier


Présentation

Le projet système a pour but la réalisation d'un système d'exploitation sur une architecture Intel.

Répartition des tâches

Nous avons adopté plusieurs méthodologies selon les situations :

  • Quand il manque des tests, une personne en rédige et l'autre développe des fonctionnalités
    • On alterne la personne qui écrit les tests (ou qui améliore le mécanisme de test)
  • Quand possible, développement en parallèle sur des fonctionnalités
  • Quand on bloque sur une fonctionnalité critique, on debug à deux

Planning effectif

PSE18 Angely Laurent Gantt effectif.png

Journal de bord

Semaine 1

07 juin 2018

Prise en main de l'environnement de développement, développement des processus

Mise en place de l'affichage, réflexion sur la mise en œuvre de tests

08 juin 2018

Tests de printf.

Développement des processus et des interruptions.

Semaine 2

11 juin 2018

Interruption et horloge intégrées. Ajout d'un fichier tests.sh pour lancer tous les tests dans le fichier tests.

Context_switch utilisé par l'ordonnanceur.

12 juin 2018

Développements de l'ordonnanceur, amélioration du mécanisme de tests.

13 juin 2018

Développement de l'état sleep des processus, modification du système de test.

14 juin 2018

Débug et fix de la gestion de l'endormissement, modification du système de test.

15 juin 2018

Développement de la filiation des processus, ajout de tests d'endormissement de processus.

Semaine 3

18 juin 2018

Développement de la relation père-fils entre processus, suppression des processus.

19 juin 2018

Gestion des fins d'un processus.

Réflexion sur les files de messages.

20 juin 2018

Développement des files de messages.

Correction de tests concernant l'arrêt de processus.

21 juin 2018

Développement des files de messages et tests sur les files de messages.

22 juin 2018

Développement des files de messages

Semaine 4

25 juin 2018

Debug des files de messages.

26 juin 2018

Suppression des fichiers et des fonctions inutilisées.

Renommage et clarification des noms de fonctions et du nom des fichiers sources.

Réalisation des différentes phases

Phase 1

100 %

Phase 2

100 %

Phase 3

100 %

Phase 4

100 %

Phase 5

1 %

Phase 6

0 %

Phase 7

0 %

Choix techniques

Deux listes sont utilisées pour garder en mémoire les processus qui peuvent être utilisés et les non utilisables. Ces listes utilisent le fichier queue.h fournit car cela permet d'insérer les processus en fonction de leur priorité et de leur date d’insertion, donc le processus en tête de liste est toujours celui qui doit s’exécuter.

Utilisation de la bibliothèque utlist pour les listes des messages et la liste des fils d'un processus. Cette bibliothèque a été utilisé car elle est réputée et fiable, car développer une structure de données nous aurez fait perdre du temps et des problèmes potentiels supplémentaires. De plus, comparer à la liste fournit, utlist permet de supprimer un élément d'une liste spécifique.

Difficultés rencontrées

Perte de temps sur la phase 3 à développer des tableaux dynamiques que l'on a changé pour des listes avec la bibliothèque utlist. Plusieurs problèmes sont apparus à cause du développement de ces tableaux dynamiques, on a donc choisi de prendre une bibliothèque extérieure pour se concentrer sur le développement de la phase 3.

Difficultés lors de la phase 4, problème de compréhension des fonctions psend et preceive ce qui nous à fait perdre beaucoup de temps.