web-dev-qa-db-fra.com

Dans quelles langues sont écrits Windows, Mac OS X et Linux?

Je me demandais simplement qui savait en quels langages de programmation Windows, Mac OS X et Linux sont composés et quels langages sont utilisés pour chaque élément du système d'exploitation (par exemple: noyau, architecture de plug-in, composants d'interface graphique, etc.).

Je suppose qu'il y a plusieurs langues pour chacune et évidemment je sais que le noyau Linux est écrit en C.

Je suppose que Mac OS X contient beaucoup de code Objective-C, car il s’agit du langage Apple dérivé de NeXT.

Windows, j'ai entendu dire qu'il contient C, C++ et Intel Assembly. Est-ce que Linux ou Mac OS contient un code d'assemblage?

De plus, existe-t-il des langages de script tels que Ruby, Python, etc. utilisés par les développeurs de système d'exploitation pour le script de parties du système d'exploitation? Quelles parties du système d'exploitation seraient écrites dans chaque langue?

252
Brock Woolf
  • Windows: C++, le noyau est en C
  • Mac: Objective C, le noyau est en C (le sous-système IO PnP est Embedded C++)
  • Linux: la plupart des choses sont en C, de nombreuses applications utilisateur sont en Python, KDE est entièrement en C++

Tous les noyaux utiliseront également du code Assembly.

246
Paul Betts

Linux: C. Quelques pièces dans Assembly.

[...] C'est surtout en C, mais la plupart des gens n'appelleraient pas ce que j'écris. Il utilise toutes les fonctionnalités imaginables du 386 que j'ai pu trouver, car c'était aussi un projet pour m'apprendre le 386. Comme déjà mentionné , il utilise une MMU, à la fois pour la pagination (pas encore sur le disque) et la segmentation. C’est la segmentation qui le rend VRAIMENT 386 (chaque tâche a un segment de 64 Mo pour le code et les données - 64 tâches au maximum en 4 Go. Quiconque a besoin de plus de 64 Mo/tâche - cookies difficiles). [...] Certains de mes fichiers "C" (en particulier mm.c) sont presque autant assembleurs que C. [...] Contrairement à minix, il m'arrive également de ressembler à des interruptions similaires, de sorte que les interruptions sont traitées sans tentative de masquage. la raison derrière eux. (Source)

Mac OS X: Cacao principalement en Objective-C. Noyau écrit en C, certaines parties dans Assembly.

Mac OS X, au niveau de la couche noyau, est principalement un ancien système d’exploitation libre appelé BSD (plus précisément Darwin, une sorte d’hybride de BSD, Mach et quelques autres choses) ... presque entièrement en C, avec un peu d'assembleur jeté dedans. (Source)

Une grande partie de Cocoa est implémentée dans Objective-C, un langage orienté objet qui est compilé pour s'exécuter à une vitesse incroyable, tout en utilisant un environnement d'exécution vraiment dynamique le rendant particulièrement flexible. Objective-C étant un sur-ensemble de C, il est facile de mélanger C et même C++ dans vos applications Cocoa. (Source)

Windows: C, C++, C #. Quelques pièces en assembleur.

Nous utilisons presque entièrement C, C++ et C # pour Windows. Certaines zones de code sont assemblées à la main/écrites à la main. (Source)

Unix: C. Quelques pièces dans Assembly. (Source)

89
Pacerier

Mac OS X utilise de grandes quantités de C++ à l'intérieur de certaines bibliothèques, mais il n'est pas exposé car elles craignent que l'ABI ne se brise.

13
alex strange

Je comprends que c’est un vieux message, mais Windows n’est certainement pas écrit en C++. Il y a beaucoup de C++, mais ce que nous définissons comme système d'exploitation ne l'est pas en C++. Les API Windows, le noyau Windows (les deux sont essentiellement ce qu’est un système d’exploitation) sont écrits en C. Il ya quelques années, on me donnait une fuite de code pour Windows 2000 et Windows XP. Le code n'était pas assez complet pour compiler le noyau ou l'API, mais nous avons pu compiler des programmes et des services individuels. Par exemple, nous avons pu compiler avec succès Notepad.exe, mspaint.exe et le service spoolsv.exe (spooler d’impression). Tous écrits en C. Je n'ai pas encore regardé, mais je suis sûr que le code qui a été filtré survit toujours sous forme de fichiers torrent, qui sont peut-être encore disponibles.

