Operační systémy pro mobilní zařízení (OSMZ)

Týden X. (12.4.-16.4.2021)

další z operačních systémů o kterých se zmíníme v tomto předmětu budou systémy společnosti Apple (prezentace). Firma má stejně jako Microsoft bohatou historii, přičemž počátky operačních systémů pro tyto počítače spadají až do roku 1984, kdy byl uveden první klasický MacOS (určitě si vyzkoušejte emulátor, včetně aplikací pro MacOS a Microsoft! Wordu 4.0). Na architektuře systémů se podepsaly přechody Stevena Jobse mezi firmami a tak OS X a iOS mají části z různých projektů na kterých se podílel. Základ tvoří jednak části vyvinuté v Applu spolu s kódem odvozeným z operačních systémů NeXTSTEP, FreeBSD a dalších open source projektů.

Současné jádro Darwin je UNIXový operační systém s otevřeným zdrojovým kódem. To ale neznamená, že by i iOS / MacOS byl celý pod touto licencí. Klíčové knihovny Carbon, Cocoa, CoreServices a mnohé další jsou uzavřené. Otevřený není ani zdrojový kód pro procesory ARM, tedy pro větev použitou na mobilních zařízení. Mnoho publikovaných informací o mobilní větvi tak bylo získáno reverse engineeringem. Apple je velmi skoupý na interní informace a v dokumentaci se zaměřuje výhradně na aplikační API tvořené knihovnami a frameworky. V zásadě nepředpokládá, že by aplikační programátor mohl interagovat s operačním systémem přímo.

Zařízení s iOS používají řadu ochranných mechanismů, jako je podepisování kódu, ochrana zavaděče a další mechanismy, které znemožňují spustit na stroji nepodepsaný nebo jinak modifikovaný kód. Pokud tedy chcete získat „roota“ na svém iOS zařízení musíte provést Jailbreak, což je proces který obchází zabezpečení systému a umožní vám získat kontrolu nad systémem.

Zajímavá je i implementace systémových volání, které mohou nabývat záporných hodnot. Kladná čísla přísluší klasickým POSIXovým voláním, která známe třeba z Linuxového jádra, záporná pak přísluší voláním MACH jádra (podrobnější popis systémových volání). Netradiční je také stavba binárních souborů, které představují jakýsi archiv spustitelných kódů (fat binaries) pro různé architektury CPU. Při pohledu na souborový systém naleznete jedna klasickou adresářovou strukturu danou POSIX standardem, tak i specifický systém Macu. Odlišný je i způsob distribuce aplikací, který z NeXTSTEPu přebral myšlenku jakýchsi balíčků, bundles. K Applu patří i jeho proprietární souborový systém HFS/HFS+ a novější APFS.

Nejpodrobnější popis vnitřní architektury naleznete v knize Jonathana Levina Mac OS X and iOS Internals. Bohužel je staršího vydání, ale nic novějšího a stejně komplexního se zatím neobjevilo. Protože současné Macy přešly na architekturu x86, je možné neoficiální cestou spustit tento systém i na nelicencovaném stroji. Návod, jak jej lze zprovoznit ve VirtualBoxu naleznete na stránkách howtogeek.com

PREZENTACE

LITERATURA

Jonathan Lewin Mac OS X and iOS Internals

  • Architecture of OS X and iOS (str. 17 – 53)
  • File systems and the VFS (str. 577 – 587)
  • HFS+ File System Concepts (str. 607 - 630)

OTÁZKY

Po přečtení výše uvedených textů byste měli být schopni odpovědět na další otázky z okruhů ke zkoušce, konkrétně:

  • Stručně popište platformu iOS, základní strukturu, vývojové nástroje.
  • Popište základní mechanismy zabezpečení aplikací v iOS.
  • Popište koncepci jádra systému iOS, jaké typy systémových volání implemetuje.
  • Vysvětlete pojem jailbreak.
  • Popište distribucí aplikací formou tzv. Bundle.
  • Velmi stručně popište vlastnosti souborového systému HFS/HFS+ (případně APFS)