Історія MacOS дещо складніша. Мене це дуже зацікавило наприкінці 90-х, оскільки Мах розбився по всьому світу як більш швидкий спосіб побудови системи Unix.
Походження ядра трохи складніше.
Все починається з того, щоб AT&T безкоштовно розповсюджував свою операційну систему в деяких університетах. Цей Unix значно покращився в Берклі та став основою для BSD-варіацій Unix та включив декілька нових інновацій, таких як "Швидка файлова система" (UFS), запровадив символьні посилання та API сокетів. Компанія AT&T пішла самостійно і одночасно побудувала System V.
Тим часом дослідження тривали, і деякі люди прийняли роботу BSD як основу. У CMU ядро BSD було використано як основа для прототипування декількох нових ідей: потоків, API для управління системою віртуальної пам'яті (через підключаються "пейджери" - mmap рівня користувача), система віддаленого виклику на рівні ядра і більшість важливо ідея переміщення деяких операцій на рівні ядра в користувальницький простір. Це стало ядром Маха.
Я не на 100% впевнений, що mmap прийшов від Mach, а пізніше був прийнятий BSD, або якщо Мах просто запровадив ідею, і BSD додав власну mmap на основі ідей Маха.
Хоча ядро Mach описувалося як мікроядро, до версії 2.5 це була лише система, яка надала функції потоку, mmap, передачі повідомлень, але залишалася монолітним ядром, усі служби працювали в режимі ядра.
У цей час Рік Рашид (зараз у Microsoft) та Аві Теваніан (зараз у Apple) придумали нову ідею, яка може прискорити Unix. Ідея полягала в тому, щоб використовувати виклик mmap для передачі даних, скопійованих з простору користувача, на "сервери", що реалізують файлову систему. Ця ідея була по суті варіацією спроб уникнути копіювання одних і тих же даних, але вона була вигідною як користь мікроядер, навіть якщо функцію можна було виділити з мікроядра.
Орієнтири цієї швидшої Unix-системи, підтримуваної VM - це те, що спонукало людей у NeXT та FSF до вибору Mach для основи своїх ядер.
NeXT працював з ядром Mach 2.5 (який базувався на BSD 4.2 або 4.3), і GNU фактично не починав роботу протягом багатьох років. Це те, що використовували операційні системи NeXTSTEP.
Тим часом у CMU робота над Mach продовжилася, і вони, нарешті, реалізували бачення створення декількох серверів над мікроядром з версією 3.0. Мені невідомо, що хтось у дикій природі може запустити Mach 3.0, оскільки всі цікаві сервери рівня користувача використовували код AT&T, щоб вони вважалися обтяженими, тому він залишався продуктом дослідження.
Приблизно в цей час команда Джоліц зробила порт з 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. Версія Lite не містила жодного коду від AT&T, але не працювала.
Різні зусилля BSD знову зробили свою роботу над новою версією 4.4 Lite та мали систему завантаження протягом місяців.
Між тим, мікроядро Mach 3.0 залишалося не дуже корисним без жодного з серверів user-land.
Студент скандинавського університету (я вважаю, що я можу помилитися з цим) був першим, хто створив повну систему Mach 3.0 з повною ОС на основі версії 4.4 Lite, я вважаю, що це називалося "Lites". Система працювала, але повільно.
Протягом 1992-1996 рр. І до цього часу BSD вже мав системний виклик mmap (), як і більшість інших систем Unix. «Перевага мікроядра», якої там не було, ніколи насправді не збулося. У NeXT все ще було монолітне ядро. FSF все ще намагався змусити Маха побудувати, і не бажаючи торкатися коду BSD або сприяти будь-якому із зусиль BSD з відкритим кодом, вони продовжували заряджатись при погано визначеному баченні ядра, і вони потопали в протоколах RPC для своїх власних ядро. Мікроядро виглядало чудово на папері, але виявилося, що воно сконструйоване і просто зробило все повільніше.
У цей момент у нас також відбулася дискусія Лінуса проти Енді щодо мікроядер проти монолітних ядер, і світ почав розуміти, що додавати всі ці додаткові цикли до мікроядра просто неможливо, і все-таки випереджати добре розроблене монолітне ядро .
Apple ще не придбала NeXTSTEP, але також почала розглядати Mach, як потенційне ядро для своїх майбутніх операційних систем. Вони найняли Фонд відкритого програмного забезпечення для порту 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: