Hlavní navigace

MAC OS X je taky unix (4): Dědictví Mac OS

Adam Šindelář 26. 5. 2005

Jak už jsme si řekli, Mac OS X vychází z mnoha zdrojů, především z NeXTStepu a Mac OS 9. Na první jmenovaný, jeho technologie a framework Cocoa jsme se podívali minule, dnes se tedy dostane na poněkud tradičnější technologie Mac OS 9, a pro jistou podobnost v implementaci i na integrovaný X Server.

Mac OS 9

Krátce o historii

Operační systémy Mac OS 7, 8 a 9 jsou v základu takřka totožné. Oproti předchozím verzím systému to už byly plně 32bitové (System 6 byl částečně 32bitový) a Finder byl plně nahrazen MultiFinderem, čímž se Macům dostalo pořádné podpory alespoň základního kooperativního multitaskingu. System 7 vyšel v roce 1991 a na svou dobu byl skutečným výkvětem technologie. Udržel se jako hlavní systém platformy Macintosh po dobu šesti let a teprve v roce 1997 byl nahrazen Mac OS 8, což byl také první operační systém od Applu se slovem Mac v názvu. Mac OS 8 se velmi podobá svému předchůdci, ale byly do něj začleněny některé technologie Coplandu. Ve verzi 8.1 přibyla také podpora Carbonu, který se na platformě Mac používá dodnes. Mac OS 8.5 konečně vypustil podporu starých Motorola procesorů a běžel už jen na PowerPC. Na konci svého vývoje Mac OS 8.6 konečně představil multitasking na úrovni kernelu (ale nebyla to žádná sláva). Mac OS 9, který nás bude zajímat především, byl představen v roce 1998, kdy už měl Apple jasné plány pro přechod na Mac OS X – jeho hlavním úkolem tedy bylo připravit platformu Macintosh k tomuto přechodu.

Mac OS 9 obsahoval kromě již zmíněného Carbonu i podporu více procesorů, filesystem HFS+ (zatím stále včetně tzv. forků) a další technologie použité v Mac OS X. Po vydání prvních verzí desítky byl OS 9 upraven tak, aby mohl běžet v tzv. Classic módu, někdy zvaném Blue Box.

Classic

Aby byla udržena kompatibilita s předchozími verzemi Mac OS, je v Mac OS X zahrnuta vrstva Classic, která při svém spuštění načte do paměti jádro Mac OS 9 včetně všech služeb a rozšíření (obvykle tak 50 MB) a skryje se na pozadí jako daemon. Pokud běží Classic, je možné spouštět aplikace určené pro starší systémy, ba i dokonce pro starší Motorola procesory. Takové aplikace sice běží ve stejném prostoru jako ostatní programy, funguje mezi nimi i Drag&Drop a jiná spolupráce, ale nejsou integrovány do zobrazovacího systému Mac OS X. Ke svému vykreslování použají staré služby Mac OS 9 jako QuickDraw, a vypadají tedy jinak než nativní aplikace a nejsou zahrnuty do efektů týkajících se jenom Quartzu (minimalizace, Exposé).

Carbon

Carbon byl poprvé představen s vydáním Mac OS 9 a byl později backportován až do Mac OS 8.1. Jedná se o rozšiřitelný a univerzální C a C++ framework, jehož úkolem původně bylo tvořit jakýsi most mezi starým a novým Mac OS, ale který se později rozrostl a stal se plnohodnotným toolkitem. Dnes tedy najdete v zásadě dva druhy programů psaných pro Carbon: HydroCarbon aplikace, které jsou funkční na obou systémech a teoreticky jsou k nerozeznání od nativních programů toho kterého systému, a normální programy psané pro OS X, které používají Carbon jenom jako jednu z knihoven a využívají i ostatních služeb systému. Klasickým příkladem HydroCarbon aplikace je například oficiální ICQ klient pro Mac OS.

Carbon API je velmi rozsáhlé a poskytuje kompletní přístup k drtivé většině komponent Mac OS X, včetně OpenGL, služeb kernelu a BSD API/ABI. Je také možné tvořit smíchané aplikace napsané částečně v Cocoa a částečně v Carbonu, ale takový přístup není příliš častý. Hodilo by se také zmínit, že kód napsaný pro Carbon se nedá snadno přenést na žádný jiný systém než Mac OS, a chcete-li tedy psát multiplatformní aplikace, pravděpodobně zvolíte jinou knihovnu.

X11

Mac OS X v základu obsahuje také plně funkční implementaci X Window Systemu, a to ve verzi korespondující s XFree86 4.4. Původní X11 server byl však programátory Applu značně upraven, tak, aby co nejlépe zapadl do pracovního prostředí Mac OS X. Z pohledu aplikace se applovský X server chová úplně stejně jako jeho linuxový bratranec, ale volání programu si vykládá po svém. Pro uživatele je asi nejmarkatnější začlenění X serverem spravovaných oken do systému Quartz, z čehož plyne plná podpora Drag&Drop, všechny pokročilé efekty jako vektorové prvky, podpora Exposé a podobně. Ze systémového hlediska je zase zajímavý způsob správy procesů a možnost běhu v režimu s kořenovým oknem, tedy tak, jak jsme zvyklí z Linuxu. V takovém režimu je možné na Mac OS X provozovat například kompletně celé KDE.

