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.
Boubou DOUCOURET Ensimag 2A Alternance Antoine GAILLAIRD Ensimag 2A Alternance
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.
L'horloge est une interruption générée par le système. Il suffit de lui indiquer le traitant d'interruption correspondant.
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).
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.
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.
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).
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) |
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).
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.
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, ...
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