GNU/Linux >> Znalost Linux >  >> FreeBSD

Freebsd – Odkud pochází Mac Os X?

Při diskuzi s majiteli Maců jsem dostal několik verzí, odkud Mac OS X pochází. Je známo, že má nějaký kořen v BSD, ale jak moc a kde?

Někteří říkají, že Mac OS X má jádro FreeBSD se všemi výše uvedenými nástroji, které z něj činí OS specifický pro Mac. (Nemluvím zde o uživatelských aplikacích, pouze o všech init , ls , cd , a další. binutils? )

Jiní říkají, že Mac OS X je Darwinovo jádro, to je čistý Mac, a že nástroje OS pocházejí z BSD.

Kde je pravda?

Přijatá odpověď:

Historie MacOS je trochu spletitější. Velmi mě to zajímalo na konci 90. let, protože Mach byl po celém světě nabízen jako rychlejší způsob budování unixového systému.

Původ jádra je trochu složitější.

Vše začíná tím, že AT&T distribuuje svůj operační systém některým univerzitám zdarma. Tento Unix byl v Berkeley značně vylepšen a stal se základem pro BSD varianty Unixu a začlenil několik nových inovací, jako je „Fast File System“ (UFS), představil symbolické odkazy a rozhraní API pro zásuvky. AT&T šli svou vlastní cestou a zároveň postavili System V.

Mezitím výzkum pokračoval a někteří lidé přijali práci od BSD jako základ. Na CMU bylo jádro BSD použito jako základ pro prototypování několika nových nápadů:vlákna, API pro ovládání systému virtuální paměti (prostřednictvím zásuvných „pagerů“ – uživatelská úroveň mmap), systém vzdáleného volání procedur na úrovni jádra a většina důležitá je myšlenka přesunu některých operací na úrovni jádra do uživatelského prostoru. Tím se stalo jádro Mach.

Nejsem si 100% jistý, zda mmap pochází od Macha a později byla přijata BSD, nebo zda Mach pouze propagoval myšlenku a BSD přidalo svou vlastní mmapu založenou na myšlenkách Macha.

Ačkoli bylo jádro Mach popisováno jako mikrojádro, až do verze 2.5 to byl pouze systém, který poskytoval funkce vláken, mmap, předávání zpráv, ale zůstal monolitickým jádrem, všechny služby běžely v režimu jádra.

V té době Rick Rashid (nyní v Microsoftu) a Avie Tevanian (nyní v Apple) přišli s novým nápadem, který by mohl urychlit Unix. Cílem bylo použít systémové volání mmap k předání dat, která mají být zkopírována z uživatelského prostoru, na „servery“ implementující systém souborů. Tato myšlenka byla v podstatě variací snahy vyhnout se vytváření kopií stejných dat, ale byla navržena jako výhoda mikrojader, i když by tato funkce mohla být izolována z mikrojádra.

Benchmarky tohoto rychlejšího unixového systému podporovaného VM jsou to, co lidi v NeXT a FSF přimělo vybrat si Mach jako základ pro svá jádra.

NeXT šel s jádrem Mach 2.5 (které bylo založeno buď na BSD 4.2 nebo 4.3) a GNU ve skutečnosti nezačalo pracovat roky. To je to, co používaly operační systémy NeXTSTEP.

Mezitím na CMU pokračovala práce na Machovi a konečně si uvědomili vizi mít více serverů běžících na mikrojádru s verzí 3.0. Nejsem si vědom, že by někdo ve volné přírodě byl schopen spustit Mach 3.0, protože všechny zajímavé servery na uživatelské úrovni používaly kód AT&T, takže byly považovány za zatížené, takže to zůstalo pouze výzkumným produktem.

Zhruba v této době provedl tým Jolitz port 4.3+ BSD na architekturu 386 a zveřejnil své snahy o portování na DrDobbs. 386BSD nebyl aktivně udržován a vznikla skupina, která má udržovat a posouvat 386BSD vpřed, tým NetBSD. Vnitřní boje v rámci skupiny NetBSD způsobily první rozdělení az toho vzniklo FreeBSD. NetBSD se v té době chtělo zaměřit na multiplatformní BSD a FreeBSD se chtělo zaměřit na Unix, který si vedl skvěle na platformách x86. O něco později se NetBSD znovu rozdělilo kvůli některým dalším sporům, což vedlo k vytvoření OpenBSD.

Související:Mac – Je možné použít Apple Time Capsule jen jako síťový záložní disk a ne jako router?

Fork BSD 4.3 pro platformy x86 byl uveden na trh se společností s názvem BSDi a různí členové původního týmu z Berkeley tam pracovali a udržovali dobré vztahy s týmem BSD na univerzitě.

