79 votes

Pourquoi MacOS est-il souvent appelé "Darwin" ?

Dans plusieurs langues, au lieu de renvoyer quelque chose comme "MacOS", la commande permettant d'afficher le système d'exploitation renvoie plutôt les informations suivantes

Darwin

Je vois cela dans des langages comme R, et node.

Pourquoi MacOS est-il parfois appelé Darwin ?

3 votes

C'est pour la même raison que le système d'exploitation Ubuntu est souvent appelé "Linux" ou que le système d'exploitation RaspberryPi est appelé "Linux" - Linux n'est pas un système d'exploitation. C'est un noyau qui peut être utilisé comme le cœur de votre système d'exploitation. C'est pourquoi nous appelons Android un système d'exploitation, même s'il utilise le noyau Linux.

8 votes

Darwin, cependant, est un système d'exploitation, pas seulement un noyau (le noyau s'appelle xnu). Apple avait l'habitude de le rendre disponible sous la forme d'un système d'exploitation distinct, avec des binaires, un installateur, des ISO, etc.

3 votes

MacOS est un système complet. Darwin n'a pas l'interface graphique Aqua, c'est donc du texte brut ou - comme la plupart des autres variantes d'Unix/Linux - une interface graphique X11.

108voto

Jörg W Mittag Points 1677

Pourquoi MacOS est-il souvent appelé "Darwin" ?

Ce n'est pas le cas. MacOS n'est pas Darwin et Darwin n'est pas MacOS.

L'histoire de MacOS est longue, alambiquée et compliquée.

Cela commence avec Steve Jobs (pas tout à fait volontaire) qui "quitte" Apple et fonde NeXT. NeXT voulait révolutionner la station de travail personnelle. Ils ont construit à la fois un ordinateur puissant, le NeXT Computer (plus tard NeXTstation et NeXTcube), et un système d'exploitation puissant et moderne, appelé NeXTStep. (Vous comprenez ? L'étape suivante pour l'ordinateur suivant. Un nom vraiment créatif).

Le système d'exploitation était basé sur le portage de BSD sur un micro-noyau Mach, et sur l'ajout de bibliothèques système, de cadres et de boîtes à outils orientés objet (appelés "kits", que vous pouvez encore voir aujourd'hui dans le naming d'Apple), avec un cadre et un bureau d'interface graphique orientés objet, avec des applications orientées objet, le tout écrit dans un langage de programmation moderne orienté objet (Objective-C) comme langage système, par-dessus le système BSD de base. Le système d'affichage était basé sur PostScript, et il y avait même un coprocesseur Intel i860 exécutant une version dépouillée du système d'exploitation, uniquement pour le traitement du PostScript d'affichage, plus un puissant DSP pour le traitement vidéo et audio.

NeXTStep a été le pionnier de nombreuses choses que nous voyons dans la programmation graphique moderne. Il possédait l'un des premiers constructeurs d'interfaces graphiques, qui est encore aujourd'hui le moyen de concevoir des interfaces graphiques pour MacOS, iOS, iPadOS, etc. (Aujourd'hui, il s'appelle Xcode Interface Builder.) Il a donné naissance au tout premier App Store. Lorsque Tim Berners-Lee a inventé le World Wide Web, il a choisi NeXTStep comme système d'exploitation pour lequel il a écrit le premier navigateur. De nombreux studios de jeux ont utilisé NeXTStep et des stations de travail NeXT pour leur développement, par exemple id software pour Doom, Doom 2 et Quake. Lotus Improv, que beaucoup considèrent encore aujourd'hui comme bien meilleur qu'Excel, a été implémenté sur NeXTStep.

Plus tard, NeXT a séparé les cadres de haut niveau du système d'exploitation sous-jacent et les a rendus disponibles sous le nom d'OpenStep pour Windows NT, Sun Solaris, et sous le nom "OPENSTEP for Mach" toujours basé sur les mêmes bases que le NeXTStep original.

À ce moment-là, Apple avait essayé et échoué plusieurs fois à moderniser MacOS, et ils ont acheté NeXT (ramenant ainsi Steve Jobs dans la société) et toute sa propriété intellectuelle et sa technologie pour développer un successeur à MacOS basé sur OPENSTEP pour Mach. Ils ont modernisé le noyau Mach de 2.5 à 3 et l'ont étendu avec des concepts du noyau FreeBSD pour former un noyau connu sous le nom de xnu (une référence à l'échec du projet nuKernel chez Apple qui devait développer un "nouveau noyau"), et les bases BSD de 4.3BSD à 4.4BSD et plus tard FreeBSD.

