Hlavní navigace

MAC OS X je taky unix (2): Přehled

Adam Šindelář

Vítejte u druhého dílu našeho seriálu o Mac OS X. Minule jsme si pověděli něco o historii tohoto systému, jeho kořenech a zdrojích, ze kterých jeho autoři čerpali. Dnes si ukážeme, jak se programátorům Applu podařilo celý systém sestavit dohromady a co vlastně obsahuje.

Co se tedy nachází pod kapotou? Především tu máme mikrojádro Mach 4.0, které se stará o základní komunikaci s Open Firmware nebo BIOS (podle platformy), správu paměti, vláken a procesů a podobně. To je dále obaleno klasickým BSD kernelem; Apple použil FreeBSD jako referenci a snaží se o kompatibilitu. Tyto dvě komponenty z více-méně praktických důvodů sdílejí stejný prostor v paměti a nejedná se tak o skutečný mikro kernel v tradičním smyslu. Mach a BSD dohromady tvoří unixové jádro systému zvané XNU (XNU's Not Unix). Kompletní systém obsahující více než 250 částí se jmenuje Darwin a je dodáván včetně poměrně bohatého výběru BSD a GNU nástrojů, Apache, PHP a kompilátoru gcc. Prakticky všechny součásti této úrovně systému jsou Open Source. Nejčastější použitá licence je APL (Apple Public Licence), ale některé soubory jsou kryty GPL nebo úplně jinou licencí.

Ostřílenému uživateli GNU/Linuxu by se mohl Darwin na první pohled zdát prakticky stejný jako jeho oblíbená distribuce Linuxu, ale hlubší pohled odhalí některé poměrně zásadní rozdíly. Linux totiž vychází z větvě Unixu zvané System V, zatímco Darwin je, technicky vzato, BSD systém. Marně byste hledali například /proc nebo linuxové run levely, a když se ukáže, že chybí i adresář boot a místo něj je v kořenovém adresáři jakýsi záhadný mach_kernel, pochopí i absolutní neznalec, že něco je jinak. Apple se ale rozhodl nejít cestou pravověrného BSD, takže oproti svému FreeBSD bratranci má Darwin navíc například GNU Bash nebo Vim (BSD systémy tradičně používají C Shell a Vi). Zkrátka Mac OS X je hybrid – jakýsi kříženec mezi systémy BSD a GNU s trochou vlastních technologií.

Pro usnadnění orientace v systému jsem pro vás připravil stručné srovnání konvencí a utilit v Linuxu, Darwinu a FreeBSD, kterému se Mac OS X nejvíce podobá.

Informace o systému
Linux: /proc
FreeBSD: utilita sysctl
Darwin: utilita sysctl
Výchozí shell
Linux: většinou Bash
FreeBSD: C Shell
Darwin: Bash
Řízení služeb
Linux: run levely & /etc/init.d
FreeBSD: příkaz shutdown & /etc/rc.d
Darwin: příkaz shutdown, /etc/rc.d & BootX
Výchozí firewall
Linux: iptables
FreeBSD: ipfw
Darwin: ipfw
Disková terminologie
Linux: hd [písmeno disku] [číslo partition]
FreeBSD: [rozhranní] d [číslo disku] s [číslo slice] [písmeno partition]
Darwin: disk [číslo disku] s [číslo slice]

V této úrovni systému se dále nachází také I/O Kit, jakýsi framework pro jaderné ovladače. Na rozdíl od svých kolegů v jiných systémech je I/O Kit v XNU založen na knihovně libkern a jazyku Embedded C+ +. Tato podmnožina klasického C+ + sice umožňuje dosáhnout vysoké přenositelnosti kódu a virtualizace hardware, ale neobsahuje některé výhody C++, jako například výjimky, vícenásobné dědění nebo objektové šablony. API tohoto systému umí pracovat s vlákny, má obvykle velmi krátkou odezvu a je schopen se vypořádat se špatnými ovladači. V systému dostupné třídy pro jednotlivá zařízení jsou uloženy v I/O Catalogu a řazeny podle typu. Jakmile dojde k připojení nového zařízení, systém automaticky vybere příslušnou třídu, vytvoří její instanci (ovladač) a uloží ji v I/O Registru, odkud může komunikovat se zbytkem systému. Po odpojení zařízení se spustí destruktor a ovladač je vymazán z paměti. Tento framework umožňuje jednoduše a intuitivně pracovat s mnoha různými zařízeními pomocí jednotného rozhranní a značně zjednodušuje implementaci nových ovladačů. Systém také umožňuje v kterýkoliv moment sledovat počet instancí kterékoliv třídy, řeší problémy s odlišnou implementací mateřské a dceřiné třídy (více o tomto problému si můžete přečíst například na http://www.cas­.mcmaster.ca/~e­mil/publicati­ons/fragile/) a nabízí přístup k mnoha vysokoúrovňovým funkcím.

Darwin není omezen na PowerPC architekturu, existuje i verze pro i386 udržovaná samotným Applem. Zajímavá je také možnost zkompilovat XNU v tzv. fat módu, tedy do binárky spustitelné na obou cílových platformách bez rozdílu. Open Source licence Darwinu využívají dva projekty: Open Darwin, sponzorovaný samotným Applem, se snaží vytvořit plnohodnotný unixový systém nejen pro PowerPC. Druhý projekt, GNU Darwin, jde cestou linuxových distribucí, jen zvolil jiný kernel. Najdete v něm kompletní grafické prostředí včetně OpenOffice.org a podobných programů.

Až do této úrovně je Mac OS X běžný Unix, dál se však už liší. Nad Darwinem/XNU stojí set služeb a knihoven přejatých většinou z NextStepu, které se starají o grafické rozhraní a uživatelské aplikace. V příštím dílu našeho seriálu se podíváme na služby typické pro Mac OS X, framework Cocoa a Applovskou implementaci Javy a OpenGL. V dalších dílech přijdou na řadu postupně zbylé části Mac OS X a NeXT Stepu a technologie přejaté z Mac OS 9 včetně prostředí Classic.

Našli jste v článku chybu?

2. 1. 2006 1:44

running (neregistrovaný)
...jak nevyzpytatelné jsou cesty osudu :))

29. 8. 2005 22:45

xxxvsxxx (neregistrovaný)
Mac OS X bude na x86
Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Podnikatel.cz: V restauraci bez cigaret? Sněmovna kývla

V restauraci bez cigaret? Sněmovna kývla

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Podnikatel.cz: Snížení DPH na 15 % se netýká všech

Snížení DPH na 15 % se netýká všech

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Vitalia.cz: Když přijdete o oko, přijdete na rok o řidičák

Když přijdete o oko, přijdete na rok o řidičák

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

DigiZone.cz: Rádio Šlágr má licenci pro digi vysílání

Rádio Šlágr má licenci pro digi vysílání

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

Měšec.cz: Jak levně odeslat balík přímo z domu?

Jak levně odeslat balík přímo z domu?

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie