• [^] # Re: L'avis de Linus

    Posté par (site web personnel) . En réponse à la dépêche MINIX 3 - Google Summer of Code. Évalué à 2.

    Concernant le problème des performances et de l'espace d'adressage : pourquoi n'est-il pas possible de factoriser un certain nombre de choses interdépendantes sous formes de libs partagées (en userland donc, mais partageant un espace d'adressage commun au sein du même processus serveur ou de l'application hôte) ?

    J'imagine qu'un certain nombre de choses complexes pourraient peut-être aussi être sorties du noyau : par exemple : est-il nécessaire que les filesystems soient en kernel-space ? (le rôle du noyau ne pourrait-il pas se borner à abstraire le device physique sous-jacent et le présenter dans /dev, en gérant les accès concurrents, les interruptions, les droits d'accès, etc. Charge à un processus serveur (ou une lib) en userland de jouer le rôle du FS).
    Idem, la stack IP ne pourrait-elle pas être en userland, le kernel se bornant à abstraire l'interface réseau physique ? Etc...

    Autre chose : plutôt que d'avoir une approche où un processus serveur fait le boulot (cas des micro-noyaux), est-ce qu'il y a moyen de faire que le code d'une lib (et juste ce code là, pas le reste du code de l'appli qui est linkée dessus) ait des droits spécifiques (pour accéder directement au matériel, ou plus simplement à un service/fichier spécial donné) ?
    (Par exemple, il me semble que le ring est défini au niveau de chaque page de code, un jmp dans une page de code ring0 permettrait donc de fonctionner dans ce mode ?). Si c'était possible, une appli lambda aurait juste besoin d'être linkée à la "libfs" (qui accéderait directement à /dev/sda*), et on éviterait les IPC (cas des micro-noyaux) et/ou bon nombre de "int 0x80" (noyau Linux actuel) pour les appels au fs...

    P.S.: c'est une question ouverte, pas un troll ! (j'espère d'ailleurs que je suis assez clair dans ma question... :)

    P.S.2: ah si, le petit troll de rigueur qui vient avec : si le noyau Linux était sous licence LGPL (ou BSD), on pourrait explorer ce type de voie en partant de ce dernier. Mais il est sous licence GPL => impossible de copier-coller du code du noyau Linux (des algos qu'on trouverait intéressants, par exemple) pour les mettre dans des libs userland, ou sinon seules les applis GPL pourront s'y linker... Dommage que la GPL restreigne l'usage du code sur un tel critère technique...