web-dev-qa-db-fra.com

D'où vient Mac OS X?

Discuter avec les propriétaires de Mac, j'ai eu plusieurs versions d'où vient Mac OS X. Il est connu d'avoir une racine dans la BSD, mais combien?

Certains disent que Mac OS X possède un noyau FreeBSD, avec tous les utilitaires ci-dessus qui en fait un système d'exploitation étant spécifique à Mac. (Ne parle pas des applications utilisateur ici, seulement tout le init, ls, cd, et d'autres. binutils?)

D'autres disent que Mac OS X est un noyau de Darwin, c'est pucer Mac et que les utilitaires du système d'exploitation proviennent de BSD.

Où est la vérité?

43
Didier Trosset

L'histoire de MacOS est un peu plus compliquée. J'étais très intéressé par cela à la fin des années 90, car Mach avait été lancé dans le monde comme un moyen plus rapide de construire un système UNIX.

L'origine du noyau est un peu plus compliquée.

Tout commence par AT & T distribuant leur système d'exploitation dans certaines universités gratuitement. Cet UNIX a été largement amélioré à Berkeley et est devenu la base des variations de la BSD de UNIX et a incorporé plusieurs nouvelles innovations telles que le "Système de fichiers rapide" (UFS), introduit des symboles et la API des sockets. AT & T est allé à leur manière et construit le système V au même moment.

