Catégorie:Projets de spécialité Catégorie:Deuxième Année Catégorie:Informatique
Etudiants : Bastien DESHAYES et Felipe CHIES
Enseignant tuteur : Simon NIEUVIARTS
Nous sommes étudiants en filière Systèmes et Logiciels Embarqués.
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.
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 (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 :

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. |
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 :

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

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.
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.