Zatímco Mac OS X samotný žádné X11 aplikace pochopitelně neobsahuje, prakticky celý repertoár Open Source aplikací dostupných na GNU systémech je pro uživatele Mac OS X k dostání v online repositáři projektu Fink, který umožňuje nejen snadnou instalaci a kompilaci programů ze světa Open Source, ale má navíc pěkné klikací rozhraní a udržuje krok s vývojem na obou stranách. Pro běžnější uživatele však osobně Fink příliš nedoporučuji; jednak k mnoha programům existuje nativní port (dokonce i OpenOffice.org budou mít nativní port ve verzi 2.0), jednak se mohou objemy stahovaných a instalovaných dat snadno vyšplhat do astronomických hodnot. Nikdy byste nevěřili, jak velké může být například takové KDE. :)

Správa procesů

Když už jsme si představili všechna hlavní nízko i vysokoúrovňová programová prostředí v Mac OS X, měli bychom si také něco říct o tom, jak se systém vypořádává s takovým množstvím programů z tolika různých zdrojů. Nebude zde řeč o multitaskingu ani o správě virtuální paměti, ale o struktuře stromu procesů z pohledu userspace. I v tom nejjednodušším případě, kdy nám běží jenom nativní aplikace, se musí systém vypořádat s několika nesrovnalostmi ve správě procesů, z nichž mnohé začínají už hluboko v kernelu. Především Mach používá task, který obsahuje jedno nebo více vláken, zatímco BSD kernel používá procesy a k jejich identifikaci má PID (jako v Linuxu). Tento rozdíl je vyřešen abstrakcí na úrovni jádra a uživatel o něm nemusí vůbec vědět, ale na vyšší úrovni přibude další konflikt, a tím je knihovna Carbon. Jak už bylo řečeno, Carbon obsahuje stará API, z nichž mnohá se datují až do dob Mac OS 8; je tedy jenom logické, že knihovna fungující na dvou diametrálně odlišných systémech ma vlastní mechanismus identifikace procesů zvaný Carbon Process Manager. Identifikační označení se nazývá PSN (Process Serial Number) a je tvořeno šesti nebo sedmimístným dekadickým číslem. Z důvodů víceméně historických tedy všechny aplikace používající Carbon mají takové číslo, které se zobrazuje společně s PID ve výpisu z příkazu ps. Běží-li například oficiální ICQ klient (HydroCarbon aplikace), příkaz ps -axw | grep icq odhalí toto:

Atris:~ adam$ ps -axw | grep icq
834  ??  S      0:03.81 /Applications/Web, Mail & IM/ICQ 3.4 /Applications/Web, Mail & IM/ICQ 3.4 -psn_0_4063233 

Pomocí některých funkcí knihovny Carbon lze z PSN získat korespondující PID a naopak, je ale důležité si uvědomit, že za jedním PSN se může skrývat více PID (vzácný případ) a za jedním PID více PSN (to už je častější). Navíc ne všechny procesy v Mac OS X mají PSN. Běží-li například prostředí Classic, vícero programů v něm běží pod jedním BSD procesem. A pokud vám připadá, že je toho zmatku málo, představte si, že ještě běží několik X11 aplikací, které jsou obaleny procesy applet hiearchicky řazenými pod instanci X serveru, a uprostřed toho ještě několik Java appletů, všechny pod jedním BSD procesem. Samozřejmě situace vypadá horší, než ve skutečnosti je. Java běží pod jedním procesem na všech systémech, řešení X11, i když není hezké, dává smysl a Classic nejspíš jinak vyřešit nešel, ale i přestože můžete PSN ve většině případů prostě ignorovat, přidává do systému jistý matoucí element, kterému možná bylo lepší se vyhnout.

Tímto dílem jsme probrali prakticky všechny důležité frameworky a prostředí a příště se můžeme podívat na multimediální komponenty systému. Dostane se na zvukový podsystém CoreAudio, na grafické API CoreImage&CoreVideo a také na framework QuickTime, těšte se příští týden!

Našli jste v článku chybu?

29. 5. 2005 16:29

fipa (neregistrovaný)
No, kde na strankach OO.o je napsano, ze bude pro verzi 2.0 nativni port OO.o? Prosim o link, abych rekl kolegum, at to daji pryc :-).

Respektive jde o to, co je to nativni...?

OpenOffice.org existuje pro MacOS X jiz od verze 1.0, akorat vyzaduje beh X11 serveru :-(. NeoOffice jsou zase silene pomale, o vyvoji aqua-verze OpenOffice.org nic nevim :-). Nicneme soucasna dev verze 1.9.10x slape celkem pekne.

Hezky den,

Filip Molcan







29. 5. 2005 2:53

Izak (neregistrovaný)
No Mach je hlavne RealTime takze nemusim dat prioritu v cyklech ale v realnych casovych jednotkach takze reknu aplikace bude mit CPU kazdych 20ms

Jinak pouzivat RT OS na beznou praci zase tak velka vyhoda neni, nebot vetsinou bezi kernel v RT mikrokernelu. (alespon RT linux to takhle ma, a RTlinux vznikl po Mach a nejspise se i inspiroval )

Takze pokud bych dal RT OS na server a dal tam uzivatelum pravo poustet RT ulohy muzou mi udelat DOS jak vysity.



Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Root.cz: Pinebook: linuxový notebook za 89 dolarů

Pinebook: linuxový notebook za 89 dolarů

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

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

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

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

DigiZone.cz: Flix TV má set-top box s HEVC

Flix TV má set-top box s HEVC

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Podnikatel.cz: Zavře krám u #EET Malá pokladna a Teeta?

Zavře krám u #EET Malá pokladna a Teeta?

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: Co pomáhá dítěti při zácpě?

Co pomáhá dítěti při zácpě?

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka