Catégorie:Projets de spécialité Catégorie:Deuxième Année Catégorie:Informatique

L'équipe

Etudiants : Bastien DESHAYES et Felipe CHIES
Enseignant tuteur : Simon NIEUVIARTS

Nous sommes étudiants en filière Systèmes et Logiciels Embarqués.

Présentation

Dans le cadre du projet de spécialité (projet proposé en fin de deuxième année à l'Ensimag) se déroulant du 17 mai au 10 juin, nous avons élaboré un noyau de système d'exploitation pour PC que nous avons baptisé PassarOS. Notre produit se devait dans un premier temps de répondre à un cahier des charges minimal qui nous était fourni. Dans un second temps, nous avions à imaginer et à implémenter des extensions pour notre noyau.

Gestion des processus

Un processus est l'entité contrôlant et gérant l'exécution des programmes. Chaque processus est caractérisé par son contexte de fonctionnement et son flot d'exécution. Le nombre total de processus pouvant coexister à un instant donné dans le noyau de système est borné par une constante fixée à la compilation du noyau. Cette constante est nommée NBPROC. Le but du projet a été de gérer la création, la destruction et la coexistence des processus.

Le shell

Le shell (ou interpréteur de commande) est l'interface textuelle dans laquelle l'utilisateur entre des commandes (comme dans les terminaux sous Linux par exemple) et qui lance les processus correspondants à ces commandes.

Les principales commandes disponibles sont :

shell passarOS
shell passarOS

Commande

Description

help

Affiche les commandes disponibles.

exit

Permet de quitter le système d'exploitation.

clear

Nettoie l'écran.

ps

Affiche les processus existants.

sinfo

Affiche la liste des sémaphores.

pinfo

Affiche la liste des files de messages.

echo

Permet d'activer ou de désactiver l'écho des caractères frappés au clavier.

clock_settings

Affiche la fréquence du quartz et la fréquence d'horloge.

test

Lance les tests fournis par les professeurs.

Extensions

Pilote de VGA en mode graphique

Pour l'interface graphique nous avons implémenté un pilote qui permet d'utiliser le mode 13h (résolution 320*200, 256 couleurs avec adressage linéaire de la mémoire vidéo) de la carte VGA. Voici quelques fonctions que propose ce pilote :

void plot_pixel(int x, int y, byte color);

Imprime le pixel color aux coordonnées (x,y) sur l'écran.

void draw_bitmap(BITMAP *bmp, int x, int y);

Dessine une image au format bitmap sur l'écran.

Voici un aperçu de ce que ce pilote nous permet de réaliser :

VGA1 VGA2

Amélioration de l'interface

Nous avons amélioré l'interface par rapport à la spécification. Beaucoup de petites extensions contribuent à l'amélioration de celle-ci.

Raccourcis Clavier
Raccourcis Clavier

Files de messages entre processus

Nous avons ajouté à notre système une librairie qui permet d'utiliser des files de messages permettant aux processus de communiquer entre eux. Nous avons donc rajouté des appels systèmes qui permettent à des processus de poster et de lire des messages.

int postcreate();

Crée une file de message. Cette fonction renvoi l'identifiant de la file de message créée ou une valeur strictement négative en cas d'échec.

int postreset(int post);

Vide la file de message d'identifiant post. La valeur de retour est strictement négative si l'identifiant n'est pas valide, et nulle sinon.

int postdelete(int post);

Supprime la file de message d'identifiant post. La valeur de retour est strictement négative si l'identifiant n'est pas valide, et nulle sinon.

int post_msg(int post, char *msg);

Poste un message. La valeur de retour est strictement négative en cas de paramètres invalides

int consum_msg(int post, char **msg);

Récupère un message, cette fonction est bloquante si aucun message n'est présent dans la file. La valeur de retour est strictement négative en cas de paramètres invalides.

Bilan

Notre produit remplit les exigences du cahier des charges minimal et passe intégralement les tests fournis par les professeurs. Nous avons de plus réussi à réaliser des extensions significatives. Ce projet nous a permis d'obtenir de plus amples connaissances dans le domaine des systèmes d'exploitation et de l'architecture des ordinateurs.

Difficultés rencontrées

Outils utilisés

Documentation