Plus important encore, ils ont étendu et développé les API d'OpenStep et ont construit de nouvelles API par-dessus. L'ensemble de ces API est connu sous le nom de "Cocoa". Ils ont également construit une API appelée "Carbon", qui était une réimplémentation proche, mais pas identique, d'un sous-ensemble de l'API MacOS sur les nouvelles fondations. (L'intention était que, bien qu'il ne soit pas possible de simplement recompiler les applications MacOS existantes, il devrait être assez facile de les porter vers Carbon, puis au fil des ans de les réécrire en Cocoa).

Le premier prototype de ce système s'appelait Rhapsody. Le système complet n'étant pas terminé à temps, un sous-ensemble a été publié sous le nom de MacOS X Server 1.0. Et le reste appartient à l'histoire : Rhapsody est devenu MacOS X, puis OS X, puis MacOS, et quelque part en chemin, iOS a été séparé, puis divisé en iOS, iPadOS, tvOS et watchOS.

Maintenant, revenons à Darwin : Darwin est essentiellement le fondements de MacOS, depuis le noyau xnu, IOKit, les pilotes, etc. jusqu'aux bibliothèques et userland BSD, plus quelques développements spécifiques à MacOS tels que mDNSresponder et launchd. Il n'inclut cependant aucune partie de ce qui était OpenStep, Cocoa, Aqua, Quartz, QuickTime, ou tout autre élément de plus haut niveau. Il contient des pilotes et des systèmes de fichiers, bien que je ne sois pas tout à fait sûr que APFS fasse partie de Darwin.

Si vous repensez au moment où NeXT a "divorcé" l'OpenStep de haut niveau de ses fondations, les parties de bas niveau qui sont pas OpenStep serait celui qui deviendrait plus tard Darwin.

Au début, Apple avait l'habitude de mettre Darwin à disposition en tant que système d'exploitation distinct, y compris des binaires compilés, des installateurs, des ISO, etc. que vous pouviez installer sur du matériel Apple. Cependant, depuis de nombreuses années maintenant, Apple ne fournit qu'un dump du code source, à chaque fois qu'une nouvelle version de MacOS sort. Il n'est même pas possible de compiler ce code source, car il dépend des outils et du pipeline de construction internes d'Apple. Certains projets ont tenté de patcher Darwin pour le compiler avec des outils disponibles publiquement, mais ces projets sont tous morts par manque d'intérêt.

Étant donné que toutes les choses que vous avez mentionnées sont nées sous Unix et utilisent des API et des bibliothèques Unix, elles ne connaissent généralement pas les parties "non Darwin" de MacOS, il est donc logique qu'elles considèrent le système d'exploitation comme "Darwin". Notez que "Darwin" est également le nom du système d'exploitation qui est renvoyé lorsque vous appelez la commande Unix/POSIX int uname(struct utsname *buf) ou la fonction de la bibliothèque uname Utilitaire de ligne de commande Unix/POSIX.

Donc, pour répondre à la question que vous n'avez pas posée explicitement mais qui est implicite dans votre question : pourquoi Node.js renvoie-t-il "Darwin" pour le nom de MacOS ? Parce que lorsque Node.js demande à MacOS son nom, c'est ce que MacOS lui dit être son nom !

2 votes

Fait amusant : Sun avait aussi un serveur d'affichage utilisant postscript appelé NeWS, mais il n'a pas réussi à avoir des performances compétitives par rapport à W et plus tard X.

1 votes

On peut supposer que la raison pour laquelle Darwin a sa propre identité est que, parce qu'il est basé sur des fondations open-source, il doit être disponible en open-source ? Et manifestement, Apple ne veut pas publier les éléments de plus haut niveau, qui doivent donc être séparés de Darwin ?

14 votes

@ljrk : Il y a beaucoup, beaucoup de faits amusants concernant Sun et l'histoire de MacOS. Patrick Naughton, un développeur de Sun n'aimait pas le C++ et était un énorme fan d'Objective-C, il a donc décidé de quitter Sun et de travailler chez NeXT. Cependant, peu de temps avant son départ, il rencontra Scott McNealy, qui lui parla d'un projet super-secret de développement d'un nouveau langage chez Sun, et lui dit que s'il avait des opinions aussi tranchées sur la conception des langages, il devait y diriger ses contributions. Naughton a donc rejoint l'équipe Oak (plus tard Java) en tant qu'un des principaux concepteurs. Plus tard, pendant le déclin de NeXT, plusieurs autres concepteurs de haut niveau d'Objective-C et de NeXTStep

28voto

Scott Earle Points 3966

Darwin est le noyau sur lequel fonctionne MacOS (anciennement Mac OS X, et OS X).

Il est dérivé de NextSTEP, qui est lui-même construit à partir d'un noyau BSD et Mach, mais Darwin est l'élément le plus important de ce système. la partie open source de MacOS .

