Projet système PC : 2012 - Boubou DOUCOURET et Antoine GAILLARD

De Ensiwiki
Aller à : navigation, rechercher
AnonymOS
AnonymOS.png

Développeurs Boubou DOUCOURET

Antoine GAILLAIRD

Présentation

Le projet système

Ce projet intervient en fin de deuxième année du cursus en alternance. Nous avions trois semaines pour réaliser l'intégralité du cahier des charges fourni et décrit ci-dessous, et réaliser si possibles des extensions.

L'équipe

Boubou DOUCOURET Ensimag 2A Alternance Antoine GAILLAIRD Ensimag 2A Alternance

Réalisation

Présentation du cahier de charges

Cahier des charges

Implémentation de la partie Noyau du système

Phase 1 : l’écran

Il s'agissait de gérer l'affichage à l'écran des caractères. Une fonction "printf" fournie et faisant appel au module d'affichage était fournie.

Phase 2 : l'horloge

L'horloge est une interruption générée par le système. Il suffit de lui indiquer le traitant d'interruption correspondant.

Phase 3 : gestion des processus

Gestion basique des processus telle que décrite dans les spécifications. Les pid sont attribués à l'aide d'une file. Le processus élu est déterminé en fonction de plusieurs paramètres (activable, bloqué sur sémaphore, endormi, attente de caractère au clavier, ...) L'ordonnancement entre les processus se fait à intervalle régulier (utilisation de l'horloge système pour gérer la fréquence).

Phase 4 : mécanismes de synchronisations

Implémentation des sémaphores conforme aux spécifications. L'attribution des sid est gérée de la même façon que l'attribution des pid à l'aide d'une file. Le noyau possède un tableau de sémaphores.

Phase 5 : mode utilisateur / noyau

L'utilisateur peut appeler les fonctions noyau. Ces fonctions sont exposées à l'aide d'une interface qui réalise les appels système grâce au mécanisme d'interruptions.

Phase 6 : pilote clavier

Le buffer clavier est géré par une liste de ligne. Une ligne est ajoutée à la liste lorsque l'on appuie sur la touche "entrée" ou lorsque la taille de la ligne est plus grande que celle demandée par le cons_read (lecture au clavier).

Phase 7 : terminal (shell)

Implémentation d'un terminal avec quelques commandes.


Commande Description

ps

Affiche la liste des processus et leur état.

clear

Efface l'écran

display

Tente de lancer le mode graphique puis revient à l'affichage console après 100 ticks d'horloge

test

Lance le processus de test des fonctionnalités (Ctrl + C pour terminer)

Tests

Tous les tests passent sauf le 18, qui est un test de protection de la mémoire. Nous n'avons pas trouvé la cause de cette erreur car tous les registres de segment sont correctement configurés, ainsi que les drapeaux (registre %eflags).

Extensions

Historique des commandes

Les lignes tapées sont ajoutées à un tampon circulaire (tableau de taille fixe géré par deux indices). L'historique est commun à toutes les consoles pour l'instant.

Multi consoles

Il a suffi d'étendre la gestion du clavier, de l'écran et du terminal à N consoles. Chaque console est totalement indépendante des autres (buffers, curseurs, ...). Le numéro de la console courante est affiché en haut de l'écran. Pour changer de console, on utilise les raccourcis ALT+F1, ALT+F2, ...

Pilote VESA

Nous avons essayé d'exploiter le mode video VGA 256 couleurs. Malheureusement, par manque de temps, cette partie n'est pas fonctionnelle. Nous avons appliqué le patch pour réaliser les appels BIOS et changer le mode vidéo. Nos sources pour la réalisation de cette partie : Interruptions pour la gestion de l'affichage vidéo Bases sur VGA