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