Est-ce que macOS est essentiellement construit sur le dessus de Linux ?


Au début, AT&T a créé Unix. Cependant, en raison des lois sur le monopole, ils n'étaient pas autorisés à le vendre. De nombreuses organisations ont acquis une licence pour Unix et ont créé leurs propres variantes ; la plupart étaient des entreprises commerciales, mais l'Université de Californie à Berkeley a créé une version non commerciale, appelée BSD.

Pendant ce temps, Richard Stallman, au MIT, est arrivé avec une idéologie du " logiciel libre " - plus communément appelé " open source " aujourd'hui - et a lancé un projet pour créer un système d'exploitation " libre " compatible avec Unix, appelé GNU. La majeure partie du projet GNU s'est très bien déroulée, mais GNU Hurd, le composant central du noyau, a été retardé à plusieurs reprises.*


Un jeune programmeur du nom de Linus Torvalds est intervenu, lançant son propre projet couronné de succès pour créer un noyau appelé Linux. Combiné aux outils de GNU's, Linux fournissait un système d'exploitation complet qui fonctionnait exactement comme Unix, mais qui avait été écrit à partir de zéro et dont la licence était telle qu'il resterait ouvert pour toujours.

Essentiellement, GNU et Linux sont des "knockoffs" d'Unix comme BSD - des knockoffs de très haute qualité, certes, mais des knockoffs quand même. Toutes les variantes d'Unix - qu'elles'soient des modifications comme BSD ou des clones comme Linux** - présentent de petites différences les unes par rapport aux autres ; en pratique, Linux n'est pas plus différent que n'importe quelle autre variante d'Unix.

Ce n'est'pas tout à fait la fin de l'histoire pour OS X, cependant. Tout comme Linux a adopté les outils GNU's mais a jeté son noyau, Darwin (la partie Unix d'OS X) a adopté les outils BSD's mais a jeté son noyau.

So, to review:

  1. Unix/Linux Family Tree 
  2.  
  3. +----------- Unix - - - - - -+ 
  4. | (modify) (clone) |  
  5. BSD GNU 
  6. | (replace kernel) | 
  7. Darwin/OS X Linux 

If operating systems were families, OS X and Linux would not be the same person. Ils ne seraient'même pas des frères et sœurs. Ils'seraient des cousins par adoption.

-

* Pourquoi ? La façon théoriquement "correcte" de concevoir un noyau est appelée un "micro-noyau". Dans un micro-noyau, chaque composant du noyau est un programme distinct, tous communiquant entre eux. Si vous voulez accéder à un fichier, vous envoyez des messages au composant système de fichiers ; si vous voulez de la mémoire, vous envoyez des messages au composant gestion de la mémoire ; si vous voulez établir une connexion Internet, vous envoyez des messages au composant réseau. Le problème est que cela est beaucoup plus difficile à concevoir et à réaliser que l'approche "monolithique", où vous construisez l'ensemble du noyau en un seul gros composant et autorisez les programmes à y faire appel.

Hurd a été conçu comme un micro-noyau pur, basé sur un projet de recherche de la CMU appelé Mach. Il s'est avéré très difficile à mettre en œuvre, cependant - après 24 ans de développement, ils'en sont actuellement à la version 0.5, qui fonctionne mais pas très bien. Linux, d'autre part, est un noyau monolithique plus simple et plus laid qui a plutôt bien fonctionné dès le début ; la plupart des travaux depuis ont consisté à étendre son support matériel, à améliorer ses performances et à ajouter de nouvelles fonctionnalités.

Incidentellement, BSD est aussi un noyau monolithique. Le noyau de Darwin's est en fait un hybride bizarre-il utilise la même messagerie Mach que Hurd, mais tous les composants du noyau sont dans un processus monolithique. Mach est simplement la façon dont les programmes communiquent avec le noyau et entre eux.

** Si vous voulez être politiquement correct sans raison particulièrement bonne, prétendez que j'ai écrit GNU/Linux ici et ailleurs.