9
Duke Bishop
  • fenêtres: C++
  • linux: C
  • mac: objectif c
  • Android: Java, C, C++
  • Solaris: C, C++
  • iOS 7: Objective-C, Swift, C, C++
8
sonsha

Windows: principalement C et C++, certains C #

8
Larry Osterman

Vous avez raison, MacOSX a Objective-C dans le noyau.

Windows C++

Linux C

En ce qui concerne les langages de script, non, ils sont plutôt de haut niveau.

6
OscarRyz

J'ai lu ou entendu que Mac OS X est écrit principalement en Objective-C avec certaines parties de niveau inférieur, telles que le noyau et des pilotes de périphérique matériels écrits en C. Je crois que Apple "eat ( s) sa propre nourriture pour chiens ", ce qui signifie qu'ils écrivent Mac OS X en utilisant leur propre Outils de développement Xcode . Le GCC (Collection du compilateur GNU) compiler-linker est l'outil de ligne de commande unix utilisé par xCode pour la plupart de ses tâches de compilation et/ou de liaison des exécutables. Parmi les autres langages possibles, je sais que GCC compile le code source à partir des langages C, Objective-C, C++ et Objective-C++.

5
Patrick Cassell

Sensationnel!!! 9 années de question mais je viens de rencontrer une série de article sur l'historique de la ligne de commande Windows et je pense qu'une partie de celle-ci pourrait être pertinente du point de vue de Windows:

Pour ceux qui se soucient de ce genre de choses: Beaucoup ont demandé si Windows est écrit en C ou C++. La réponse est que, malgré la conception basée sur les objets de NT, comme la plupart des systèmes d’exploitation, Windows est presque entièrement écrit en "C". Pourquoi? C++ introduit un coût en termes d'encombrement de la mémoire et de temps système nécessaire à l'exécution du code. Même aujourd’hui, les coûts cachés du code écrit en C++ peuvent être surprenants, mais à la fin des années 1990, lorsque la mémoire coûtait environ 60 USD/Mo (oui… 60 USD par MEGABYTE! ), le coût en mémoire cachée de vtables, etc. était significatif. En outre, le coût de l’indirection d’appel par méthode virtuelle et de la déréférencement d’objet pourrait entraîner des pénalités très importantes en termes de performances et d’échelle pour le code C++ à ce moment-là. Même s'il faut rester prudent, les frais généraux de performance du C++ moderne sur les ordinateurs modernes sont beaucoup moins préoccupants et constituent souvent un compromis acceptable compte tenu de ses avantages en termes de sécurité, de lisibilité et de maintenabilité. mise à niveau constante du code de la console au C++ moderne.

4
adem

Le noyau Linux est principalement écrit en C (et un peu de langage d'assemblage, j'imagine), mais certains des utilitaires (programmes) d'espace utilisateur importants sont des scripts Shell écrits dans le langage de script Bash. Au-delà de cela, il est un peu difficile de définir "Linux" puisque vous construisez un système Linux en choisissant les éléments que vous voulez et en les assemblant. Selon les souhaits de chaque utilisateur de Linux, vous pouvez utiliser à peu près n'importe quel langage. (Comme Paul l'a dit, Python et C++ jouent un rôle important)

4
David Z

Voir sous la rubrique n système d'exploitation fonctionnant sur plusieurs plates-formes où il est indiqué:

Most of the source code for Windows NT is written in C or C++.
3
pcunite

En complément du noyau de Mac OS X, Finder n’avait pas été écrit en Objective-C avant Snow Leopard. Dans Snow Leopard, cela a été écrit en cacao, Objective-C

3
Çağatay Gürtürk

Windows n'est évidemment pas écrit en C # (!)

Il suffit de voir le code source de Windows et vous verrez ...

1
sef45