Historiquement, lorsqu'Apple a racheté NeXT à la fin des années 1990, la société s'est appuyée sur le système d'exploitation de NeXT (NeXTSTEP) pour constituer la base de la prochaine version du système d'exploitation pour le Mac.

Voir Darwin sur Wikipédia pour plus de détails.

14 votes

Darwin n'est pas le noyau. Le noyau est xnu, qui à son tour est composé de multiples services fonctionnant sur un micro-noyau Mach modifié.

1 votes

Si vous remplacez "kernel" par "core" ou "core OS", votre réponse sera correcte. Le mot "kernel" a une définition très spécifique dans le monde UNIX et Darwin n'est pas le kernel, Darwin se situe entre le kernel (XNU) et l'OS/distribution final (MacOS, iOS, etc.).

1 votes

Après la modification, c'est mieux mais je pense toujours que > dérivé de NeXTSTEP ... construit sur un noyau BSD et Mach < n'est pas vraiment "correct". XNU est partie de Darwin et basé sur un noyau Mach modifié par BSD. Darwin contient également d'autres librairies BSD et des utilitaires de base BSD. Donc c'est plutôt : Darwin = XNU + Userland, Userland étant d'héritage BSD et XNU d'héritage partagé BSD et Mach.

11voto

Oskar Points 1242

Il existe de nombreuses façons de prendre l'empreinte d'un système d'exploitation, mais une méthode canonique pour cela sur unix-like est d'appeler uname Quelles sorties Darwin sur toutes les versions et constructions de MacOS.

Apple publie le code source de la partie Darwin du système d'exploitation afin que vous puissiez inspecter le code qui correspond au nom.

https://opensource.apple.com/release/mac-os-x-100.html

Si vous voulez voir cela vous-même, ouvrez un shell (dans Terminal.app) et vous pouvez générer la chaîne Darwin et lire la page de manuel de uname ou l'appel système (man 3)

uname
man uname
man 3 uname

Voici un bel exemple d'un programme qui a besoin de savoir quel système est en cours d'exécution en appelant uname à partir d'un shell script. Il adapte ensuite la syntaxe et les variables pour effectuer la même tâche sur différents OS :

Je laisserai la question "Pourquoi les êtres humains ont-ils fait cela" pour une autre fois - cette histoire est riche et multiforme et il existe des tonnes d'histoires documentées publiquement sur Internet pour les curieux.

5 votes

Léger détail : uname n'est pas programmé pour répondre à Darwin ; il est programmé pour consulter des ressources externes connues afin de trouver le nom de la plate-forme sur laquelle il fonctionne.

1 votes

Je suis presque sûr que YARV ne verse pas de fonds à la uname commande. Il est plus probable qu'il utilise la commande int uname(struct utsname *buf) Appel à la bibliothèque POSIX.

0 votes

@JörgWMittag votre réponse est stellaire comme le sont les commentaires ici. Merci à tous pour les informations et les remarques réfléchies.

8voto

Natsfan Points 12853

De Wikipedia Darwin est un système d'exploitation de type Unix à code source ouvert, publié pour la première fois par Apple Inc. en 2000. Il est composé de code développé par Apple, ainsi que de code dérivé de NeXTSTEP, BSD, Mach, et d'autres projets de logiciels libres.

3 votes

Et la ligne suivante dans l'article de wikipedia : "Darwin constitue l'ensemble des composants de base sur lesquels sont basés MacOS, iOS, watchOS, tvOS et ipadOS". explique pourquoi MacOS est parfois techniquement appelé un OS "Darwin".

2voto

Nerdmaster Points 516

Voici une citation du livre Prendre le contrôle de la ligne de commande Mac avec Terminal

Lorsqu'Apple a racheté NeXT en 1996, la société a commencé à construire un nouveau système d'exploitation qui étendait et améliorait NeXTSTEP tout en y ajoutant des fonctionnalités (et certaines interfaces utilisateur). capacités (et une partie de l'interface utilisateur) du Mac OS classique. Le résultat fut Mac OS X (plus tard renommé OS X et maintenant MacOS) : c'est Unix, mais avec beaucoup de fonctionnalités supplémentaires qui ne se trouvent pas dans les autres versions d'Unix. Si vous prenez MacOS et que vous enlevez l'interface graphique, les interfaces de programmation d'applications (API) Cocoa et toutes les applications intégrées telles que Mail et Safari, vous obtiendriez le noyau Unix de MacOS. Ce noyau a son propre nom : Darwin. Lorsque vous travaillez dans un environnement de ligne de commande, vous rencontrerez ce terme de temps en temps.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X