GNU/Linux >> Tutoriels Linux >  >> FreeBSD

Freebsd - D'où vient Mac Os X ?

En discutant avec les propriétaires de Mac, j'ai obtenu plusieurs versions de l'origine de Mac OS X. Il est connu qu'il a des racines dans BSD, mais combien et où ?

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

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

Où est la vérité ?

Réponse acceptée :

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é présenté dans le monde entier comme un moyen plus rapide de construire un système Unix.

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

Tout commence avec AT&T distribuant gratuitement son système d'exploitation à certaines universités. Cet Unix a été considérablement amélioré à Berkeley et est devenu la base des variantes BSD d'Unix et a incorporé plusieurs nouvelles innovations comme le "Fast File System" (UFS), l'introduction de liens symboliques et l'API sockets. AT&T a suivi sa propre voie et a construit System V en même temps.

Pendant ce temps, les recherches se sont poursuivies et certaines personnes ont adopté le travail de BSD comme base. Chez CMU, le noyau BSD a été utilisé comme base pour le prototypage de quelques nouvelles idées :des threads, une API pour contrôler le système de mémoire virtuelle (via des "pagers" enfichables - mmap au niveau de l'utilisateur), un système d'appel de procédure à distance au niveau du noyau et la plupart surtout l'idée de déplacer certaines opérations au niveau du noyau vers l'espace utilisateur. C'est devenu le noyau Mach.

Je ne suis pas sûr à 100 % si mmap est venu de Mach, et a ensuite été adopté par BSD, ou si Mach a simplement été le pionnier de l'idée et que BSD a ajouté son propre mmap basé sur les idées de Mach.

Bien que le noyau Mach ait été décrit comme un micro-noyau, jusqu'à la version 2.5, il s'agissait simplement d'un système qui fournissait les fonctionnalités de thread, mmap, de transmission de messages, mais restait un noyau monolithique, tous les services fonctionnaient en mode noyau.

À cette époque, Rick Rashid (maintenant chez Microsoft) et Avie Tevanian (maintenant chez Apple) avaient proposé une nouvelle idée qui pourrait accélérer Unix. L'idée était d'utiliser l'appel système mmap pour transmettre les données à copier depuis l'espace utilisateur vers les « 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 elle a été présentée comme un avantage des micro-noyaux, même si la fonctionnalité pouvait être isolée d'un micro-noyau.

Les références de ce système Unix plus rapide et soutenu par une machine virtuelle sont ce qui a poussé les gens de NeXT et de la FSF à choisir Mach comme base de leurs noyaux.

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

Pendant ce temps, à CMU, les travaux se sont poursuivis sur Mach et ils ont finalement réalisé la vision d'avoir plusieurs serveurs fonctionnant sur un micro-noyau avec la version 3.0. Je ne connais personne dans la nature capable d'exécuter Mach 3.0, car tous les serveurs intéressants au niveau de l'utilisateur utilisaient du code AT&T, ils étaient donc considérés comme encombrés, c'est donc resté un produit de recherche.

À peu près à la même époque, l'équipe de Jolitz avait effectué un portage de 4.3+ BSD sur l'architecture 386 et publié ses efforts de portage sur DrDobbs. 386BSD n'était pas activement maintenu et un groupe a émergé pour maintenir et faire avancer 386BSD, l'équipe NetBSD. Des combats internes au sein du groupe NetBSD ont provoqué la première scission et FreeBSD a été formé à partir de cela. NetBSD à l'époque voulait se concentrer sur un BSD multiplateforme, et FreeBSD voulait se concentrer sur un Unix qui fonctionnait très bien sur les plateformes x86. Un peu plus tard, NetBSD s'est à nouveau séparé en raison d'autres différends, ce qui a conduit à la création d'OpenBSD.

En relation :Mac – Est-il possible d'utiliser une Apple Time Capsule simplement comme un lecteur de sauvegarde connecté au réseau et non comme un routeur ?

Un fork de BSD 4.3 pour les plates-formes x86 est devenu commercial avec une société appelée BSDi, et divers membres de l'équipe originale de Berkeley y ont travaillé et ont maintenu de bonnes relations avec l'équipe BSD de l'université.

AT&T n'a pas été amusé et a lancé le procès AT&T contre BSDi, qui a ensuite été élargi pour poursuivre également l'Université. Le procès concernait BSDi utilisant un code propriétaire d'AT&T qui n'avait pas été réécrit par Berkeley. Cela a retardé BSD par rapport au système d'exploitation Linux en devenir.

Bien que les choses n'allaient pas bien pour les accusés, quelqu'un s'est rendu compte à un moment donné que SystemV avait incorporé de gros morceaux de code BSD sous la licence BSD et qu'AT&T n'avait pas rempli ses obligations dans la licence. Un règlement a été conclu dans lequel AT&T n'aurait pas à retirer son produit du marché, et l'Université a accepté de supprimer tout code qui pourrait encore être basé sur le code AT&T.

L'université a ensuite publié deux versions de BSD 4.4 grevé et 4.4 lite. La version encombrée démarrerait et s'exécuterait, mais contenait du code AT&T. La version allégée ne contenait aucun code d'AT&T mais ne fonctionnait pas.

Les différents efforts de BSD ont refait leur travail sur la nouvelle version 4.4 lite et ont eu un système de démarrage en quelques mois.

Pendant ce temps, le micro-noyau Mach 3.0 restait peu utile sans aucun des serveurs utilisateur.

Un étudiant d'une université scandinave (je crois que je me trompe peut-être) a été le premier à créer un système Mach 3.0 complet avec un système d'exploitation complet basé sur la version 4.4 lite, je crois que cela s'appelait "Lites". Le système fonctionnait, mais était lent.

Entre 1992 et 1996, BSD disposait déjà d'un appel système mmap() ainsi que la plupart des autres systèmes Unix. "L'avantage du micro-noyau" qui n'était pas là, ne s'est jamais vraiment concrétisé. NeXT avait toujours un noyau monolithique. La FSF essayait toujours de faire construire Mach, et ne voulant pas toucher au code BSD ou contribuer à l'un des efforts BSD open source, ils ont continué à charger une vision du noyau mal spécifiée et ils se sont noyés dans les protocoles RPC pour leur propre compte. noyau. Le micro-noyau avait l'air génial sur le papier, mais s'est avéré être trop conçu et a simplement rendu tout plus lent.

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

Apple n'avait pas encore acquis NeXTSTEP, mais commençait également à considérer Mach comme un noyau potentiel pour ses futurs systèmes d'exploitation. Ils ont embauché l'Open Software Foundation pour porter Linux sur le noyau Mach, et cela a été fait depuis leurs bureaux de Grenoble, je crois que cela s'appelait "mklinux".

Quand Apple a acheté NeXT, ce qu'ils avaient entre les mains était une base Unix relativement ancienne, un Unix basé sur 4.2 ou 4.3 et à ce jour, même les logiciels libres ne fonctionnaient pas correctement 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 l'espace utilisateur, et il n'est pas surprenant que l'espace utilisateur MacOS ait été mis à niveau vers les dernières versions disponibles sur BSD.

En relation:Mac - Installation de Mac OS X Mountain lion Apple iD Error?

Apple a fait passer son Mach de 2,5 à 3,0 à un moment donné, mais a décidé de ne pas suivre l'approche du micro-noyau et a plutôt gardé tout en cours. Je n'ai jamais été en mesure de confirmer si Apple utilisait Lites, engageait le hacker scandinave ou s'il adoptait le 4.4 lite comme système d'exploitation. Je soupçonne qu'ils l'ont fait, mais j'étais déjà passé à Linux et j'avais arrêté de suivre le monde BSD/Mach.

Il y avait une rumeur à la fin des années 90 selon laquelle Avie chez Apple avait essayé d'embaucher Linus (qui était déjà célèbre à cette époque) pour travailler sur son bébé, mais Linus a choisi de continuer à travailler sur Linux.

Hormis l'histoire, cette page décrit le userland et le noyau Mach/Unix :

http://developer.apple.com/mac/library/documentation/Darwin/Conceptual/KernelProgramming/Architecture/Architecture.html#//apple_ref/doc/uid/TP30000905-CH1g-CACDAEDC

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


FreeBSD
  1. En quoi Ubuntu est-il différent de Debian ?

  2. Qu'est-ce qui est perdu+trouvé et d'où vient-il ?

  3. Pourquoi Ls -l affiche-t-il une taille différente de Ls -s ?

  4. Où Wine stocke-t-il les fichiers ?

  5. Où Linux stocke-t-il mon syslog ?

Mon histoire Linux :d'utilisateur Linux à contributeur

Mon histoire de transition de Mac à Linux

Pourquoi je suis passé de Mac à Linux

Zorin OS 12 Review :Apprenez de mon expérience

Migration d'Apache vers Nginx sur FreeBSD

Où Docker conserve-t-il les fichiers journaux ?