Partage
  • Partager sur Facebook
  • Partager sur Twitter

Les langages entrant dans la réalisation d'un OS

    24 juillet 2016 à 2:59:58

    Bonjour tout le monde...

    en fait voila je me demandais quels était le ou les langages entrant dans la conception d'un système d'exploitation (UNIX par exemple de kenneth tompson )... en fait j'aimerais beaucoup avoir une petite vue d'ensemble sur le sujet en  ayant une idée plus ou moins precise de la chose meme si elle est tres complexe

    Merci beaucoup pour toutes les reponses

    • Partager sur Facebook
    • Partager sur Twitter
    apprenant du c++
    Anonyme
      24 juillet 2016 à 3:30:32

      Salut,

      Sans non plus être dans le milieu, je suppose que ça dépend de la couche. Si tu parles du système d'exploitation sans compter le noyau, ça sera principalement les langages que l'on connaît pour l'administration sous Linux (Ruby/Bash surtout) puis pour ce qui est du noyau lui-même, sachant que c'est du bas niveau, c'est généralement du C/C++.

      • Partager sur Facebook
      • Partager sur Twitter
        24 juillet 2016 à 21:26:20

        Lu'!

        Il faut distinguer deux questions :

        • comment sont fait les OS grand public actuels ?
        • qu'est ce qui est nécessaire pour faire un OS ?

        Pour la première question, nos OS sont développés en C pour les parties très bas niveau avec de l'assembleur spécifique à chaque architecture cible en fonction des fonctionnalités que fournissent les processeurs. En remontant, on va progressivement trouver du C++ et du C# chez Microsoft. Chez OSX, ce sera de l'Obj-C et du Swift. Jusqu'à assez haut niveau chez Linux, ça restera du C. Même pour des utilitaires hors noyaux. Le scripting (bash et consorts) n'étant utilisé que pour coordonner les services entre eux.

        Pour la seconde question, le langage a son importance mais sans plus si on ne considère que la tâche de faire tourner un noyau. Rien n'impose l'usage d'un langage ou d'un autre, mis à part quelques fragments d'assembleur pour implémenter quelques tâches cruciale de l'OS. Tout ce que doit remplir le langage c'est :

        • avoir de quoi gérer explicitement des questions de mémoire (ce qui implique notamment la possibilité de faire de la conversion de type "sale"),
        • être compilable sans aucune dépendances à quoi que ce soit d'autre que le programme lui-même,
        • avoir un compilateur pour l'architecture cible.

        Par exemple, à bas niveau les noyaux sont généralement développés en C mais rien ne refuserait que ce soit écrit en C++ ou en Rust pour ne citer qu'eux. Par exemple, un projet qui a été produit par MsResearch récemment est le micro-noyau Midori. Celui-ci a été écrit dans un langage managé fait par Microsoft mais qui donne tout ce qu'il faut pour être compilé en code natif indépendant d'un quelconque environnement runtime.

        Au delà du bas niveau, n'importe quel langage peut faire l'affaire. A partir du moment où tu peux lui fournir l'environnement d'exécution dont il a besoin à partir des services déjà présents dans ton noyau.

        Après, se pose la question de la performance. Les OS sont des composants bas et haut niveau avec lesquels les programmes dialoguent en permanence, ils doivent donc avoir des temps de réponse très courts et n'imposer que le minimum de coûts pour être viables. C'est pourquoi même si n'importe quel langage peut a priori faire l'affaire (modulo les points cités plus haut), le compilateur doit être capable de produire des exécutables efficaces.

        Si tu es intéressé par le fonctionnement des OS, mieux vaut jeter un oeil aux bouquins d'Andrew Tanenbaum (Modern Operating Systems) qui sont à l'heure actuelle les meilleures références sur le sujet.

        • Partager sur Facebook
        • Partager sur Twitter

        Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

        Anonyme
          24 juillet 2016 à 22:13:33

          Salut,

          >C# chez Microsoft.

          Microsoft utilise du C# pour son OS ? :o

          • Partager sur Facebook
          • Partager sur Twitter
            25 juillet 2016 à 7:24:09

            Dans les couches supérieures oui. Il offre des performances correctes pour un cout de développement faible.
            • Partager sur Facebook
            • Partager sur Twitter

            Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

            Anonyme
              25 juillet 2016 à 18:53:00

              Et tu saurais à quel endroit (à peu de choses près) où ils en utilisent ? Pour le gestionnaire/explorateur de fichiers, par exemple ?
              • Partager sur Facebook
              • Partager sur Twitter
                25 juillet 2016 à 19:09:59

                C'est principalement dans les éléments qui concernent les fragments de base de .Net. Un exemple typique c'est l'interface graphique, je ne serai pas surpris que ce soit du C# pur beurre quasi d'un bout à l'autre.

                • Partager sur Facebook
                • Partager sur Twitter

                Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                Anonyme
                  25 juillet 2016 à 22:50:37

                  >Un exemple typique c'est l'interface graphique, je ne serai pas surpris que ce soit du C# pur beurre quasi d'un bout à l'autre.

                  Ca expliquerait aussi pourquoi ça consomme autant. (pour une ihm)

                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 juillet 2016 à 8:31:20

                    En fait en terme de consommation, c'est pas si atroce parce que la majorité des éléments sont déjà alloués donc comme il n'y a pas de réallocations, il n'y a pas de gaspillage de ressources. C'est éventuellement moins réactif mais c'est pour ainsi dire imperceptible. D'ailleurs, si on regarde dans le monde Linux, des interface comme Gnome 3 sont composées d'un morceau de C qui exécute ... du JS. C'est pas un hasard, ces éléments accède au périphérique le plus lent de l'ordinateur : l'utilisateur. Donc ils ont pas besoin d'être incroyablement réactifs.

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C

                    Les langages entrant dans la réalisation d'un OS

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown