Projet système PC : 2018 - EL MEJJATI Bilal, DAVID Théo, SINITAMBIRIVOUTIN Emrick, BAUMANN Arnaud, OTHMAN Muhammad Hanafi, BOUILHAC Benjamin

De Ensiwiki
Aller à : navigation, rechercher

Mycomputer.png  Deuxième Année  CDROM.png  Informatique 


Soshellgif.gif

Soshell.png
Titre du projet Projet de Conception de Système d'Exploitation - Approfondissement (s'OS /!\)
Cadre Ensimag
Page principale Projet système

Équipe BAUMANN Arnaud
BOUILHAC Benjamin
DAVID Théo
EL MEJJATI Bilal
OTHMAN Muhammad Hanafi
SINITAMBIRIVOUTIN Emrick
Encadrants MOUNIÉ Grégory
PETROT Fréderic


Présentation

Bienvenue sur la page de présentation de notre projet de conception d'un système d'exploitation. Nous sommes une équipe composée de six étudiants de la filière Systèmes Embarqués et Objets Connectés (SEOC).

Cahier des charges

Les spécifications du projet sont disponibles ici : Projet système : spécification
Les aspects techniques : Projet système : Aspects techniques

Journal de bord

Semaine 1

Prise en main de l'environnement, implémentation d'une première gestion d'écran et début de l'implémentation de l'horloge. Le développement de la gestion de l'écran a été géré sur la branche master.

Une branche spécifique à été crée pour l'implémentation de l'horloge et de ses tests.

Semaine 2

Horloge implémentée et fonctionnelle. Un bug mineur sur la fréquence de fonctionnement doit être réglé avant le merge vers master.

Une branche à été crée pour le développement de la partie processus, de l'ordonnancement et de l'implémentation des primitives liées aux processus.

Début de l'implémentation de la structure de processus:

- Création de processus (start, init)
- Ordonnancement des processus simple (methode tourniquet OK)
- Ordonnancement file de priorité en cours

Début de la gestion des files de messages. Une branche spécifique à été crée

Semaine 3

Suite de l'implémentation des fonctionnalités commencées et début de la mise en place des tests. Le problème de l'horloge est réglé.

Une branche spécifique à été créée pour les tests.

Tests :

  • A completer*


Processus-Ordonnancement :

- Implémentation de l’ordonnancement final
- Début de la gestion dynamique des processus

Files de messages :

Semaine 4

La gestion des processus et les différentes primitives ont bien avancées mais ne sont pas testés.

Processus-Ordonnancement :

- Gestion dynamique des processus implémentée et fonctionnelle - Implémentation des primitives waitpid, getprio, chprio, getpid mais pas testé

Horloge

- implémentation de current_clock(), wait_clock(), et clock_settings().

Semaine 5

Horloge

- Test des fonctions

Files de messages

- Lecture de la doc

- Implementation de psend(), pcount()

Processus ordonnancement

- debug des premiers tests, la terminaison automatique des processus ne semble pas marcher

ajout d'un itérateur sur la file des processus, utilisation de la macro for_each_prev du module queue.h attention for_each permet d'itérer en suivant les priorités croissantes !

Clavier

- Lecture de la doc

Semaine 6

Files de messages

- Fix de bugs et tests

Processus ordonnancement

- Ajout des tests - Debug

Clavier

- Lecture de doc et début d'implémentation

Semaine 7

Files de messages

- Debug

Processus ordonnancement

- Debug et passage des tests

attention : lorsqu'un processus est élu, il faut l'enlever (queue_del) puis le rajouter (queue_add) dans la file des processus car sinon il restera toujours en tête de file et sera toujours élu (s'il est éligible) jusqu'à sa mort. L'enlever puis le rajouter permet de résoudre le problème grâce à l'implémentation de la macro queue_add : on itère sur les processus présents avec une comparaison stricte sur les priorités, ainsi on s'arrête dès que l'on rencontre un processus de même priorité que nous (qui devient plus prioritaire car ayant attendu plus longtemps -> ordre FIFO à priorité égale).

Clavier

- Implémentation

Semaine 8

Files de Message

- Tous les tests concernant les files de messages passent sauf les tests suivants :

 - test13 : lors de l'exécution, le test réussit à afficher "abcdefgh" dans cet ordre et après il affiche "m" à la place de "i".
 - test16

Processus ordonnancement

- Tous les tests jusqu'au test 15 inclus passent

Mémoire virtuelle

- Lecture de la documentation

Semaine 9

Processus ordonnancent

- Il reste les derniers tests à faire passer

Shell

- Début d'implémentation du shell en reprenant ce qui a été fait en SEPC

Mémoire virtuelle

- Implémentation de l'allocateur physique sous forme du freeList en stockant les pages physiques libres.

- Implémentation d'un bout d'assembleur permettant le changement du registre CR3 lors d'un context switch

- Début d'implémentation du module de mapping

Semaine 10

Clavier

- Le clavier est fonctionnel

Shell

- Le shell parse les commandes écrites au clavier

Mémoire virtuelle

- Continuation de l'implémentation du module de mapping

Résultat Final

Les phases 1, 2, 3, 4, 6 et 7 ont été implémentées en entier. Le test 8 ne marche plus depuis l'ajout de l'interprète de commandes. Certains tests (13 et 16) ne passent pas. Nous avons commencé à implémenter la phase 5. L'allocateur physique a été implémenté, ainsi qu'une partie du module de mapping. En raison de notre avancement, les tests en modes user n'ont pas été passés.