Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Journal : GNU/Hurd c'est quoi au fait ?

Posté par Sebastien Binet () le 13 janvier 2005
Salut journal,

Je sais qu'on est sur LinuxFr mais je voudrais quand même savoir un peu ce que c'est le Hurd, quels sont ses avantages, ses inconvénients, que mange-t-il a midi, s'il a eu une enfance difficile... Bref je veux tout savoir.
Pourquoi ? Parce que j'ai lu ça : http://linuxfr.org/comments/517501.html#517501(...) et je dois dire que ça m'a assez enthousiasmé... Donc j'ai commencé a RTFMer un peu. Et je vais donc te livrer mes pensées et remarques.

J'ai commencé mon périple sur HurdFr.org [1] et cette page [2] a attiré mon attention, plusieurs points essentiels sont expliqués. Bon c'est bien mais pour avoir une vision plus synthétique, je suis allé faire un tour sur Wikipedia [3,4,5] où j'ai appris les différences entre micro-noyaux, noyaux monolithiques et autres exo-kernels.

Ensuite je suis tombé sur L4[6], Pistachio[7], Fiasco[8] et L4Linux[9].
Et c'est là que j'ai décroché... Quelles sont les différences ? Leur performances ? Leur (possible) avenir ?

Mais avant qu'un bonne âme n'éclaire ma lanterne, il faut que je pose une question : moyennant les baisses de performances qui a priori devraient apparaître avec l'utilisation d'un micro-noyau, pourquoi est-ce que l'utilisation d'un L4Linux qui (si j'ai bien compris) permet de faire tourner un Linux sur un noyau L4, n'est pas plus répandu ?
Avec toutes les capacités promises par Hurd... Ça me fait une sorte de fussoir de voir tout ce potentiel inexploité !

Pour finir, je me demande si l'avenir de Linux n'est pas le Hurd. Je m'explique : il me semble que le modèle de développement de Hurd est plus robuste que celui de Linux. Je crois sincèrement que celui de Linux commence à atteindre ses limites (en tout cas je pense qu'il n'est pas trivialement scalable). De plus, j'aime bien l'idée d'avoir un noyau en C++ (L4), mais c'est vraiment parce que j'ai un a priori favorable pour ce langage (note à ceux qui sont en train de sortir leur appeau à troll sur les langages de progs : je ne dénigre, ni ne fais l'apologie d'un langage en particulier, je dis juste que c'est ma préférence personnelle... Ensuite savoir si c'est le choix le plus judicieux pour un noyau... )

Bon je te laisse journal, je vais essayer de m'installer une Debian GNU/Hurd (m'en fous qu'il n'y ait pas de son sur mon serveur perso :P )


Hurd me voilà !


[1] HurdFr : http://www.hurdfr.org(...)
[2] Doc : http://www.hurdfr.org/index.php?page=pages/doc/strategie(...)
[3] Wikipedia En : http://en.wikipedia.org/wiki/Hurd(...)
[4] Wikipedia En : http://en.wikipedia.org/wiki/Microkernel(...)
[5] Wikipedia Fr :http://fr.wikipedia.org/wiki/Hurd(...)
[6] L4 : http://os.inf.tu-dresden.de/L4/(...)
[7] Pistachio : http://l4ka.org/projects/pistachio(...)
[8] Fiasco : http://os.inf.tu-dresden.de/fiasco(...)
[9] L4Linux : http://os.inf.tu-dresden.de/L4/LinuxOnL4(...)

> Lire le journal (65 commentaires, moyenne: 3,2).  

Vous avez demandé le commentaire #521761.

Pour le C++

Posté par Croweye () le 14/01/2005 à 02:40. (lien). Évalué à 8.

From http://www.tux.org/lkml/#s15-3(...)

