Projet système PC : 2015 - ARNAUD Alexia, BRAZOUSKAYA Darya, LEBOUCHER Pierre

De Ensiwiki
Aller à : navigation, rechercher
Pasgrandchos.png
Titre du projet PasGrandChOS
Cadre Projet système d'exploitation 2015
Page principale Projet_système

Équipe Alexia Arnaud Darya Brazouskaya Pierre Leboucher
Encadrants David Beniamine Gaëtan Morin Grégory Mounié




Présentation générale

Objectifs

Lors du Projet système, l'objectif était de construire les briques de bases d'un système d'exploitation.

Cahier des charges

Nous vous prions de vous référer à la page Projet système : spécification ainsi qu'à toutes les pages qui y sont liées, récursivement, ainsi qu'aux tests, et à votre imagination.

Apports du projet

L'écriture du projet Système nous a permis de progresser dans la compréhension du cours de SEPC, mais aussi dans l'utilisation de Git.

Gestion de projet

Planning

Une partie de ce projet reposait sur le cours de Logiciel de base de l'année précédente, auquel seul un membre du groupe avait participé. Les premiers jours du projet furent donc consacrés à une mise à niveau sur le projet de Logiciel de base.

Phase 1

La première phase est principalement une phase de prise en main des outils : qemu, vinagre, gdb. Nous avons profité de cette phase pour modifier le makefile du projet de façon à lancer qemu automatiquement.

Nous avons ensuite adapté les parties du miniprojet Logiciel de base, qui était lacunaire. Il a fallu terminer l'implémentation du pilote de l'écran, auquel manquaient la gestion des caractères de contrôle et le défilement de la page.

Phase 2

Lors de la deuxième phase, nous avons mis en place une structure de processus minimaliste qui permettait de faire une exécution basique d'un programme sans paramètres ni retour, et de changer manuellement de contexte. Cette

Nous avons ensuite implémenté l'horloge pour permettre l'ordonnancement de façon basique entre deux processus.

Nous avons codé les premiers tests pour ces fonctionnalités.

Phase 3

Lors de la phase 3, nous avons implémenté l'ordonnancement selon la méthode du tourniquet, sans priorité. En parallèle, nous avons implémenté l'attente sur fils et la terminaison de processus.

Les premières difficultés firent surface lors de cette phase. Ces difficultés étaient principalement dues à la confusion dans la lecture des spécifications et de la roadmap, qui firent que nous n'avions pas encore respecté les spécifications pour les primitives et leur fonctionnement. Nous n'avons pas implémenté les primitives start, exit... dans le respect des spécifications avant le milieu de la phase 4.

Phase 4.1

Lors de la phase 4, nous avons implémenté les files de messages. C'est après l'implémentation des files de messages que nous avons commencé à exécuter les tests du projet, dont nous ignorions l'existence jusqu'à ce moment. En exécutant ces tests, nous avons constaté qu'il manquait de nombreux aspects aux primitives précédentes.

Interlude

Nous avons mis la phase 4 en pause le temps de corriger les primitives réalisées plus tôt. Cet interlude nécessita beaucoup de temps puisque l'absence de tests corrects avait permis à des erreurs de s'immiscer dans de nombreux aspects du projet. Nos tests personnels n'étaient pas suffisants. Une fois les primitives conformes à la spécification et les premiers tests passés, nous avons pu continuer dans la phase 4.

Phase 4.2

Nous avons testé et corrigé notre implémentation des files de messages.

En parallèle, nous avons implémenté l'attente sur horloge.

Pour pouvoir gérer les interactions entre tous ces éléments, nous avons dû corriger les primitives déjà modifiées lors de l'interlude.

Phase 5

Nous avons commencé l'implémentation du mode utilisateur tard. La taille et la complexité de la documentation, ainsi que le retard accumulé, ne nous ont pas laissé beaucoup de temps pour tester et corriger notre implémentation. Pour cette raison, nos appels système ne sont pas fonctionnels.

Phase 6

Nous avons commencé à implémenter une console basique. Une erreur probable dans les files de synchronisation ne permet pas son exécution correcte.

Phase 7

Nous n'avons malheureusement pas eu de temps à consacrer à l'interprète de commandes.

Outil de gestion de versions

Nous avons utilisé le système de gestion de versions Git au cours de ce projet. Aucun d'entre nous n'avait utilisé Git à cette échelle jusqu'au début du projet Système, ce qui fut la cause de ralentissements supplémentaires.

Trello

Pasgrandchos trello.png

Nous avons utilisé Trello lors de ce projet pour réussir à travailler séparément tout en sachant ce que chacun est en train de réaliser. Cela nous a également permis de nous tenir à jour en ce qui concerne l'avancement du projet.

La board recensait les tâches à réaliser catégorisées selon leur priorité, celles en cours de réalisation, en cours de test, et les tâches terminées.

À compter du moment de démarrage des tests, nous avons recouru au Trello pour recenser les tests réussis.

Bonus

On sait que vous êtes déçus par le projet, mais voilà un chaton pour compenser.