Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

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

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.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

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.

TIB2012

       

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.

Školení: TCP/IP na Linuxu I.

V tomto kurzu se seznámíte se síťováním v Linuxu na všech vrstvách. Ujasníte si možnosti použití Linuxu v roli klienta, serveru i routeru.

  • Počítačové sítě
  • Architektura TCP/IP
  • Ethernet
  • Protokol PPP
  • Protokoly IPv4 a IPv6
  • IP na ethernetu
  • IP routing
  • Chybové a řídící zprávy
  • Transportní protokoly
  • Překlady jmen a adres
  • Aplikace
  • Překlady síťových adres a proxying
  • Testování sítě
  • Aktuální situace na poli TCP/IP

Podrobnější informace a přihláška  

Ohodnoťte jako ve škole:
Průměrná známka 2,88

Přehled názorů

Rizeni sluzeb
Satai 12. 5. 2005 07:07
Nový
I/O Kit v XNU
Miraceti 12. 5. 2005 08:57
Nový
└ 
Re: I/O Kit v XNU
Zdenek 12. 5. 2005 09:26
Nový
Jaderny ovladac
kamen 12. 5. 2005 11:13
Nový
Kde se da GNU Darwin stahnout?
leos 12. 5. 2005 11:19
Nový
└ 
Re: Kde se da GNU Darwin stahnout?
puco 12. 5. 2005 11:31
Nový
 
└ 
Re: Kde se da GNU Darwin stahnout?
Adam Šindelář 12. 5. 2005 14:13
Nový
Disková terminologie
Luboš Doležel 12. 5. 2005 17:46
Nový
└ 
Re: Disková terminologie
Adam Šindelář 12. 5. 2005 22:15
Nový
XNU na Intelech
Mmm 12. 5. 2005 23:09
Nový
├ 
Re: XNU na Intelech
Mmm 12. 5. 2005 23:13
Nový
│
└ 
Re: XNU na Intelech
kaaja 13. 5. 2005 13:49
Nový
│
 
└ 
Re: XNU na Intelech
running 2. 1. 2006 01:44
Nový
└ 
Re: XNU na Intelech
xxxvsxxx 29. 8. 2005 22:45
Nový
Linux vs Mac OS X
David Kohut 13. 5. 2005 10:46
Nový
├ 
Re: Linux vs Mac OS X
Adam Šindelář 13. 5. 2005 15:21
Nový
└ 
Re: Linux vs Mac OS X
pajo 15. 5. 2005 21:34
Nový
C shell?
anonymní uživatel 15. 5. 2005 23:39
Nový
└ 
Re: C shell?
junix 16. 5. 2005 18:07
Nový
 
└ 
Re: C shell?
anonymní uživatel 17. 5. 2005 10:51
Nový
 
 
└ 
Re: C shell?
pc 17. 5. 2005 18:07
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem