История 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: