Projet système PC : 2012 - Pierre PROUDHON et Stephanie BRACALONI

De Ensiwiki
Aller à : navigation, rechercher
Crok'OS
Crokos.png

Développeurs Stéphanie BRACALONI

Pierre PROUDHON

Présentation

Le projet système

Ce projet à lieu en fin de deuxième année dans le cursus apprentissage. Il se déroule sur trois semaines durant lesquelles le cahier des charges résumé ci-dessous doit être complété.

L'équipe

Stéphanie BRACALONI Ensimag 2A Alternance Pierre PROUDHON Ensimag 2A Alternance

Réalisation

Étant donnée le temps alloué pour le développement, il n'est pas possibles de passer par des phases d'analyses classiques. C'est pourquoi le projet est découpé en phases afin de guider les développeurs. Ces dernières respectes une démarche incrémentale.

Présentation du cahier de charges

Partie noyau

Phase 1 : l’écran

Cette phase a été implémentée pendant l'année lors des TPs système. Avant de réutilisé le programme nous l'avons soumis à plusieurs tests afin de s'assurer de son bon comportement. En effet, les traces affichées à l'écran ont une grande importance dans le debug et dans l'observation des exécutions (déterminer quel processus prend la main, ...)

Phase 2 : l'horloge et changement de contexte

Mise en place de l'horloge, c'est à dire mise en place du mécanisme d’interruption périodique qui permet lorsque qu'un nombre défini de top se sont passés, de réordonnancer le système. Le contexte switch ne demande pas beaucoup de lignes de code mais est un concept clef dans ce projet. Dans un premier dans il a été implémenté et activé par appel direct à l'ordonnanceur, puis une fois la fonctionnalité vérifiée il est appelé par l'horloge.


Phase 3 : gestion des processus

Implémentation du mécanisme d'ordonnancement basique Ajout de la gestion de la terminaison d'un processus (nouvel état: "deleted" si le processus fini par le biais d'exit) Ajout de la filiation (nouvel état "Zombie", gestion du waitpid, ...) L’ordonnancement est basé sur la priorité

Phase 4 : mécanismes de synchronisations

Mise en place de la gestion des sections critiques par le biais de sémaphores (Dijkstra) basés sur les priorités.

Phase 5 : mode utilisateur / noyau

Séparation: mode noyau et mode utilisateur. Dans le mode noyau les interruptions sont désactivées (excepté pour l'horloge) L'utilisateur n'a pas accès aux plages d'adresses noyau et vice versa L'utilisateur exécute des primitives systèmes par le biais d’interruptions 49 Le noyau connaît l'adresse de user_start ce qui est bien pratique pour le exit

Phase 6 : pilote clavier

Utilisation de la fonction cons_read permettant d'attendre un certain nombre de caractères à retourner au processus.

Phase 7 : terminal (shell)

Le shell est très basique, il permet d’exécuter les commandes suivantes:

  • ps, affiche la liste des processus, leurs états, ...
  • kill pid, kill le processus pid
  • echo [1|0], active/désactive le écho dans la console
  • sinfo, affiche la liste des sémaphores utilisés et leurs infos
  • exit, pour quitter le shell

Tests

Nous avons exécuté tous les tests, 2 d'entre eux ne fonctionne pas correctement: le 14 et le 17 sur les sémaphores.

Extensions

Nous n'avons pas eu le temps d'implémenter une extension.

Difficultés rencontrées

Avoir une parsonne dans le binôme qui doit passer ces rattrapages en même temps.