Откуда Mac OS X?


43

Обсуждая с владельцами Mac, я получил несколько версий того, откуда Mac OS X. Известно, что в BSD есть какой-то корень, но сколько и где?

Некоторые говорят, что Mac OS X имеет ядро ​​FreeBSD, со всеми вышеперечисленными утилитами, что делает его специфичной для Mac. (Не говоря уже о пользовательских приложениях здесь, только все init, ls, cdи др. Binutils? )

Другие говорят, что Mac OS X - это ядро ​​Дарвина, то есть чистый Mac, и что утилиты ОС исходят из BSD.

Где правда?


11
На самом деле этот вопрос должен звучать так: «Откуда берется Mac OS X», поскольку все версии Mac OS до X - это совершенно разные операционные системы, не основанные на Unix.
Сэнди

1
@Sandy: исправил Xes
Уоррен Янг

Я собирался предложить «ад», но потом у меня были неприятные воспоминания о Microsoft и их ужасных «Windows» ... Кроме этого? NeXTSTEP и BSD, если память мне не изменяет, и я уверен, что ответы на это заметят.
Прифтан

Ответы:


67

История MacOS немного более запутанная. Я был очень заинтересован в этом в конце 90-х годов, когда Мах был представлен по всему миру как более быстрый способ построения системы Unix.

Происхождение ядра немного сложнее.

Все начинается с бесплатного распространения AT & T в некоторых университетах. Этот Unix был значительно улучшен в Беркли и стал основой для BSD-вариаций Unix и включил в себя несколько новых инноваций, таких как «Быстрая файловая система» (UFS), представил символические ссылки и API сокетов. AT & T пошла своим путем и в то же время создала System V.

Тем временем исследования продолжались, и некоторые люди приняли работу BSD в качестве основы. В CMU ядро ​​BSD использовалось в качестве основы для прототипирования нескольких новых идей: потоков, API-интерфейса для управления системой виртуальной памяти (через подключаемые «пейджеры» - пользовательский уровень mmap), системы удаленного вызова процедур на уровне ядра и большинства важна идея перемещения некоторых операций уровня ядра в пространство пользователя. Это стало ядром Маха.

Я не уверен на 100%, если mmap пришел от Mach, а позже был принят BSD, или Mach просто предложил идею, а BSD добавил свой собственный mmap, основанный на идеях Mach.

Хотя ядро ​​Mach было описано как микроядро, до версии 2.5 это была просто система, которая обеспечивала функции потока, mmap, передачи сообщений, но оставалась монолитным ядром, все службы работали в режиме ядра.

В это время Рик Рашид (сейчас в Microsoft) и Ави Теванян (сейчас в Apple) выдвинули новую идею, которая может ускорить Unix. Идея состояла в том, чтобы использовать системный вызов mmap для передачи данных, которые будут скопированы из пространства пользователя, на «серверы», реализующие файловую систему. Эта идея, по сути, была вариацией попытки избежать копирования одних и тех же данных, но она была представлена ​​как преимущество микроядер, даже если эту функцию можно было изолировать от микроядра.

Тесты этой более быстрой Unix-системы, поддерживаемой виртуальными машинами, заставили людей в NeXT и FSF выбрать Mach в качестве основы для своих ядер.

NeXT шел с ядром Mach 2.5 (который был основан на BSD 4.2 или 4.3), и GNU фактически не начинал работу годами. Это то, что использовали операционные системы NeXTSTEP.

Тем временем в CMU работа над Mach продолжилась, и они наконец-то осознали, что несколько серверов работают поверх микроядра с версией 3.0. Я не знаю никого в дикой природе, способного запустить Mach 3.0, поскольку все интересные серверы пользовательского уровня использовали код AT & T, поэтому их считали обремененными, поэтому он оставался продуктом исследований.

