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
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++.
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.
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.
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.
× 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.
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C
Posez vos questions ou discutez informatique, sur le Discord NaN | Tuto : Preuve de programmes C