[Why don't we rewrite the Linux kernel in C++? ]

In fact, in Linux we did try C++ once already, back in 1992.

It sucks. Trust me - writing kernel code in C++ is a BLOODY STUPID IDEA.

The fact is, C++ compilers are not trustworthy. They were even worse in 1992, but some fundamental facts haven't changed:

the whole C++ exception handling thing is fundamentally broken. It's _especially_ broken for kernels.
any compiler or language that likes to hide things like memory allocations behind your back just isn't a good choice for a kernel.
you can write object-oriented code (useful for filesystems etc) in C, _without_ the crap that is C++.
In general, I'd say that anybody who designs his kernel modules for C++ is either
(a) looking for problems
(b) a C++ bigot that can't see what he is writing is really just C anyway
(c) was given an assignment in CS class to do so.
Feel free to make up (d).

Linus

  • [^]Re: Pour le C++

    Posté par Marc (Jabber id, page perso, ) le 14/01/2005 à 07:34. (lien). Évalué à 5.

    mouai, mais Linux, tout ce qu'il ne fait pas, c'est de la merde si tu l'ecoutes. Alors il est ptet fort dans son domaine, mais bon....

    • [^]Re: Pour le C++

      Posté par imbolcus (page perso, ) le 14/01/2005 à 08:34. (lien). Évalué à 7.

      c'est surtout qu'il ne fait pas certaines choses pour de bonnes raisons (de son point de vue) et qu'il n'hesite pas a exposer ces raisons et les defendre (sans prendre de gant car il s'en fout)

      apres, chacun peut y voir de l'orgueil si il veut, moi j'y vois plutot de la conviction (bien ou mal placee, la n'est pas le probleme).

      Imbolcus
      A vot' service

      --
      Imbolcus
      A vot' service
      Vive le VTT dans les Vosges !!
      • [^]Re: Pour le C++

        Posté par Marc (Jabber id, page perso, ) le 14/01/2005 à 08:44. (lien). Évalué à 3.

        C'est vrai qu'avec des arguments du type:

        In general, I'd say that anybody who designs his kernel modules for C++ is either
        (a) looking for problems
        (b) a C++ bigot that can't see what he is writing is really just C anyway
        (c) was given an assignment in CS class to do so.
        Feel free to make up (d).

        On comprend les points techniques.
        Maintenant, imagine que MS fasse le meme genre de declaration en comparant Linux et Windows. Est-ce que tu dirais le meme genre de chose, a savoir:
        c'est surtout qu'il ne fait pas certaines choses pour de bonnes raisons (de son point de vue) et qu'il n'hesite pas a exposer ces raisons et les defendre (sans prendre de gant car il s'en fout)


        et je doute pas qu'eux aussi ont de la conviction (bien ou mal placee)

        Je crois que la difference est qu'ici, un culte a Linus est bien en place, et que personne n'oserait contredire le bonhomme.


        In general, I'd say that anybody who designs his kernel modules for C is either
        (a) looking for problems
        (b) a C bigot that can't see what he is writing is really just ASM anyway
        (c) was given an assignment in CS class to do so.
        Feel free to make up (d).

        • [^]Re: Pour le C++

          Posté par Nicolas Bernard (page perso, ) le 14/01/2005 à 09:15. (lien). Évalué à 4.

          Troll mis à part, le point important dans l'argumentation de Linux est que C++ cache certaines choses dans le dos du programmeur, ie fait des vérifications et un tas d'autres choses à l'exécution (runtime).

          Pour un noyau c'est très mal (tm) puisque c'est lui qui est censé fournir la base nécessaire à de telles actes (allocations de mémoire en particulier). Il est probable que si C++ était encore comme en 1986, époque où sa philosophie était, comme en C, "rien en runtime, tout pendant la compilation", Linus serait le premier à l'utiliser l'encapsulation et surtout le polymorphisme (l'encapsulation peut être simulée assez facilement en C) pouvant être pratique...

          • [^]Re: Pour le C++

            Posté par Papa Furax (page perso, ) le 14/01/2005 à 12:34. (lien). Évalué à 1.

            Où est le runtime dans C++?

            • [^]Re: Pour le C++

              Posté par Paerro Trime () le 14/01/2005 à 15:19. (lien). Évalué à 2.

              dans libstdc++

          [^]Re: Pour le C++

          Posté par morgendorffer () le 14/01/2005 à 14:05. (lien). Évalué à 0.

          > Je crois que la difference est qu'ici, un culte a Linus est bien en place, et que personne n'oserait contredire le bonhomme.

          Lis la lkml. Tout le monde n'est pas d'accord avec Linus et l'exprime. S'il existait un "meilleur Linus que Linus" pour maintenir Linux, il aurait remplacé Linus Torvalds. Ainsi va le logiciel libre.

          [^]Re: Pour le C++

          Posté par Will Hunting (page perso, ) le 15/01/2005 à 09:33. (lien). Évalué à 1.

          (d) willing to write 5 times more codelines to do the whole thing and re-do the whole thing again and again to port it on each other archi has to much spart time.

      [^]Re: Pour le C++

      Posté par √λιi () le 14/01/2005 à 08:50. (lien). Évalué à 2.

      D'un autre côté, s'il a fait ses choix c'est probablement pour de bonnes raisons.

      Quand tu t'es pris la tête sur un problème et que tu as analysé les différentes solutions correctement, ton choix te parait le meilleur - sinon tu en aurai fait un autre - et les autre solutions possibles te pareesent mauvaises, voire très mauvaises.

      Bon, reste qu'il peut y avoir un choix entre solutions équivalentes, mais quand Linus en parle - les rares fois ou j'ai pu voir ca - , il explique sont choix beaucoup moins agressivement.

      • [^]Re: Pour le C++

        Posté par Marc (Jabber id, page perso, ) le 14/01/2005 à 09:13. (lien). Évalué à 3.

        il explique sont choix beaucoup moins agressivement.
        idem qu'au dessus. Imagine que Bill tienne les meme propos quand il parle de linux que Linus quand il parle du Hurd.
        Il dis quand meme que le Hurd est une connerie pour droguer, que c'est mal pense, etc etc. Je pense qu'on verait une petite revolution ici =)

        • [^]Re: Pour le C++

          Posté par Djouxxx () le 14/01/2005 à 11:24. (lien). Évalué à 3.

          Linus n'est pas réputé pour être quelqu'un ménageant les susceptibilités et ne mache généralement pas ces mots (il l'a d'ailleurs dit lui même plusieurs fois). Mais il faut dire que s'il devait ménager tout le monde, il péterait les plombs. Dans sa position il est obligé d'avoir des avis tranchés. Ce qu'on peut pas lui retirer, c'est qu'il est en général ouvert au débat et qu'il argumente un minimum.

          Si Bill Gates argumentait avec des explications techniques derrière comme c'est le cas ici. Cela pourrait être intéresant à mon avis.

          Djouxxx

          • [^]Re: Pour le C++

            Posté par chl (page perso, ) le 14/01/2005 à 12:08. (lien). Évalué à 4.

            Depuis quand peut on comparer Bill Gates a Linus ? Ils n'ont aucun rapport !

            Bill est (ex?) president/directeur de MS. Il ne joue pas de role technique dans le developpement du (micro?) noyau Windows. Linus, lui est grandement impliqué dans le developpement du noyau Linux.

            [+] [^]Re: Pour le C++

            Posté par morgendorffer () le 14/01/2005 à 14:11. (lien). Évalué à -1.

            > Ce qu'on peut pas lui retirer, c'est qu'il est en général ouvert au débat et qu'il argumente un minimum.

            Et l'histoire a montré qu'il avait souvent raison. On ne fait pas l'un des meilleurs OS du monde ou le plus respecté en ayant tord. On n'attire pas les développeurs les plus talentueux et intelligents en disant des conneries. Linus n'a rien (pas d'argent, pas de moyen de pression, pas d'exclusivité (sauf sur le nom Linux)). Il est là où il est (mainteneur d'un des OS les plus respecté) car c'est actuellement le meilleur pour cette tache.

      [+] [^]Re: Pour le C++

      Posté par morgendorffer () le 14/01/2005 à 14:01. (lien). Évalué à -3.

      > mouai, mais Linux, tout ce qu'il ne fait pas, c'est de la merde si tu l'ecoutes.

      Je dirai que Linus peut avoir cette attitude. Il (avec d'autres) a fait un système extraordinaire. Ça lui donne quelques "privilèges" dont de ne pas macher ses mots.
      Il y en a qui n'ont presque rien prouvé et qui font la morale à Linux.
      C'est pour ça que Hurd me le pête. Hurd c'est :
      - "nous ont a raison, nous ont fait l'OS du 21ième siècle (Ooops, trop tard), Linux c'est has been c'est pour les vieux cons qui ne savent utiliser que le C".

      On devrait remercier 1000 fois le pragmatisme et l'indépendance (il n'est pas ou peu influencé par les phénomènes de mode) de Linus qui a permis d'avoir ce formidable noyau. Formidable au moins à l'usage. Si certains le trouve nul sur le papier => Je m'en fous.

    [^]Re: Pour le C++

    Posté par Manuel Menal (page perso, ) le 14/01/2005 à 13:50. (lien). Évalué à 7.

    Comme d'hab', du Linus, à prendre avec autant de recul qu'on peut en avoir en regardant Lhassa depuis le sommet du K2.

    Concernant L4Ka::Pistachio, s'il est écrit en C++, il évite tout ce qu'on critique généralement sur le C++ : il n'utilise pas d'exceptions, pas de méthodes virtuelles, extrêmement peu d'héritage (quelques classes génériques avec de l'héritage pour les implémentations spécifiques à l'architecture), évidemment pas la STL, pas de templates, ...

    Bref, du C avec le sucre syntaxique. Au lieu de faire des struct avec des pointeurs de fonction, il y a quelques class par ci par là. Même moi, qui pourtant ne supporte définitivement pas le C++ (allergie suite à une intoxication, un peu comme les fruits de mer vous voyez ?), je supporte très bien le source de L4Ka::Pistachio. C'est dire ;-)

    • [^]Re: Pour le C++

      Posté par thecat () le 14/01/2005 à 19:41. (lien). Évalué à 4.

      >est écrit en C++
      >il n'utilise pas d'exceptions,
      >pas de méthodes virtuelles,
      >extrêmement peu d'héritage
      >évidemment pas la STL, (bon la OK ...)
      >pas de templates, ...

      La question logique qui en découle c'est : mais pourquoi ils utilisent le c++ ... pour faire "aware" ?

      • [^]Re: Pour le C++

        Posté par Manuel Menal (page perso, ) le 14/01/2005 à 21:49. (lien). Évalué à 4.

        Je l'ai dit. Pour le "sucre syntaxique", parce qu'ils ont trouvé que c'était moins chiant de pouvoir déclarer quelques classes, faire un peu d'héritage basique, que de faire la même chose en C. On peut ne pas être d'accord sur le choix - j'aurais sans doute pas fait le même, mais ça ne prête pas pour ainsi dire à conséquence, ni en terme de performances au runtime (aucune des fonctionnalités "dynamiques" de C++ n'étant utilisée), ni en terme de place (L4Ka::Pistachio occupe environ 12K de mémoire une fois booté. Je pense que ça devrait pas être beaucoup trop ;-). Éventuellement, cela rallonge le temps de compilation... Vu comme il est bas, pas grand chose à faire. :-)