Примерно в это же время команда Jolitz сделала порт 4.3+ BSD для архитектуры 386 и опубликовала свои усилия по портированию на DrDobbs. 386BSD активно не поддерживалась, и появилась группа, которая поддерживает и продвигает 386BSD, команду NetBSD. Внутренние столкновения в группе NetBSD привели к первому расколу, и из этого был сформирован FreeBSD. В то время NetBSD хотела сосредоточиться на создании кроссплатформенной BSD, а FreeBSD хотела сосредоточиться на том, чтобы Unix отлично работал на платформах x86. Чуть позже NetBSD снова раскололась из-за некоторых других споров, что привело к созданию OpenBSD.

Разветвление BSD 4.3 для платформ x86 стало коммерческим с компанией BSDi, и различные члены первоначальной команды из Беркли работали там и поддерживали хорошие отношения с командой BSD в университете.

AT & T не был удивлен и начал иск AT & T против BSDi, который позже был расширен, чтобы подать в суд на Университет. Иск касался BSDi, использующего собственный код от AT & T, который не был переписан Беркли. Это отодвинуло BSD по сравнению с новой операционной системой Linux.

Хотя для ответчиков дела шли не очень хорошо, в какой-то момент кто-то понял, что SystemV включила большие куски кода BSD под лицензией BSD, а AT & T не выполнила свои обязательства в лицензии. Было достигнуто соглашение, в соответствии с которым AT & T не пришлось бы вытаскивать свой продукт с рынка, и Университет согласился изъять любой код, который все еще мог бы основываться на коде AT & T.

Затем университет выпустил две версии BSD 4.4 обремененных и 4.4 lite. Обремененная версия загружалась и работала, но содержала код AT & T. Облегченная версия не содержала никакого кода от AT & T, но не работала.

Различные усилия BSD сделали свою работу поверх новой версии 4.4 lite и имели систему загрузки в течение нескольких месяцев.

Между тем, микроядро Mach 3.0 оставалось не очень полезным без каких-либо пользовательских серверов.

Студент из скандинавского университета (я полагаю, я мог бы ошибаться) был первым, кто создал полную систему Mach 3.0 с полной ОС, основанной на облегченном выпуске 4.4, я думаю, это называлось «Lites». Система работала, но была медленной.

В течение 1992-1996 и до настоящего времени BSD уже имел системный вызов mmap (), как и большинство других систем Unix. «Преимущества микроядра», которого не было, никогда не было реализовано. У NeXT все еще было монолитное ядро. FSF все еще пытался заставить Маха строить и не желал трогать код BSD или вносить вклад в какие-либо усилия BSD с открытым исходным кодом, они продолжали уклоняться от плохо определенного видения ядра и тонули в протоколах RPC для своих собственных ядро. Микроядро выглядело великолепно на бумаге, но оказалось слишком спроектированным и просто сделало все медленнее.

В этот момент у нас также состоялись дебаты между Линусом и Энди о микроядрах и монолитных ядрах, и мир начал понимать, что просто невозможно добавить все эти дополнительные циклы к микроядру и все же опередить хорошо спроектированное монолитное ядро. ,

Apple еще не приобрела NeXTSTEP, но также начала рассматривать Mach как потенциальное ядро ​​для своих будущих операционных систем. Они наняли Open Software Foundation для переноса Linux на ядро ​​Mach, и это было сделано из их офисов в Гренобле, я думаю, это называлось «mklinux».

Когда Apple приобрела NeXT, у них было относительно старое Unix-основание, Unix на базе 4.2 или 4.3, и к настоящему моменту даже бесплатное программное обеспечение не работало в таких системах. Они наняли Джордана Хаббарда из FreeBSD, чтобы обновить свой стек Unix. Его команда отвечала за обновление пользовательского пространства, и неудивительно, что пользовательское пространство MacOS было обновлено до последних версий, доступных на BSD.

