Historia MacOS jest nieco bardziej skomplikowana. Byłem bardzo zainteresowany tym pod koniec lat 90., ponieważ Mach był rozrzucony po całym świecie jako szybszy sposób budowania systemu uniksowego.
Pochodzenie jądra jest nieco bardziej skomplikowane.
Wszystko zaczyna się od bezpłatnej dystrybucji systemu operacyjnego przez AT&T na niektóre uniwersytety. Ten uniks został znacznie ulepszony w Berkeley i stał się podstawą dla odmian uniksowych BSD i wprowadził kilka nowych innowacji, takich jak „Fast File System” (UFS), wprowadził dowiązania symboliczne i API gniazd. AT&T poszło własną drogą i jednocześnie zbudowało System V.
W międzyczasie kontynuowano badania, a niektórzy przyjęli pracę BSD jako podstawę. W CMU jądro BSD posłużyło jako podstawa do prototypowania kilku nowych pomysłów: wątków, interfejsu API do sterowania systemem pamięci wirtualnej (poprzez wtykowe „pager” - mmapa na poziomie użytkownika), systemu zdalnego wywoływania procedur na poziomie jądra i większości co ważne, pomysł przeniesienia niektórych operacji na poziomie jądra do przestrzeni użytkownika. To stało się jądrem Macha.
Nie jestem w 100% pewien, czy mmap pochodzi od Macha, a później został przyjęty przez BSD, czy też Mach po prostu był pionierem pomysłu, a BSD dodała własną mmapę w oparciu o idee Macha.
Chociaż jądro Macha zostało opisane jako mikro-jądro, do wersji 2.5 był to tylko system, który zapewniał wątek, mmap, funkcje przekazywania wiadomości, ale pozostał jądrem monolitycznym, wszystkie usługi działały w trybie jądra.
W tym czasie Rick Rashid (obecnie w Microsoft) i Avie Tevanian (teraz w Apple) wpadli na nowatorski pomysł, który może przyspieszyć Uniksa. Pomysł polegał na wykorzystaniu wywołania systemowego mmap do przekazania danych do skopiowania z przestrzeni użytkownika na „serwery” implementujące system plików. Pomysł ten był w zasadzie odmianą próby uniknięcia kopiowania tych samych danych, ale został uznany za korzyść z mikro jąder, nawet jeśli ta funkcja mogłaby zostać odizolowana od mikro jądra.
Benchmark tego szybszego systemu uniksowego wspieranego przez VM jest tym, co skłoniło ludzi z NeXT i FSF do wybrania Macha jako podstawy dla swoich jąder.
NeXT współpracował z jądrem Mach 2.5 (opartym na BSD 4.2 lub 4.3), a GNU faktycznie nie zacząłby pracy przez lata. Właśnie tego używali systemy operacyjne NeXTSTEP.
W międzyczasie w CMU prace nad Machem były kontynuowane i ostatecznie zrealizowali wizję posiadania wielu serwerów działających na mikro jądrze z wersją 3.0. Nie wiem, czy ktokolwiek na wolności mógł uruchomić Mach 3.0, ponieważ wszystkie interesujące serwery na poziomie użytkownika korzystały z kodu AT&T, więc zostały uznane za obciążone, więc pozostał to produkt badawczy.
Mniej więcej w tym czasie zespół Jolitz wykonał port 4,3+ BSD do architektury 386 i opublikował swoje wysiłki związane z portowaniem na DrDobbs. 386BSD nie było aktywnie utrzymywane i pojawiła się grupa, aby utrzymywać i przesuwać 386BSD, zespół NetBSD. Walki wewnętrzne w grupie NetBSD spowodowały pierwszy podział i na tej podstawie powstał FreeBSD. NetBSD w tym czasie chciał skupić się na posiadaniu wieloplatformowego BSD, a FreeBSD chciał skupić się na uniksowym systemie, który świetnie sobie radził na platformach x86. Nieco później NetBSD rozpadł się ponownie z powodu innych sporów, co doprowadziło do powstania OpenBSD.
Rozwidlenie BSD 4.3 dla platform x86 poszło na rynek komercyjny z firmą BSDi i pracowali tam różni członkowie oryginalnego zespołu Berkeley i utrzymywali dobre relacje z zespołem BSD na Uniwersytecie.
AT&T nie był rozbawiony i rozpoczął proces AT&T przeciwko BSDi, który został później rozszerzony na pozew uniwersytecki. Sprawa dotyczyła BSDi korzystającego z zastrzeżonego kodu AT&T, który nie został przepisany przez Berkeley. To cofnęło BSD w porównaniu z nadchodzącym systemem operacyjnym Linux.
Chociaż sprawy nie wyglądały dobrze dla oskarżonych, w pewnym momencie ktoś zdał sobie sprawę, że SystemV wprowadził duże fragmenty kodu BSD na podstawie licencji BSD, a AT&T nie wywiązało się ze swoich obowiązków wynikających z licencji. Osiągnięto porozumienie, w którym AT&T nie będzie musiał wyciągać swojego produktu z rynku, a uniwersytet zgodził się wydrzeć każdy kod, który nadal mógłby być oparty na kodzie AT&T.
Następnie uniwersytet wydał dwie wersje BSD 4.4 obciążone i 4.4 lite. Wersja obciążona uruchamiałaby się i działała, ale zawierała kod AT&T. Wersja Lite nie zawierała kodu z AT&T, ale nie działała.
Różne wysiłki BSD ponownie wykonały pracę nad nową wersją 4.4 lite i miały system rozruchowy w ciągu kilku miesięcy.
Tymczasem mikro jądro Mach 3.0 pozostało niezbyt przydatne bez żadnego z serwerów użytkowników.
Student ze skandynawskiego uniwersytetu (myślę, że mogłem się mylić) był pierwszym, który stworzył pełny system Mach 3.0 z kompletnym systemem operacyjnym opartym na wersji 4.4 lite, wierzę, że to się nazywało „Lites”. System działał, ale był powolny.
W latach 1992-1996 i do tej pory BSD miało już wywołanie systemowe mmap (), a także większość innych systemów uniksowych. „Zaleta mikrądra”, której nie było, nigdy tak naprawdę nie przyniosła rezultatu. NeXT wciąż miał monolityczne jądro. FSF wciąż starał się zmusić Macha do zbudowania i nie chcąc dotykać kodu BSD ani brać udziału w żadnym wysiłku BSD typu open source, wciąż próbowali zarzucić słabo określoną wizję jądra i topili się w protokołach RPC dla swoich własnych jądro. Mikro-jądro wyglądało świetnie na papierze, ale okazało się, że jest przerobione i po prostu spowolniło wszystko.
W tym momencie odbyliśmy również debatę Linus vs Andy na temat mikro-jąder vs monolitycznych jąder, a świat zaczął zdawać sobie sprawę, że dodanie wszystkich tych dodatkowych cykli do mikro-jądra jest po prostu niemożliwe i wciąż wyprzedza dobrze zaprojektowane monolityczne jądro. .
Apple nie nabyło jeszcze NeXTSTEP, ale zaczęło też postrzegać Macha jako potencjalne jądro dla swoich przyszłych systemów operacyjnych. Wynajęli Open Software Foundation do przeniesienia Linuksa do jądra Macha, a zrobiono to z ich biur w Grenoble, myślę, że to się nazywało „mklinux”.
Kiedy Apple kupił NeXT, to, co mieli na rękach, było stosunkowo starym fundamentem Uniksa, Unixem opartym na 4.2 lub 4.3, a do tej pory nawet wolne oprogramowanie nie działało dobrze na tych systemach. Wynajęli Jordana Hubbarda od FreeBSD, aby ulepszyć swój uniksowy stos. Jego zespół był odpowiedzialny za aktualizację obszaru użytkownika i nic dziwnego, że obszar użytkownika MacOS został zaktualizowany do najnowszych wersji dostępnych na BSD.
Apple w pewnym momencie zmieniło Macha z 2.5 na 3.0, ale zdecydowało się nie stosować podejścia opartego na mikro-jądrze i zamiast tego utrzymało wszystko w toku. Nigdy nie byłem w stanie potwierdzić, czy Apple użył Lites, zatrudnił skandynawskiego hakera, czy też przyjęli 4.4 lite jako swój system operacyjny. Podejrzewam, że tak, ale już przeszedłem na Linuksa i przestałem śledzić świat BSD / Mach.
Pod koniec lat 90. pojawiła się plotka, że Avie w Apple próbował zatrudnić Linusa (który był już sławny w tym momencie) do pracy nad swoim dzieckiem, ale Linus postanowił kontynuować pracę nad Linuksem.
Poza historią ta strona opisuje obszar użytkownika i jądro Mach / Unix:
http://developer.apple.com/mac/library/documentation/Darwin/Conceptual/KernelProgramming/Architecture/Architecture.html#//apple_ref/doc/uid/TP30000905-CH1g-CACDAEDC
Znalazłem tę grafikę historii OSX: