Forum Linux.noyau comment est ce possible de faire un noyau avec python ou un langage interprété

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
2
15
fév.
2019

Bonjour,

j'ai vu sur plusieurs forums des personnes qui disent avoir conçu un noyau avec des langages interprété comme python. Comment est ce possible ?
car quand le MBR lance le noyau ca ne peut être qu'un exécutable non ?

merci d'avance pour votre aide

  • # langage interprété => interpréteur => exécutable

    Posté par  . Évalué à 3. Dernière modification le 15 février 2019 à 10:41.

    L'interpréteur Python est un exécutable. C'est sans doute lui qui est lancé par le MBR. Par ailleurs, je suppose que cet interpréteur est modifié pour lancer automatiquement l'interprétation d'un source Python qui serait le noyau.

    Mais peut-être que je n'ai pas compris ta question.

    • [^] # Re: langage interprété => interpréteur => exécutable

      Posté par  . Évalué à 1.

      si si tu as répondu à ma question.

      mais donc l’interpréteur va a chaque fois traduire le code python en code machine, on a donc un noyau assez lent par rapport à un noyau fait en C ?

    • [^] # Re: langage interprété => interpréteur => exécutable

      Posté par  . Évalué à 2.

      L'interpréteur Python est un exécutable. C'est sans doute lui qui est lancé par le MBR. Par ailleurs, je suppose que cet interpréteur est modifié pour lancer automatiquement l'interprétation d'un source Python qui serait le
      noyau.

      Dans ce cas, peut-on vraiment considérer que le noyau est le script, et pas l'interpréteur?

      • [^] # Re: langage interprété => interpréteur => exécutable

        Posté par  . Évalué à 2.

        peut-on vraiment considérer que le noyau est le script, et pas l'interpréteur?

        Exemple : j'ai un ERP en Python. Si c'est l'interpréteur qui est considéré comme étant l'ERP, alors si je change d'interpréteur, j'ai changé d'ERP

        À la limite script + bibliothèques + interpréteur.
        En poussant plus loin, un compilateur pourrait être considéré comme faisant partie du programme --> bof

        • [^] # Re: langage interprété => interpréteur => exécutable

          Posté par  . Évalué à 2.

          Exemple : j'ai un ERP en Python. Si c'est l'interpréteur qui est considéré comme étant l'ERP, alors si je change d'interpréteur, j'ai changé d'ERP

          Moui, enfin, un ERP, c'est une application utilisateur, un noyau c'est un composant dont le rôle est très précis, et qui nécessite d'accéder directement au hardware.

          En poussant plus loin, un compilateur pourrait être considéré comme faisant partie du programme --> bof

          Dans le cas d'un langage interprété, ce ne serait pas déconnant, puisque tu as besoin de l'interpréteur pour utiliser ton programme, alors qu'un binaire est totalement décorrelé de son compilateur (surtout s'il est lié statiquement avec ses dépendances).

  • # Executable

    Posté par  . Évalué à 2. Dernière modification le 15 février 2019 à 13:23.

    Salut,
    Comme répondu au dessus, il faut faire tourné l’exécutable sur la cible. Il faudra un minimum de code comme le boot, et il faut aussi linker statiquement toutes les bibliothèques nécessaire à l’interpréteur. Il faut entre autre réimplémenter certaines fonctions de base comme l’allocation mémoire, etc.

    Je pense qu’un bon exemple est μpython, tu as une carte utilisant cette solution la pyboard. Je n’ai pas regardé comment c’est implémenté, mais le code est .

    Par contre, tu n’as pas vraiment un OS, juste une plateforme pour exécuter du code python.

    • [^] # Re: Executable

      Posté par  . Évalué à 2. Dernière modification le 15 février 2019 à 14:25.

      Par contre, tu n’as pas vraiment un OS, juste une plateforme pour exécuter du code python.

      Une bare machine ?

      Ce qui n'est d'ailleurs pas juste un concept d'école : les premières ébauches du système de contrôle-commande des centrales nucléaires 1400MW de EDF étaient basées sur une bare machine Ada (fin des années 80).

      • [^] # Re: Executable

        Posté par  . Évalué à 2.

        Une bare machine ?

        Je ne connaissais pas l’expression.

        Ce qui n'est d'ailleurs pas juste un concept d'école : les premières ébauches du système de contrôle-commande des centrales nucléaires 1400MW de EDF étaient basées sur une bare machine Ada (fin des années 80).

        Aucune idée, à la fin des années 80 j’étais encore au lycée.

        Ce que j’aime dans la pyboard, que je trouve aussi très moderne c’est son système de boot.
        La carte contient une flash qui est formatée, le firmware démarre, et cherche un fichier boot.py, il l’exécute. Celui-ci cherche ensuite un fichier main.py. Il est déconseillé de modifier le boot.py car il initialise notamment la communication avec l’ordinateur quand la carte est connectée en USB.

        D’ailleurs, en USB, la pyboard s’enregistre comme une clé USB, ce qui permet de modifier les fichiers python, mais aussi de créer des sous répertoire, etc. La carte s’enregistre aussi comme console série, en l’ouvrant on a un interpréteur python exécuté directement sur la carte. Très intéressant en phase de dév. et de test.

        Vous aurez compris, je suis fan.

        • [^] # Re: Executable

          Posté par  . Évalué à 1.

          Il existe plus intégrés encore, les modules pycom (pycom.io) qui reprennent le même principe que la pyboard mais en ajoutant de la connectivité sans fil (Lte-M,Nb-IoT,Wifi, BLE,LoraWan, Sigfox…) très utiles pour des petits dev IoT en adjoignant un petit pcb maison.

  • # Question difficile...

    Posté par  . Évalué à 2.

    Le problème de ta question, c'est que de nombreux langages interprétés actuels peuvent être compilés, dont le python.
    Hors, à partir du moment ou tu peux compiler un source en binaire, rien ne t'empêche en théorie d'écrire un noyau dans ce langage, il faut «juste» que le firmaware (BIOS, UEFI, U-Boot, etc) ou le chargeur de démarrage soit capable de charger ce binaire.

    Par contre, non, le noyau ne peut pas être lui-même interprété: en tout cas, pour moi, le noyau, c'est la couche logicielle qui est directement entre les programmes en espace utilisateur (ce qui inclue les logiciels exécutés par l'utilisateur root) et le matériel lui-même. Les pilotes sont chargés et exécutés par le noyau, qui leur donne (ou pas) accès au matos.
    Je ne suis pas un spécialiste de la question, donc je me permets de laisser de côté la notion de micro-noyaux…

  • # intérêt somme toute limité

    Posté par  . Évalué à 1.

    L'intérêt n'est pas en soit de faire un os compétitif. Il s'agit plus d'un "jeu" de développeur ou d'un but éducatif que d'un réel intérêt d'un point de vue informatique.

    Toutefois rappelons que l'on peut faire tourner autre chose que du matériel. On peut faire un os pour une VM ou mieux pour un navigateur web en JavaScript ou pour simuler un as400…

Suivre le flux des commentaires

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