Pendant ce temps, des recherches ont continué et certaines personnes ont adopté le travail de BSD comme fondement. Lors de la CMU, le noyau BSD a été utilisé comme base de prototypage de quelques nouvelles idées: threads, une API pour contrôler le système de mémoire virtuelle (via des "pagers" Penguge "- Niveau utilisateur MMAP), un système d'appel de procédure à distance au niveau du noyau et la plupart Il est important de noter que l'idée de déplacer certaines opérations de niveau du noyau à l'espace utilisateur. C'est devenu le noyau de Mach.

Je ne suis pas sûr à 100% si le MMAP est venu de Mach, et plus tard a été adopté par BSD, ou si Mach est simplement pionnier de l'idée et du BSD a ajouté son propre MMAP en fonction des idées de Mach.

Bien que le noyau de Mach ait été décrit comme un micro-noyau, jusqu'à la version 2.5, il s'agissait simplement d'un système qui a fourni les caractéristiques du fil, du MMAP, du message, mais restait un noyau monolithique, tous les services fonctionnaient en mode noyau.

À ce stade, Rick Rashid (maintenant chez Microsoft) et Avie Tevanian (maintenant à Apple) ont été proposés avec une nouvelle idée qui pourrait accélérer UNIX. L'idée était d'utiliser l'appel du système MMAP pour passer des données à copier à partir de l'espace utilisateur aux "serveurs" implémentant le système de fichiers. Cette idée était essentiellement une variante d'essayer d'éviter de faire des copies des mêmes données, mais il a été lancé comme un avantage des micro-noyaux, même si la fonctionnalité pouvait être isolée d'un micro-noyau.

Les critères de référence de ce système Unix plus rapide du système VM sont ce qui a conduit les gens à la suite et à la FSF de choisir Mach comme fondement de leurs noyaux.

Ensuite, je suis allé avec le noyau de Mach 2.5 (qui était basé sur BSD 4.2 ou 4.3) et GNU ne commencerait pas réellement sur le travail pendant des années. C'est ce que les systèmes d'exploitation NextStep utilisaient.

Entre-temps à la CMU, les travaux ont continué sur Mach et ils ont finalement réalisé que la vision d'avoir plusieurs serveurs fonctionnant au sommet d'un micro-noyau avec version 3.0. Je ne suis pas au courant de personne à l'état sauvage de pouvoir exécuter Mach 3.0, car tous les serveurs de niveau utilisateur intéressants ont utilisé le code AT & T afin qu'ils soient considérés comme encombrés, il restait donc un produit de recherche.

Autour de cette époque, l'équipe Jolitz avait fait un port de 4,3+ BSD à l'architecture 386 et a publié leurs efforts de portage sur DDDOBBS. 386BSD n'était pas activement entretenu et un groupe a émergé de maintenir et de déplacer 386BSD en avant, l'équipe NetBSD. Les combats internes au sein du groupe NetBSD ont entraîné la formation de la première scission et de FreeBSD. NetBSD à l'époque voulait se concentrer sur une BSD multiplate-forme, et FreeBSD voulait se concentrer sur un Unix qui a bien fonctionné sur des plates-formes X86. Un peu plus tard, Netbsd se fit à nouveau en raison d'autres conflits et cela conduit à la création d'OpenBSD.

Une fourchette de BSD 4.3 pour les plates-formes X86 est devenue commerciale avec une entreprise appelée BSDI et divers membres de l'équipe d'origine Berkeley travaillaient là-bas et ont tenu de bonnes relations avec l'équipe BSD à l'Université.

AT & T n'a pas été amusé et a lancé le procès AT & T vs BSDI, qui a ensuite été étendu à la poursuite de l'université. La poursuite portait sur BSDI utilisant un code exclusif de AT & T qui n'avait pas été réécrit par Berkeley. Ceci a défini BSD par rapport au système d'exploitation Linux en haut et en vigueur.

Bien que les choses ne soient pas bonnes pour les accusés, quelqu'un a compris que Systemv avait incorporé des gros morceaux de code BSD au titre de la licence BSD et AT & T n'avait pas rempli leurs obligations dans la licence. Un règlement a été conclu dans lequel AT & T n'aurait pas à tirer leur produit du marché et l'université a accepté de déchirer n'importe quel code qui pourrait toujours être basé sur le code AT & T.

L'université a ensuite publié deux versions de BSD 4.4 encombrées et 4.4 Lite. La version encombrée démarrerait et exécuterait, mais contenait le code AT & T. La version Lite ne contenait aucun code de AT & T mais n'a pas fonctionné.

Les différents efforts de la BSD ont réacqué leurs travaux sur la nouvelle version 4.4 Lite et disposaient d'un système de démarrage dans les mois.

Pendant ce temps, le noyau de Mach 3.0 Micro est resté très utile sans aucun des serveurs d'utilisateurs.

Un étudiant d'une université scandinave (je crois, je pourrais avoir ce problème) était le premier à créer un système complet Mach 3.0 avec un système d'exploitation complet basé sur la version 4.4 Lite, je crois que cela s'appelait "Lites". Le système a fonctionné, mais était lent.

Au cours des années 1992-1996 et, à présent, BSD avait déjà un appel système MMAP () ainsi que la plupart des autres systèmes UNIX. L'avantage "micro-noyau" qui n'était pas là, n'est jamais vraiment venu de concrétiser. Ensuite, avait encore un noyau monolithique. Le FSF essayait toujours d'obtenir de la construction de Mach et de ne pas vouloir toucher le code BSD ni contribuer à l'un des efforts de la BSD open source, ils ont tenu à payer une vision de noyau mal spécifiée et qu'ils se noient sur des protocoles RPC pour leur propre noyau. Le micro-noyau avait l'air génial sur papier, mais s'est avéré être terminé et tout simplement fait plus lentement.

À ce stade, nous avons également eu le débat Linus vs Andy sur les micro-noyaux VS Les noyaux monolithiques et le monde ont commencé à se rendre compte qu'il était tout simplement impossible d'ajouter tous ces cycles supplémentaires à un micro-noyau et de venir en avance sur un noyau monolithique bien conçu. .

Apple n'avait pas encore acquis NextStep, mais commençait également à regarder Mach comme noyau potentiel pour leurs futurs systèmes d'exploitation. Ils ont embauché la Fondation Open Software pour Port Linux au noyau de Mach et cela a été fait de leurs bureaux de Grenoble, je crois que cela s'appelait "Mklinux".

Quand Apple a acheté ensuite ce qu'ils avaient sur leurs mains était une Fondation UNIX relativement ancienne, une seule base basée sur UNIX de 4,2 ou 4,3 et non, pas même le logiciel libre a pu sortir de la boîte sur ces systèmes. Ils ont embauché Jordan Hubbard loin de Freebsd pour mettre à niveau leur pile Unix. Son équipe était responsable de la mise à niveau de la Terre de l'utilisateur, et ce n'est pas une surprise que la MacOS Userland a été mise à niveau vers les dernières versions disponibles sur BSD.

Apple a commuté son Mach de 2,5 à 3,0 à un moment donné, mais a décidé de ne pas aller avec l'approche du micro-noyau et a plutôt gardé tout ce qui est en cours. Je n'ai jamais pu confirmer si Apple utilisé Les Lites, embauché le pirate scandinave, ou s'ils ont adopté la 4.4 Lite comme système d'exploitation. Je soupçonne qu'ils l'ont fait, mais j'avais déjà passé à Linux et avait cessé de suivre le monde BSD/Mach.

Il y avait une rumeur à la fin des années 90 que Avie à Apple a essayé de localiser Linus (qui était déjà célèbre à ce stade) pour travailler sur son bébé, mais Linus a choisi de continuer à travailler sur Linux.

Histoire de côté, cette page décrit la zone Userland et le noyau Mach/Unix:

http://developer.apple.com/mac/library/documentation/darwin/conceptual/kernelProgrammation/architecture/architecture.html#//apple_ref/doc/uid/tp30000905-ch1g-cacdaedc

J'ai trouvé ce graphique de l'histoire d'OSX: alt text

67
miguel.de.icaza

Sur le côté Unix, le système d'exploitation X est un descendant de NextStep , qui a été dérivé de 4,3BSD avec les parties centrales du noyau remplacées par Mach .

L'API de programmation suivante, qui finit par être appelée OpenStep , est la base de l'API de cacao d'aujourd'hui pour OS X. Deux API ont beaucoup divergé depuis Apple Acheté ensuite dans 1997, bien qu'il y ait en coursefforts pour fournir des clones de cacao compatibles open-source compatibles API.

Ajoutez à cela l'API de compatibilité MacOS classique, appelée Carbon, et vous avez l'interface de programmation OS X.

(Il y a beaucoup plus à OS X, mais ce sont des applications sur tout cela: Finder, le BSD et GNU Userland Tools, etc.)

Quant à l'idée du noyau FreeBSD, c'est une solution correcte, mais c'est une façon peu sophistiquée de le regarder. Le noyau d'origine est venu, comme je l'ai dit, à partir de la prochaine, ce qui a rassemblé son premier noyau de 4.3bsd et Mach. Cela signifie que FreeBSD et NextStep ont partagé du code via 4,3BSD.

La meme que OS X est basée sur FreeBSD a deux sources plus récentes. Premièrement, Apple a continué d'emprunter des innovations du monde BSD, généralement de FreeBSD. Deuxièmement, Apple Hired FreeBSD Project co-fondateur Jordan Hubbard Peu de temps après avoir fait la première version du système d'exploitation publique X. Il a travaillé pour Apple jusqu'en juin 2013.

24
Warren Young

Lorsque vous avez été informé que OSX ait sa propre saveur de Unix, elles sont techniquement correctes.

[~ # ~ # ~] BSD [~ # ~ ~] + éléments de NextStep + Apple Tweaks = Darwin

Mettre un autre moyen. Commander uniquement Fudge chaude/crème glacée (BSD) Ajouter des noix (NextStep) plus la crème de fouet et une cerise (add-in Apple et modify) = un homme chaud sundae (Darwin)

Mais BSD est la base que les autres ont été ajoutées à ce qui est la raison pour laquelle une grande partie de la BSD fonctionnera à Darwin (avec un diabak ici et là)

0
Tweety Bird