Projet système PC : 2018 - BARRE Donatien - MILCENT Antoine - BARBAULT Thomas - GUIOL Sebastien - SERGI BERQUO XAVIER Lucca - CARAMEZ SARAIVA SANTOS Rebeca

De Ensiwiki
Aller à : navigation, rechercher
Project schedule.png
Titre du projet ChaOS
Cadre Projet système

Équipe [Thomas BARBAULT], Donatien BARRE, Rebeca CARAMEZ SARAIVA SANTOS, Sébastien GUIOL, [Antoine MILCENT], Lucca SERGI BERQUO XAVIER
Encadrants Gregory Mounie, Frédéric Pétrault

Présentation

Journal de bord

Le journal de bord correspond aux fonctionnalités implémentées et est basé sur les 'commits' effectués. Ainsi, il est possible que les dates mentionnées ne correspondent pas exactement à l'implémentation des fonctionnalités, le travail concernant celles-ci ayant très bien pu être effectué (malheureusement) sans commit sur plusieurs jours.

Semaine du 04/02 au 10/02

Nous avons récupéré les fonctions de gestion de l'affichage créées au premier semestre dans le cadre du Projet de Conception de Système d'Exploitation : Fondements et les avons intégrées afin d'implémenter printf(), indispensable au débogage à venir. Parallèlement, nous avons commencé la gestion de l'horloge (en récurant une grosse partie du projet du premier semestre) et des interruptions, et avons ré-implémenté le context switch trivial.

Semaine du 11/02 au 17/02

Fin de l'implémentation du mécanisme d'interruptions par l'horloge basée sur le travail du premier semestre. Première ébauche de la structure d'un processus qui sera à revoir dans les phases suivantes. De façon à faciliter l'accès aux processus, nous avons utilisé un tableau pour stocker les pointeurs vers les processus au lieu de la file initialement prévue. Implémentation des procédures de création, terminaison, getpid, getprio et chprio.

Semaine du 18/02 au 24/02

Durant cette semaine, nous avons implémenté la filiation pour les processus de façon à pouvoir à tout moment connaitre les fils et le père d'un processus. La spécification correspondant aux processus zombies a alors été ajoutée grâce à la filiation ainsi que la procédure waitpid(). Au cours de cette semaine, nous avons revisité le scheduler de façon à prendre en compte les priorités et les processus en attente de waitpid(). Nous avons aussi modifié les interruptions de façon à appeler le scheduler à une fréquence de SCHEDFREQ comme demandé par les spécifications.

Semaine du 25/02 au 03/03

Cette semaine a été l'objet de la modification de la procédure waitpid qui s'est avérée plus compliquée à implémenter que prévu, mais nous nous en sommes sortis. Nous avons décidé d'utiliser une file dédiée aux processus en attente de la mort d'un fils ce qui simplifie le code et permet d'obtenir de meilleur performances, notamment grâce à la filiation implémentée précédemment.

Semaine du 04/03 au 10/03

Lors de cette semaine, nous avons corrigé les différents bogues correspondant à la gestion des processus. Par ailleurs, l'implémentation des files de messages à commencé, avec la création d'une bibliothèque de gestion des files de messages, son intégration avec la structure des processus de la phase précédente, et l'ajout du blocage des processus en attente de messages dans le scheduler.

Semaine du 11/03 au 17/03

L'implémentation des files de messages a été testée et améliorée. Début de l'implémentation du pilote de console, pilote de console a été écrit.

Semaine du 18/03 au 24/03

Documentation sur la mémoire virtuelle. Implémentation de la wait_clock. Gestion du buffer du pilote de clavier.

Semaine du 25/03 au 31/03

première implémentation de l'allocateur de mémoire utilisateur

Semaine du 01/04 au 07/04

Utilisation de de blocs mémoire pour la gestion de l'espace mémoire utilisateur.


Semaine du 08/04 au 14/04

Gestion du buffer de clavier simplifiée. Gestion de l'interruption de clavier améliorée corrections sur l'allocateur de mémoire Tests de processus utilisateurs dans le kernel Ordonnancement des processus Corrections concernant le comportement de certains caractères sur le clavier. Première implémentation de la pagination identitaire

Semaine du 15/04 au 21/04

Semaine du 22/04 au 28/04

Refonte de la gestion des pages mémoire pour la mémoire virtuelle Implémentation des fonctions de mapping Début de l'implémentation des sémaphore, création de l'API.

Semaine du 29/04 au 05/05

Semaine du 06/05 au 12/05

Réalisation des différentes phases

Phase 1

La phase 1 a été réalisée de façon triviale puisqu'il nous a suffit de récupérer le code du premier semestre. Celle-ci était donc finie au 09/02/2017

100 %

Phase 2

Phase 3

Phase 4

Phase 5

--protection mémoire --appels système --protection d’exécution

Phase 6

Phase 7

Extension