Звідки береться 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
Warren Young

Я збирався запропонувати "пекло", але тоді у мене була неприємна пам'ять про 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, або якщо Мах просто запровадив ідею, і 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: alt текст


Я розумів, що основною причиною того, що Сталлман у FSF переслідував Маха, була не ефективність, а простота використання налагоджувача: він міг використовувати налагоджувач для налагодження серверів Mach набагато легше, ніж налагодження коду, що працює в просторі ядра. Хоча, можливо, саме ця вистава переконала його, що це був життєздатний спосіб втілити в життя.
skiphoppy

4
Якщо ви дійсно хочете побачити справжній мікроядер у дії, спробуйте QNX. У QNX4 ядро ​​було всього 32 К-байтом, і оброблялося лише передача повідомлень, планування процесора та переривання. Усі інші частини ОС QNX можна було замінити, не вимикаючи або перезавантажуючи систему, і це було надзвичайно надійно. Свого часу існував віконний емулятор для QNX під назвою Willows, який запускав програми Windows швидше, ніж рідні 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 для какао для 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

По-іншому. Замовляючи лише гарячий Fudge / морозиво (BSD), додайте горіхи (NeXTStep) плюс збиті вершки та вишню (Apple Add-in and tweaks) = Гарячі капелюшки (Darwin)

Але BSD - це база, до якої додалися інші, і тому значна частина BSD буде працювати в Дарвіні (з налаштуванням тут і там)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.