Projet système PC : 2019 - BONNECHÈRE Jean-Baptiste, HUANG Jérôme, HUANG Laurent, LAFFONT Florian, POTONG MBOUCHEKO Valderane, YOEUNG Michel : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
(Phase 6 : Gestion du clavier et implémentation d'un pilote de console)
 
(6 révisions intermédiaires par 3 utilisateurs non affichées)
Ligne 39 : Ligne 39 :
  
 
=== 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 | 1}}
+
{{Avancement | 5}}
Phase commencée très tard à cause des retards duent à la phase 5 et de la dépendance entre la phase 5 et celle-ci
+
Phase commencée très tard à cause des retards dus à la phase 5 et de la dépendance entre la phase 5 et celle-ci
  
 
=== Phase 7 : Implémentation d'un interprète de commandes ===
 
=== Phase 7 : Implémentation d'un interprète de commandes ===
 
{{Avancement | 0}}
 
{{Avancement | 0}}
 +
Phase commencée très tard à cause des retards dus à la phase 5 et de la dépendance entre la phase 5 et celle-ci
  
 
==Journal de bord==
 
==Journal de bord==
Ligne 87 : Ligne 88 :
 
=== Semaine 6 - 20/03/19 et 22/03/19 ===
 
=== Semaine 6 - 20/03/19 et 22/03/19 ===
  
 +
*Phase 3: Suite d'implémentation des différents fonctions de cycle de vie tels que waitpid, start
 
*Phase 4: La phase 4 a été finie, elle doit être déboguée
 
*Phase 4: La phase 4 a été finie, elle doit être déboguée
*Phase 4: Ecriture de tests robustes pour la phase 3
+
* Test: écriture de tests robustes pour la phase 3, test de l'atteinte du nombre maximal de processus
 +
 
  
 
=== Semaine 7 - 27/03/19 et 29/03/19 ===
 
=== Semaine 7 - 27/03/19 et 29/03/19 ===
  
* Phase 3: Bien testée et validée
+
* Phase 3: Fin d'implémentation et passage des tests
 
* Phase 4: Correction des incluse
 
* Phase 4: Correction des incluse
 
* phase 5 : Analyse et compréhension de la spécification
 
* phase 5 : Analyse et compréhension de la spécification
 +
* Test: test waitpid, test0 du professeur, test de contexte switch, test d'ordonnancement préemptif, test plus poussé de print, test de temps partagés, test de file de messages, test de l'ordonnancement avec priorité, test de l'exit et test de start
 +
       
  
 
=== Semaine 8 - 03/04/19 et 05/04/19 ===
 
=== Semaine 8 - 03/04/19 et 05/04/19 ===
Ligne 100 : Ligne 105 :
 
* Phase 4: Le débogage commence : ajout de message dans une file, récupération du message, suppression de la file, reset de la file, processus bloqué sur file pleine/vide
 
* Phase 4: Le débogage commence : ajout de message dans une file, récupération du message, suppression de la file, reset de la file, processus bloqué sur file pleine/vide
 
* phase 5 : Spécification très peu comprise pour la mémoire virtuelle, début d'implémentation de l'API d'appels système et changement de mode.
 
* phase 5 : Spécification très peu comprise pour la mémoire virtuelle, début d'implémentation de l'API d'appels système et changement de mode.
 +
* Test: test de synchronisation dans les files de messages, test de destruction de files de messages, de reset de files de messages, de remplissage à plein des files de messages, test de kill, test d'endormissement waitclock
 +
  
 
=== Dernière séquence - à partir du 7/04/19 ===
 
=== Dernière séquence - à partir du 7/04/19 ===
  
 
* Phase 5: Débuts de la gestion de la mémoire virtuelle
 
* Phase 5: Débuts de la gestion de la mémoire virtuelle
* Phase 5: Gestion terminée des API, appels systèmes depuis le client
+
* Phase 5: Gestion terminée des API, appels système depuis le client
 
* Phase 6: Attente que la mémoire virtuelle soit terminée pour pouvoir commencer
 
* Phase 6: Attente que la mémoire virtuelle soit terminée pour pouvoir commencer
 
* Phase 7: Attente que la mémoire virtuelle soit terminée pour pouvoir commencer
 
* Phase 7: Attente que la mémoire virtuelle soit terminée pour pouvoir commencer
 
* Test: appels d'une fonction privilégiée à travers le kernel
 
* Test: appels d'une fonction privilégiée à travers le kernel
 
* Code: Nettoyage du code et du dépôt git
 
* Code: Nettoyage du code et du dépôt git
 +
 +
 +
==Apports du projet==
 +
Ce projet a été pour nous l'occasion de découvrir plus en profondeur les dessous d'un système d'exploitation. Il nous a permis de mieux comprendre le fonctionnement de systèmes d'exploitation que nous utilisons tous les jours. Nous avons pu en connaître plus dans l'architecture étudiée. Nous avons acquis des connaisances solides sur des concepts bas niveau à l’œuvre dans la gestion d'un système d'exploitation.
 +
Ce projet a aussi été l'occasion d'aller chercher des informations dans une documentation officielle

Version actuelle en date du 24 mai 2019 à 10:01

Projet Système

Développeurs BONNECHÈRE Jean-Baptiste,
HUANG Jérôme,
HUANG Laurent,
LAFFONT Florian,
POTONG MBOUCHEKO Valderane,
YOEUNG Michel

Equipe

L'équipe est constituée de 6 membres :

Présentation

