Charte de Compatibilitée Barbux



Cette charte à pour seul ojectif de rendre les différents kernel produits par les participant de l'option LAN compatibles entre eux.
De plus elle permet de touver une base a la conception de celui-ci.
Enfin, elle n'est que l'oeuvre des auteurs de Barbux, et n'a pas de rapport direct avec ce que les professeurs de lan ont idée de ce projet.

I) Bases sur le systeme


- Un kernel qui restecte la Charte de Compatibilitée Barbux (CCB) sera dit "Barbux Compatible (c)", et pourra arborer ce titre ou il le souhaite.
- Un kernel de ce genre devra:
--- 1 être en mode protégé
--- 2 être en mode paginé
--- 3 gérer au moins 4 consoles
--- 4 gérer au moins 4 processus de manière independantes
--- 5 proposer un putchar() et un getchar()
--- 6 proposer un sleep() et un geterreur()
--- 7 proposer une librairie de fonctions
--- 8 proposer une procedure de chargement d'un nouveaux programme simple
--- 9 recuperer les exceptions du processeur
--- 10 tourner sur un 486 avec 8 Mg de Ram

II) Mode protégé


- Un kernel Barbux Compatible (c) devra passer en mode protégé des que possible. il devra aussi definir 4 segments de 4Go : 2 systemes (un code et un data) ainsi que 2 users (un code et un data).
- Il devra aussi dispenser les process de s'on occuper, et devra donc gerer seul les registres de segment.

III) Mode paginé


- Un kernel Barbux Compatible (c) devra ensuite passer en mode pagine, et ainsi offrir une allocation dynamique de la memoire, au moins au niveaux des pages.
(il pourras s'allouer une page à une adresse lineaire quelconque).
- Il devra aussi pouvoir libérer des pages plus utilisées.

IV) Consoles


- Un kernel Barbux Compatible (c) devra pouvoir présenter aux processus une gestion type console (traitement du \n, position memorisee du curseur).
- De plus il devra pouvoir en présenter 4 différentes et indépendentes, qu'elle qu'en soit la présentation a l'écran. (4 sur l'ecran, swap possible entre les consoles ...)

V) Muti-Task


- Un kernel Barbux Compatible (c) devra faire tourner de manière concurrentes au moins 4 processus.Chacun des processus peut prétendre à l'attribution d'une console.
- Chaque processus s'executent de maniere independante, et ne peuvent pas aller dans l'espace d'adressage des autres processus.
- Au moins un type de communication inter-process(pipe, memoire partagée...) devra etre implémenté.

VI) Appels systemes


- Un kernel Barbux Compatible (c) devra implementer un sleep, qui fait dormir un process sans bloquer le systeme pendant un certain nombre de secondes, et un usleep, qui le fait pendant un certain nombre de micro secondes.
- Il devra implémenter un getchar, qui lit le clavier, et qui prends comme le fait qu'il soit bloquant ou pas.
- Il devra implémenter un putchar, qui affiche un caractère dans la console attribuée au processus.
- Il devra implémenter un geterreur, qui donne les causes de la derniere erreur.

VII) Appels systemes, aspect pratique



- Les appels systemes passent tous par l'interuption 0x69 - Un appel systeme se passe de la façon suivante:
--- mov numero_de_la_fonction,%eax
--- mov parametre_de_la_fonction,%ebx
--- int 0x69
--- mov %eax, valeur_retournée_par_la_fonction
- n°0 : int sleep(int) retourne 0 en cas de succes, -1 sinon.
- n°1 : int usleep(int) retourne 0 en cas de succes, -1 sinon.
- n°2 : char getchar(int i) i=0 getchar bloquant,i=1 getchar non bloquant, en cas d'erreur on renvois -1, en cas de non bloquant et pas de char dans le clavier on renvois -2, sinon on renvois le char dans le clavier.
- n°3 : int putchar(char) retourne 0 en cas de succes, -1 sinon.
- n°4 : int geterreur(char * dest) dest contient la cause de la dernière erreur. Retourne 0, -1 s'il n'y a pas eu d'erreurs

VIII) Librairies


- Un kernel Barbux Compatible (c) devra etre acompagne d'une librairie de fonction, ainsi que des headers C.
- On devra y touver les appels systemes (sleep, usleep, getchar, putchar, geterreur).
- On devra aussi y trouver des fonction de plus haut niveaux, comme printf et scanf.

IX) Chargement de programmes



- Un kernel Barbux Compatible (c) devra permettre d'introduire facilement un nouveaux programme dans le systeme, et en faciliter la compilation en fournissant les scripts de compilation.
- L'introduction de ce code dans le kernel devra aussi faire l'oeuvre d'une procédure écrite et relativement simple.

X) Exceptions


- Un kernel Barbux Compatible (c) devra intercepter les exception levées lors de l'execution d'un processus, et informer le propriétaire de ce processus de la nature de l'erreur causée par le processus.


Ceci est donc la CCB, est son respect offre l'apellation "Barbux Compatible (c)"
Elle est completé par la CCBE (Charte de Compatibilité Barbux Etendue), plus gourmante, qui donne alors l'apellation "Extended Barbux Compatible (c)"


L'équipe de Barbux vous souhaite bonne réussite dans votre projet !
^_^
/ | \
#Barbux



CCB Copyright 2003 Wons Jean-Baptiste