[Kos-dev] Questions et autres problemes philosophiques

Julien Munier kos-dev@yoda.isnpro.com
Wed, 21 Mar 2001 14:07:40 +0100


Bonjour,

hier soir, je me demandais comment j'allais faire progresser babel,
j'imaginais le resultat du "dev filesystem", je repensais a
l'expression "tout est fichier" et je me demandais ce qu'etait
exactement un syscall sous linux.

voila pour la conjecture du moment :-)


plus serieusement, vous saviez vous que (sauf mauvaise comprenhension
de ma part) "open" est un et un seul appel system, c'est le meme
quelque soit ce que vous openez ?

enfin, bon, tout ca pour dire que en travaillant sur babel, j'ai
essaye de ne pas trop me documenter pour trouver un truc par moi meme
(en verite je savais pas koa lire et j'avais la flemme d'avaler des
tonnes de documents sur la question).

le resultat et que cela ne fonctionnera pas du tout ainsi. 

en fait au niveau du dev-fs, il sera tenu a jour par le noyau (pour
simplifier on va dire ca comme ca). on aurait alors par exemple un
noeud : 

filename    rights    major minor user group
/dev/aaabbc rwxrwxrwx M     m     sys  sys

aaa est l'identifiant de "famille" (a definir encore ce concept)
bb  est un identifiant complementaire (idem)
c   une valeur numerique

M est une valeur Hexa precisant l'instance babel.  
m est une valeur Hexa precisant l'instance symbolisee par ce noeud.


et lorsque je fais un appel systeme :

sycall(M, m, "Id du service connu par stubs", args);

alors babel va rechercher le service (fonction lookup_service) appel
le service avec les arguments et renvoie le resultat.


De la plusieurs questions :

- craigniez vous un manque d'homogeneite dans les appels systemes,
  personnellement je n'y crois pas car on connait les interface des
  instances avec lesquelles on travaille et donc les methodes
  auxquelles on peut acceder, ensuite a charge des developpeurs de
  conserver des noms de methods homonymes voire standardisees pour
  plus de clarte?

- dans cette perspective quelle doivent etre les fonctionnalites
  implementee par babel ? 

  je m'explique, par exemple, un driver clavier pourrait aparaitre
  dans /dev/kbd-0 et un driver ecran /dev/screen-0, alors ce ne serait
  pas au noyau de proposer des /dev/tty ou /dev/console puisque cela
  suppose une gestion par le noyau de l'association clavier/ecran ?

  ensuite supposons qu'on ait un /dev/scsi-hd-0 avec des methodes pour
  lire physiquement le disque scsi 0 mais il faut un systeme de
  fichier derriere donc il faut quelque part une "libraire" par
  exemple libext2. La question est alors ou est code la librairie ?
  dans le noyau ou par une lib CPL3 qui va se charger de travailler
  avec /dev/scsi-hd-0 ? de meme pour les drivers rezo, est ce que
  c'est au noyau de fournir un driver TCP/IP ? NFS et touttiquanti ?

  je pense que la question est fondamentale, il faudrait se mettre
  d'accord sur le role du noyau. Avec babel a l'heure actuelle il
  proposerait *uniquement* de proposer une couche logiciel a ce qui
  est materiel. a charge des applications du systemes de fournir les
  couches logicielles complementaires (support de systeme de fichier,
  protocoles, support de consoles).


  mon avis sur la question : je trouve l'idee seduisante d'un noyau se
  contentant de faire ce qu'il est suppose faire je crois : donner une
  existence logicielle au materielle physique.


  evidemment vous allez me dire : comment je fais avec mon noyau pour
  qu'il invoque un programme si je n'ai pas de libext2 dans mon noyau
  pour le retrouver sur mon disque ?



Juste comme ca...


Julien


PS: promis je serai plus clair a paques :-)