Adeos, des noyaux dans le noyau

Posté par (page perso) . Modéré par Florent Zara.
Tags :
0
11
oct.
2004
Noyau
Vous avez probablement entendu parler de RTAI, alias "Linux Temps Réel"; mais saviez-vous qu'un noyau peut en cacher un autre ? Adeos permet d'héberger plusieurs noyaux sur un seul CPU et les faire coopérer : en général un noyau "temps réel dur" conçu sur mesure, et un noyau générique pour les tâches classiques (fichiers, réseau, etc). Mais ce que vous pouvez faire d'Adeos n'est limité que par votre imagination...

Une interview (en anglais) d'un développeur d'Adeos - Phlippe Gerum (francophone) - nous explique les tenants et aboutissants de son projet, tant du point de vue technique que politique.
  • # Article sur le sujet

    Posté par (page perso) . Évalué à 10.

    Pour ceux que le sujet intéresse, je me rapelle que GLMF avait sortit un article qui faisait le point sur le temps réel sous Linux à l'été 2003: http://linuxfr.org/2003/07/03/13137.html(...)

    Si vous l'avez manqué (ou perdu), vous pouvez le (re)lire en ligne ici:
    http://www.enseirb.fr/~kadionik/embedded/linux_realtime/linuxrealti(...)
    Il aborde entre autres, RTLinux, RTAI, µClinux,...

    Ce même site d'ailleurs : http://www.enseirb.fr/~kadionik/embedded/embeddedlinux.html(...) fourmille de références.
  • # Jaluna

    Posté par (page perso) . Évalué à 6.

    Quelqu'un qui connait bien le sujet pourrait indiquer la différence avec ce que fait Jaluna ?

    http://jaluna.sourceforge.net/(...)
    http://www.jaluna.com/proserv/jaluna-linux-rt.intro.html(...)

    Exterieurement ca me semble très proche...
    • [^] # Re: Jaluna

      Posté par (page perso) . Évalué à -1.

      Déjà, extérieurement, Jaluna n'est pas libre, c'est clairement proprio, d'ailleurs sur la page du projet SF.net, c'est écrit. Ensuite, et ils n'en disent pas grand chose techniquement... les docs sont peut-être à acheter ?

      Adeos est libre sous licence GPL, et dans l'interview Phlippe Gerum parle des difficultés avec les brevets de RTLinux et les brevets logiciels plus généralement, donc on peut avoir un peu plus confiance...
      • [^] # Re: Jaluna

        Posté par (page perso) . Évalué à 7.

        J'ai pris un fichier au hasard sur le CVS :

        * The contents of this file are subject to the Sun Public
        * License Lite Version 1.0 (the "License"); you may not use this file
        * except in compliance with the License.
        * A copy of the License is available at http://www.sun.com(...)
        *
        * The Original Code is ChorusOS ver. 5.1. The Initial Developer of the Original Code
        * is Sun Microsystems, Inc. Portions created by Sun Microsystems Inc.
        * are Copyright(C) 1998 - 2002 Sun Microsystems, Inc. All Rights Reserved.
        *
        * Parts of the source code are also subject to the GNU General Public License
        * (GPL) (located at http://www.gnu.org/licenses/gpl.html(...)) the Mozilla Public
        * License (located at http://www.mozilla.org/MPL/MPL-1.1.html(...)), the FreeBSD
        * license (located at http://www.freebsd.org/copyright/freebsd-license.html(...)),
        * and the licenses contained in the "Read Me" file accompanying the
        * Original Code.


        La FSF indiquant :
        Sun Public License
        This is essentially the same as the Mozilla Public License: a free software license incompatible with the GNU GPL. Please do not confuse this with the Sun Community Source License which is not a free software license.


        Donc c'est libre...
        • [^] # Re: Jaluna

          Posté par . Évalué à 6.

          * The Original Code is ChorusOS ver. 5.1. The Initial Developer of the Original Code
          * is Sun Microsystems, Inc. Portions created by Sun Microsystems Inc.
          * are Copyright(C) 1998 - 2002 Sun Microsystems, Inc. All Rights Reserved.


          Eh bien, ils ne se font pas chier, chez Sun !

          Mon père travaillait chez Chorus Systems (le vrai "Initial Developer" de Chorus) avant qu'ils ne se fassent racheter par sun en 1998. Donc, non, ce n'est pas d'origine Sun ! (bien qu'évidemment, ils aient acheté les droits en 1998)

          Heureusement, la morale est sauve : Sun a libéré la bête, et maintenant les gars de Jaluna sont pour beaucoup des anciens de Chorus Systems.

          Ensuite, à la base, Chorus (oops Jaluna) est un système micro-noyau, plus à mettre en parallèle avec Mach (son concurrent de toujours) qu'avec Adeos. Ceci dit, évidemment, le crénau de Chorus a toujours été le temps réel.
    • [^] # Re: Jaluna

      Posté par . Évalué à -3.

      ben c'est proprio et cela ne semble donc pas top lègal en plus...

      "La première sécurité est la liberté"

      • [^] # Re: Jaluna

        Posté par (page perso) . Évalué à 2.

        En quoi c'est pas légal ?
        • [^] # Re: Jaluna

          Posté par . Évalué à 1.

          Je ne me rappelle plus les détails. Mais comment faire du proprio avec un extention de code d'un programme GPL en étant dans la légalité ?

          La licence citée plus haut n'étant pas compatible GPL, je ne vois pas comment on peut utiliser les 2 codes ensembles.

          "La première sécurité est la liberté"

          • [^] # Re: Jaluna

            Posté par . Évalué à 2.

            Il suffit que tu sois propriétaire de l'intégralité du code en question.
          • [^] # Re: Jaluna

            Posté par (page perso) . Évalué à 3.

            On t'as dit plus haut que c'était libre mais non compatible GPL.

            Mettez vous une fois pour toute dans le crane que libre ne signifie pas GPL !! Même si ça ne plait pas à Stallman il y a des tonnes de licences libres non compatible GPL.
            • [^] # Re: Jaluna

              Posté par (page perso) . Évalué à 2.

              > il y a des tonnes de licences libres non compatible GPL.

              C'est un peu le problème d'ailleurs : multiplicité d'une part et non compatibilité d'autre part.
            • [^] # Re: Jaluna

              Posté par . Évalué à 1.

              Même si ça ne plait pas à Stallman

              Y'en a pas marre de cette connerie ? Stallman n'a jamais rien dit contre les autres licences libres (à part si on considère que dire "telle ou telle license n'est pas compatible GPL" est une attaque), n'a jamais prétendu que libre = GPL et la FSF liste les licenses libres de manière détaillée et exhaustive (enfin, je crois), ce qui est une preuve qu'ils ne sont pas contre, non ?
              • [^] # Re: Jaluna

                Posté par . Évalué à 1.

                c pas une connerie, et il a bien raison. La GPL est suffisamment bien faite et rodée pour vouloir en créer des dizaines d'autres

                RMS "However in general, multiplying the number of different free software licenses is counter productive, it’s unfortunate, because it means more different things the people need to know." (interview sur Divergence FM)

                http://www.divergence-fm.org/article.php3?id_article=231(...)
                • [^] # Re: Jaluna

                  Posté par (page perso) . Évalué à 1.

                  Tu as raison !!! Forçons ces imbéciles qui n'ont rien compris à utiliser LA bonne licence ! Puis tant qu'on y est, disons leur aussi quel langage utiliser et quelle voiture acheter.

                  Ca va pas bien dans ta tête ?? Liberté de choix, ça te dit quelquechose ?
                  • [^] # Re: Jaluna

                    Posté par . Évalué à 1.

                    liberté de choix, ok. Je suis pas contre le fait de prendre autre chose que la GPL.
                    mais il ny a pas besoin non plus de milliers de licence. Apres, qui va les lires, c lourd.
                    qd on voit marquer GPL dans la description d'un prog qu'on veut telecharger, on sait a quoi s'en tenir.

                    il y a les licences creative commons, qui permettent une bonne modularité, les licences types BSD, plus permissives que la GNU ;
                    mais en a ton besoin de bcp d'autres ?
                    et pourkoi vouloir faire une traduction de la GPL, plutot que d'utiliser LA gpl tout en prenant soit qq part de faire une bonne explication dans la langue voulue de toutes les sections comportant la GPL.

                    P.S. : un debat, c bien. une baston gle, c po top. Alors reprends toi et pese tes mots...
            • [^] # Re: Jaluna

              Posté par . Évalué à 2.

              Euh dit on parle de code qui se lie à Linux, hein...

              Tu sais ce bout de code _GPL_ pondu par un finlandais.

              "La première sécurité est la liberté"

              • [^] # Re: Jaluna

                Posté par (page perso) . Évalué à 1.

                Ici je ne parle pas du fait que ça peut se lier à Linux ou pas, je dis simplement que même si c'est incompatible GPL, c'est libre. Alors maintenant si leur licence rend impossible de linker leur code avec Linux, c'est un autre problème mais même inutilisable ce code est libre.
    • [^] # Re: Jaluna

      Posté par . Évalué à 3.

      La différence c'est que la solution Jaluna permet de booter et de faire shutdown de Linux (ou des autres personnalités (RT)OS) et de redémarrer Linux. ADEOS est chargé avec Linux et ne peut pas vivre sans lui. Quand aux modules RTAI ils sont chargés par Linux.

      Juste pour info, chaque fois que je lance RTAI 3.1 avec X11, j'ai un reboot immediat de la machine donc RTAI c'est bien mais il y a encore du boulot. J'ai pas encore essayé Fusion.
  • # c'est quoi le temps réel ?

    Posté par (page perso) . Évalué à 2.

    c'est quoi le temps réel ?
    • [^] # Re: c'est quoi le temps réel ?

      Posté par (page perso) . Évalué à 5.

      Un système informatique est dit « Temps réel » s'il peut garantir un temps d'éxécution pour une opération donnée.
      • [^] # Re: c'est quoi le temps réel ?

        Posté par . Évalué à 1.

        Le temps garanti n'a de valeur que s'il est assez faible bien-sûr.
        Temps de l'ordre de la milliseconde exigé généralement.
        Linux pré-emptif (pas du temps reel) reagit couramment en dessous de 10 millisecondes.
        • [^] # Re: c'est quoi le temps réel ?

          Posté par (page perso) . Évalué à 10.

          pas exactement.

          En fait, c'est bien une histoire de garantie.

          Un exemple simple.

          Tu as ton xmms qui tourne. Il a besoin d'un certain temps CPU pour lire tes ogg.

          Si xmms tournait en temps réél, le systeme lui permettrait d'avoir la proiorité pour faire son calcul et tu aurais toujours (moyenant problème matériel) de lire tes ogg sans coupure.

          En pratique c'est vrai, mais il peux arriver que ca sacade un coup. C'est pas grave pour xmms si ca saute, mais en général, le temps réel, c'est surtout pour des application importante, genre garder le champs magnétique de ton train sans rail pour qu'il ne touche pas le sol. Une seul petite erreur peux etre fatal. Il faut donc que le systeme garantisse que l'opération sera calculer.

          Je suis ptetre pas tres precis, vous pouvez soulever les trucs pas clair voire faux, bien sur ;-)
          • [^] # Re: c'est quoi le temps réel ?

            Posté par . Évalué à 4.

            J'irai même plus loin!
            Le temps réel C une garantie de temps d'execution d'une tache donnée pour une charge de système donnée!
            Je mexplique :
            - La garantie : qu'importe l'état du systeme, je suis sûr que ma tache sera exécutée au temps T défini
            - le temps d'execution est aussi définie, le temps d'execution d'une tâche sera la même et inférieur à un temps t .
            - La charge maximal du sytème aussi est aussi donnée, car même un système temps réel peut etre surchargé et la on peu plus dire qu'il est temps réel, C pour cela qu'il faut bien choisir définir la tâche du syteme pour le dimensionner.

            En conclusion, il n'est pas necessaire d'avoir un gros system pour etre temps réel, mais un systeme insensible aux erreurs (matériels/logiciels tolérant aux pannes).
            Dire qu'un systeme est temps réel sans C données cela ne veux rien dire, car tous systemes seraient temps réel.
            J'ai même entendu pendant mes études dire que ça ne sert rien de développer en temps réel maintenant car les sytemes sont tellement rapides maintenant.
            C faut! les ordinateurs actuels sont certes rapides mais il ne garantissent que mon processus s'executera à un temps t pendant un temps T.
          • [^] # Re: c'est quoi le temps réel : Parlons Encyclo libre !

            Posté par . Évalué à 3.

            Quelques compléments d'information sur http://fr.wikipedia.org/wiki/Syst%C3%A8me_temps_r%C3%A9el(...)
        • [^] # Re: c'est quoi le temps réel ?

          Posté par (page perso) . Évalué à 7.

          J'ai entendu parler d'une installation temps réel où le temps de réponse admissible pouvait se compter en secondes. Exemple : quand le réservoir d'acide descend au dessous des 2/10e de sa capacité, ajouter un wagon d'acide dans le réservoir. Dans ce cas c'est encore du temps réeel. Le fonctionnement est continu et le temps de réponse est long mais garanti. Si ça ne fonctionne pas, la papeterie s'arrête.
        • [^] # Re: c'est quoi le temps réel ?

          Posté par . Évalué à 5.

          Les notions de "temps réel" et de "vitesse" sont différentes!!!
          Si ton système fait du contrôle commande sur une grosse chaudière, avec une constante de temps importante, les contraintes de temps se compterons en minutes!!

          Après dans la pratique, lorsqu'on parle d'exécutif temps réel, on veut qu'il puisse réagir vite. Pour des applis vraiment rapides, il faudra surement un exécutif spécialisé.

          On distingue généralement le temps réel "mou" où des échéances peuvent être loupées (pour xmms par exemple) du temps réel "dur" où il n'est pas possible de dépasser des échéances (le logiciel d'un ABS par ex). C'est dans ce dernier cas qu'il faut un OS très réactif.
          • [^] # Re: c'est quoi le temps réel ?

            Posté par (page perso) . Évalué à 3.

            > C'est dans ce dernier cas qu'il faut un OS très réactif.
            Ou pas d'OS du tout. Bref, un logiciel qui ne fonctionne pas en mode protégé et qui ordonne directement au processeur et à la mémoire.

            Qui a dit exécutable DOS ? ;)
            • [^] # Re: c'est quoi le temps réel ?

              Posté par . Évalué à 1.

              Si DOS fonctionne sur une architecture temps-reel p'tetre.
              Hors si tu veux un temps de reponse garanti, il faut que ton hard te reponde dans un temps garanti. Ce qui n'est pas le cas. Certains pensent que faire du temps reel "dur" sur un PC, c'est bien pour la pedagogie, mais pas pour une implementation reelle.
          • [^] # Re: c'est quoi le temps réel ?

            Posté par (page perso) . Évalué à 4.

            Tout à fait d'accord, on peut avoir des applis temps réel avec des contraintes assez longues, mais toujours impératives.
            Il y a aussi parfois des contraintes de temps d'éxécution minimum. Exemple : si l'airbag se déclenche trop tôt, il sera moins efficace.

            On parle aussi souvent d' "ordonnanceur déterministe". Pas forcément plus rapide qu'un autre, mais son temps d'ordonnancement est prévisible, son délai de réponse à une interruption aussi.

            La loi de Moore aidant, il est de moins en moins difficile de répondre à des contraintes temps réel moyennement rapides, et les systèmes non temps-réel sont aujourd'hui courants dans l'audiovisuel (lisez : multimedia) alors que c'était impensable il y a qq années.

            On conjugue souvent temps-réel et embarqué (bien que ce ne soit pas forcément lié), ce qui amène d'autres contraintes : faible taille mémoire, faible consommation et échauffement donc faible fréquence CPU, faible encombrement ...

            Linux est (surtout depuis la version 2.6) assez bien placé pour le temps réel "mou", et sa modularité fait le bonheur des développeurs de systèmes embarqués. Les extensions comme RTAI, MontaVista ou RTLinux ouvrent les portes du temps-réel "dur". Il suffit de jeter un coup d'½il au sondage annuel de LinuxDevices.com (http://www.linuxdevices.com/cgi-bin/survey/survey.cgi?view=archive&(...) ), on voit une nette progression de Linux à la place des "OS maison" et des softs sous DOS !
        • [^] # Re: c'est quoi le temps réel ?

          Posté par . Évalué à 2.

          Le temps garanti n'a de valeur que s'il est assez faible bien-sûr.

          Je trouve que la notion "assez faible" est trop vague pour être pertinent comme critère. Suivant les contextes on peut avoir des contraintes de temps de traitement qui s'étalent sur des échelles variées.
          • [^] # Re: c'est quoi le temps réel ?

            Posté par . Évalué à 1.

            Je trouve que la notion "assez faible" est trop vague pour être pertinent
            C'est pour cela que je donne des ordres de grandeur dans la phrase d'apres.

            Ce que je veux dire, c'est que si tu veux une garantie d'une seconde, ya pas vraiment besoin d'un systeme temps reel dur. Un systeme preemptif bien configuré suffit.
            Les enjeux du temps reel sont sur des reactions très rapide. Biensûr que dans la notion de temps reel c'est la garantie qui compte. Linux ne garantie rien, mais dans la pratique il reagit suffisamment. Par contre si tu veux de la milliseconde, il faut changer de principe.
            Et je suis tout à fait d'accord avec les commentaires prescedents
            • [^] # Re: c'est quoi le temps réel ?

              Posté par . Évalué à 4.

              MMmmh, garantir une seconde "dans la plupart des cas", c'est effectivement du ressort du Linux moyen. Garantir une seconde "dans tous les cas" (le seul intérêt de la garantie, finalement), c'est déjà beaucoup plus siouxe. Arriver à rendre un Linux plus réactif du tout, c'est encore faisable, il me semble.
            • [^] # Re: c'est quoi le temps réel ?

              Posté par . Évalué à 4.

              Non tu n'as pas compris.
              Tu peux avoir du temps réel avec des ordres de temps d'une heure ! Relis certains des messages plus haut.
              Les enjeux du temps réel ne sont pas des "réactions très rapides". Il s'agit de prévoir ce que va faire le système, dans quel ordre, et ce sans faute.

              Je connais un système où les concepteurs écrivent les ordonnancements à l'avance à l'aide d'un langage spécifique, décrivent les chronogrammes avec le temps alloué à chaque tâche et dans quel ordre (oui ils connaissent chaque tâche qui va tourner, c'est pas un desktop, hein), et là il n'y a plus de place pour le hasard. On est en mesure de GARANTIR ce qui se passe.
              Ce système est développé par une équipe du CEA, j'ai fait un stage dans cette équipe (mais au sein d'un autre projet) et est utilisé sur des systèmes de grues par exemple, pour éviter que plusieurs grues ne se rentrent dedans.
              • [^] # Re: c'est quoi le temps réel ?

                Posté par . Évalué à 1.

                Un système temps réel : etre dans une certaine fenetre temporelle.

                Contrainte de une semaine : exemple, tu sors d'un cours hebdomadaire à 18h, et ton contrainte est d'etre la à 14H la semaine suivante sinon tu te fais jeter par le prof...
      • [^] # Re: c'est quoi le temps réel ?

        Posté par . Évalué à -1.

        Pour faire trés simple le temps réel est au os ce que la QoS est aux réseaux. ;-)
      • [^] # Re: c'est quoi le temps réel ?

        Posté par . Évalué à 0.

        En fait un OS temps réel garantit plutôt que ton thread sera dispatché au moins une fois dans un temps donné.
    • [^] # Re: c'est quoi le temps réel ?

      Posté par . Évalué à 8.

      Sans vouloir contredire toute la conversation précédente, je voudrais apporter mes deux centimes :

      Les temps réel, c'est quand c'est le temps du monde réel qui donne la cadence et que c'est au logiciel de suivre. On trouve des problématiques de temps réel dans de nombreuses applications (webcam, contrôle industriel, logiciel embarqué...) et à des vitesses variées (cf les wagons d'acide).

      Tout le contraire de nos PC de bureau qui peuvent ramer quand ils veulent et nous forcer à attendre...
      • [^] # Re: c'est quoi le temps réel ?

        Posté par . Évalué à 2.

        pas mal cette définition "à l'envers" :) C'est plus clair que de parler de temps pire cas garantie.

        "La première sécurité est la liberté"

  • # Imagination overflow

    Posté par (page perso) . Évalué à 5.

    Mais ce que vous pouvez faire d'Adeos n'est limité que par votre imagination...
    Pourtant, en informatique, on est toujours limité par les ressources matérielles, non ?
    • [^] # Re: Imagination overflow

      Posté par (page perso) . Évalué à 3.

      Mais ce que vous pouvez faire d'Adeos n'est limité que par votre imagination...
      Pourtant, en informatique, on est toujours limité par les ressources matérielles, non ?


      Bien vu !

      Maintenant, essaye avec ça :

      Mais ce que vous pouvez faire d'Adeos, dans la limite des ressources matérielles, n'est limité que par votre imagination...
  • # différences avec uml et vservers

    Posté par (page perso) . Évalué à 2.

    Si j'ai bien compris : on fait tourner plusieurs noyaux sur la même machine.
    UML et vservers le font également qu'elles sont les différences entre ces projets ?

    http://usermodelinux.org/(...)
    http://www.linux-vserver.org/(...) <- le site set mort ?
    • [^] # Re: différences avec uml et vservers

      Posté par (page perso) . Évalué à 4.

      Voilà ce que j'ai compris/lu :

      UML est un noyau Linux qui tourne comme toute autre appli, en userspace, dans un OS à base de noyau Linux. Compiler le noyau UML avec ARCH=um, avec ses modules.

      VServer est un patch noyau qui permet l'exécution d'applis dans des "contextes" d'exécution isolés : les processus d'un contexte ne voient pas les processus des autres contexte, vtop pour les voir.

      coLinux est un noyau Linux patché qui partage des privilèges de l'OS hôte (Win/Lin), donc plus bas que UML.

      Adeos est un micronoyau faisant tourner d'autres noyaux... Ma question : Adeos fait tourner les autres noyaux en userspace ?
      • [^] # Re: différences avec uml et vservers

        Posté par . Évalué à 8.

        Adeos est une implémentation du principe de bus d'interruptions.

        En gros, il capte les interruptions matérielles, et les distribue à ses clients, qui peuvent être des OS généralistes ou temps-réel.

        Les clients recoivent les interruptions chacun à leur tour, et peuvent décider de les laisser poursuivre ou pas.

        Pour RTAI, le principe est qu'un micro-noyau temps-réel est client du bus, ainsi que le noyau linux.

        Le noyau temps-réel étant placé avant linux sur le bus, il décide quelles interruptions laisser passer à linux, et quand, ce qui lui permet de respecter ses contraintes.

        Pour mémoire, dans l'ancien RTAI, ( et dans RTLinux, beurk ) le noyau temps réel avait linux pour tâche de plus basse priorité, ce qui lui permettait aussi de ne donner la main à linux que dans la mesure où ses contraintes le lui permettaient.

        L'inconvénient d'adeos, c'est que pour qu'un système puisse l'utiliser, il doit être modifié spécifiquement. Ce n'est pas un gros travail, mais ca exclut à priori les OS propriétaires.
  • # Première réponse

    Posté par . Évalué à 0.

    Superbe sa première réponse, j'adore sa description du projet en deux lignes que sa grand-mère pourrait comprendre :)

    Rien d'intelligent à ajouter, désolé.
  • # en parlant noyaux temps réels

    Posté par . Évalué à 1.

    MontaVista unveils "open" hard-real-time Linux project
    http://lwn.net/Articles/106011/(...)
    Le mail sur la liste de diffussion du noyaux contenant les liens vers les patch
    http://groups.google.fr/groups?hl=fr&lr=&threadm=2Ogds-5tE-(...)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.