Réalisation des différentes phases du projet

Phase 1 : prise en main de l'environnement et gestion de l'affichage à l'écran

100 %

Cette étape a été réalisée à l'aide du code récupéré dans le projet PCSEF (premier semestre). C'est ce qui nous servira de base pour la suite du projet.

Phase 2 : Création et lancement de processus de niveau noyau

100 %

On a affiné le code du projet PCSEF en l'adaptant avec les files de priorités fournies, ainsi qu'en utilisant les bons prototypes.

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

75 %

Nous avons eu du mal à comprendre ce qu'il fallait faire pour la pagination des processus user et le chargement du code user. Néanmoins nous avons implémenté l'API d'appel système ainsi que le module de récupération de l'int. Manque la partie obligatoire pour PCSEA : gestion de la mémoire virtuelle, encore incomplète

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

5 %

Phase commencée très tard à cause des retards dus à la phase 5 et de la dépendance entre la phase 5 et celle-ci

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

0 %

Phase commencée très tard à cause des retards dus à la phase 5 et de la dépendance entre la phase 5 et celle-ci

Journal de bord

Semaine 1 - 06/02/19 et 08/02/19

  • Prise en main de l'environnement ( sujet et documentation)
  • Récupération du dépôt git
  • Phase 1: Intégration du code pour les prints ( affichage à l'écran)
  • Phase 2: Documentation
  • Phase 3: Documentation
  • Test: Pas encore de test

Semaine 2 - 13/02/19 et 15/02/19

  • Phase 2: Mise en place de la gestion du temps
  • Phase 3: Mise en place de l'ordonnancement, de l'endormissement et de la terminaison des processus ( la structure de queue est encore à adapter)
  • Phase 4: Documentation
  • Test: affichage à l'écran => fin de la phase 1
  • Test: début d'implémentation du test de la structure de queue ( pour comprendre son fonctionnement)
  • Test: test simple de processus ( création, ordonnancement ...) pour vérifier le fonctionnement actuel de la phase 3

Semaine 3 - 20/02/19 et 22/02/19

  • Phase 2: mise en place de l'affichage de l'horloge
  • Phase 4: Début d'implémentation ( structure de file )
  • Test: context_switch et temps partagé => fin de la phase 2
  • Test: fin de la mise en place de test de la structure de queue => compréhension de cette structure
  • Test: Ajout de test un peu plus complexe de processus pour vérifier le fonctionnement actuel de la phase 3

Semaine 4 - 06/03/19 et 08/03/19

  • Phase 3: Implémentation pour s'adapter à la structure du queue fournie
  • Phase 4: Ajout des structures des fonctions permettant les files de messages en attendant la phase 3
  • Test: test de l'endormissement des processus, de l'atteinte de du maximum du nombre de processus, appel simple du système et de l'ordonnance.

Semaine 5 - 13/03/19 et 15/03/19

  • Phase 3: Début d'implémentation des différents fonction de la cycle de vie des processus selon la spécification ( primitive de gestion des processus )
  • Phase 4: Création des listes pour les processus bloqués sur file pleine et sur file vide, les squelettes précédemment mise en place ont été un peu plus complétés
  • Test : test de l'ordonnancement préemptif

Semaine 6 - 20/03/19 et 22/03/19

  • Phase 3: Suite d'implémentation des différents fonctions de cycle de vie tels que waitpid, start
  • Phase 4: La phase 4 a été finie, elle doit être déboguée
  • Test: écriture de tests robustes pour la phase 3, test de l'atteinte du nombre maximal de processus


Semaine 7 - 27/03/19 et 29/03/19

  • Phase 3: Fin d'implémentation et passage des tests
  • Phase 4: Correction des incluse
  • phase 5 : Analyse et compréhension de la spécification
  • Test: test waitpid, test0 du professeur, test de contexte switch, test d'ordonnancement préemptif, test plus poussé de print, test de temps partagés, test de file de messages, test de l'ordonnancement avec priorité, test de l'exit et test de start


Semaine 8 - 03/04/19 et 05/04/19

  • Phase 4: Le débogage commence : ajout de message dans une file, récupération du message, suppression de la file, reset de la file, processus bloqué sur file pleine/vide
  • phase 5 : Spécification très peu comprise pour la mémoire virtuelle, début d'implémentation de l'API d'appels système et changement de mode.
  • Test: test de synchronisation dans les files de messages, test de destruction de files de messages, de reset de files de messages, de remplissage à plein des files de messages, test de kill, test d'endormissement waitclock


Dernière séquence - à partir du 7/04/19

  • Phase 5: Débuts de la gestion de la mémoire virtuelle
  • Phase 5: Gestion terminée des API, appels système depuis le client
  • Phase 6: Attente que la mémoire virtuelle soit terminée pour pouvoir commencer
  • Phase 7: Attente que la mémoire virtuelle soit terminée pour pouvoir commencer
  • Test: appels d'une fonction privilégiée à travers le kernel
  • Code: Nettoyage du code et du dépôt git


Apports du projet

Ce projet a été pour nous l'occasion de découvrir plus en profondeur les dessous d'un système d'exploitation. Il nous a permis de mieux comprendre le fonctionnement de systèmes d'exploitation que nous utilisons tous les jours. Nous avons pu en connaître plus dans l'architecture étudiée. Nous avons acquis des connaisances solides sur des concepts bas niveau à l’œuvre dans la gestion d'un système d'exploitation. Ce projet a aussi été l'occasion d'aller chercher des informations dans une documentation officielle