Apple в какой-то момент переключила свой Mach с 2,5 на 3,0, но решила не использовать микроядерный подход и вместо этого оставила все в процессе. Я так и не смог подтвердить, использовал ли Apple Lites, нанял скандинавского хакера, или они приняли 4.4 lite в качестве своей ОС. Я подозреваю, что они сделали, но я уже перешел на Linux и прекратил отслеживать мир BSD / Mach.

В конце 90-х ходил слух, что Ави в Apple пытался нанять Линуса (который был уже знаменит) для работы над своим ребенком, но Линус решил продолжить работу над Linux.

Помимо истории, эта страница описывает пользовательский мир и ядро ​​Mach / Unix:

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

Я нашел этот график истории OSX: альтернативный текст


Насколько я понимаю, главная причина, по которой Столлман в FSF преследовал Маха, заключалась не в производительности, а в простоте использования отладчика: он мог использовать отладчик для отладки серверов Маха гораздо проще, чем для отладки кода, работающего в пространстве ядра. Хотя, возможно, именно производительность убедила его, что это жизнеспособный способ реализовать.
skiphoppy

4
Если вы действительно хотите увидеть настоящее микроядро в действии, попробуйте QNX. В QNX4 ядро ​​занимало всего 32 килобайта и обрабатывало только передачу сообщений, планирование ЦП и прерывания. Все остальные части ОС QNX можно было заменить без выключения или перезагрузки системы, и это было чрезвычайно надежно. Когда-то существовал эмулятор окон для QNX под названием Willows, который запускал приложения Windows быстрее, чем собственные окна. Хотя это само по себе не имеет ничего общего с OS-X, QNX доказал, что микроядро действительно жизнеспособно, если все сделано правильно.

20
изображение больше не доступно.
Герман Ингальдссон

7
Изображение еще не доступно
Sildoreth

Стив Джобс предложил Линусу работу в 2000 году. Линус говорит об этом здесь. wired.com/2012/03/mr-linux/all/1
Алистер Макмиллан

24

Со стороны Unix OS X является потомком NeXTSTEP , который был заимствован из 4.3BSD с заменой основных частей ядра на Mach .

API программирования NeXT, который в конечном итоге стал называться OpenStep , является основой современного API-интерфейса Cocoa для OS X. Два API значительно разошлись с тех пор, как Apple приобрела NeXT в 1997 году, хотя предпринимаются постоянные усилия по созданию API-совместимых клонов какао с открытым исходным кодом. ,

Добавьте к этому API совместимости с классической MacOS, называемый Carbon, и вы получите интерфейс программирования OS X.

(Существует много других возможностей для OS X, но помимо всего этого они являются приложениями: Finder, пользовательскими инструментами BSD и GNU и т. Д.)

Что касается идеи ядра FreeBSD, она, конечно, верна, но это простой способ взглянуть на нее. Как я уже сказал, исходное ядро ​​пришло от NeXT, который собрал свое первое ядро ​​из 4.3BSD и Mach. Это означает, что и FreeBSD, и NeXTSTEP совместно использовали некоторый код через 4.3BSD.

У мема о том, что OS X основана на FreeBSD, есть два более свежих источника. Во-первых, Apple продолжала заимствовать инновации из мира BSD, обычно у FreeBSD. Во-вторых, Apple наняла соучредителя проекта FreeBSD Джордана Хаббарда вскоре после того, как сделала первый публичный релиз OS X. Он работал в Apple до июня 2013 года.


0

Когда вам сказали, что OSX имеет свой собственный вкус Unix, они технически верны.

BSD + Элементы от NeXTSTEP + Apple Tweaks = DARWIN

Другими словами. Заказывая только горячую помадку / мороженое (BSD), добавьте орехи (NeXTStep), а также взбитые сливки и вишню (яблочный надстройка и твики) = горячее мороженое с фруктами (Дарвин)

Но BSD - это база, к которой были добавлены другие, поэтому большая часть BSD будет работать в Дарвине (с настройкой тут и там)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.