AT&T to nepobavilo a zahájilo soudní spor AT&T vs BSDi, který byl později rozšířen tak, aby žaloval také univerzitu. Žaloba se týkala BSDi pomocí proprietárního kódu od AT&T, který nebyl přepsán Berkeley. Toto zpomalilo BSD ve srovnání s přicházejícím operačním systémem Linux.

Ačkoli to pro obžalované nevypadalo dobře, v určitém okamžiku si někdo uvědomil, že SystemV začlenil velké kusy kódu BSD pod licenci BSD a AT&T nesplnilo své závazky v licenci. Bylo dosaženo urovnání, ve kterém by AT&T nemuselo stahovat svůj produkt z trhu, a univerzita souhlasila s vytržením jakéhokoli kódu, který by stále mohl být založen na kódu AT&T.

Univerzita poté vydala dvě verze BSD 4.4 zatížené a 4.4 lite. Zatížená verze by se spustila a spustila, ale obsahovala kód AT&T. Lite verze neobsahovala žádný kód od AT&T, ale nefungovala.

Různé snahy o BSD znovu odvedly svou práci nad novým vydáním 4.4 lite a během několika měsíců měly zaváděcí systém.

Mezitím mikro jádro Mach 3.0 zůstalo nepříliš užitečné bez jakéhokoli uživatelského serveru.

Student ze skandinávské univerzity (věřím, že se to možná mýlím) byl první, kdo vytvořil úplný systém Mach 3.0 s kompletním OS založeným na verzi 4.4 lite, domnívám se, že se tomu říkalo „Lites“. Systém fungoval, ale byl pomalý.

Během let 1992-1996 a nyní již BSD mělo systémové volání mmap() stejně jako většina ostatních unixových systémů. „Výhoda mikrojádra“, která tam nebyla, se ve skutečnosti nikdy nenaplnila. NeXT měl stále monolitické jádro. FSF se stále pokoušelo přimět Macha, aby sestavil, a protože se nechtěli dotknout kódu BSD nebo přispívat k jakémukoli úsilí o BSD s otevřeným zdrojovým kódem, pokračovali v nabíjení podle špatně specifikované vize jádra a utápěli se v protokolech RPC pro své vlastní jádro. Mikro jádro vypadalo na papíře skvěle, ale ukázalo se, že je překonstruované a všechno jen zpomalilo.

V tomto bodě jsme také vedli debatu Linus vs Andy o mikrojádrech vs monolitická jádra a svět si začal uvědomovat, že je prostě nemožné přidat všechny ty cykly navíc do mikrojádra a přesto předběhnout dobře navržené monolitické jádro. .

Apple ještě nezískal NeXTSTEP, ale také začínal hledat Mach jako potenciální jádro pro jejich budoucí operační systémy. Najali Open Software Foundation, aby portovala Linux na jádro Mach, a to bylo provedeno mimo jejich kanceláře v Grenoblu, myslím, že se tomu říkalo „mklinux“.

Když Apple koupil NeXT, měli na svých rukou relativně starou Unixovou základnu, Unix založený na 4.2 nebo 4.3, a tou dobou na těchto systémech neběžel ani svobodný software. Najali Jordana Hubbarda z FreeBSD, aby upgradoval jejich unixový stack. Jeho tým byl odpovědný za upgrade uživatelské země a není překvapením, že uživatelská oblast MacOS byla upgradována na nejnovější verze dostupné na BSD.

Související:Mac – Instalace Mac OS X Mountain lion Apple iD Error?

Apple v určitém okamžiku přešel svůj Mach z 2,5 na 3,0, ale rozhodl se nepoužít přístup s mikrojádry a místo toho nechal vše v procesu. Nikdy jsem nebyl schopen potvrdit, zda Apple používal Lites, najal skandinávského hackera nebo zda přijal 4.4 lite jako svůj OS. Mám podezření, že ano, ale už jsem přešel na Linux a přestal jsem sledovat svět BSD/Mach.

Koncem 90. let se proslýchalo, že se Avie v Apple pokusila najmout Linuse (který byl v té době již slavný), aby pracoval na jeho dítěti, ale Linus se rozhodl pokračovat v práci na Linuxu.

Pomineme-li historii, tato stránka popisuje uživatelskou zemi a jádro Mach/Unix:

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

Našel jsem tuto grafiku historie OSX:


FreeBSD
  1. Co je ztraceno+nalezeno a odkud to přišlo?

  2. Proč má Ls -l na výstupu jinou velikost než Ls -s?

  3. Kde sýr ukládá své obrázky?

  1. Odkud Unity/unity-greeter načítá X konfiguraci?

  2. Dodává se cPanel s WHM?

  3. Kde Docker uchovává soubory protokolu?

  1. Kde linux ukládá můj syslog?

  2. sshfs montáž linuxového adresáře z mac přestala fungovat

  3. Kam mám nainstalovat aplikaci v systému Linux?