Epoc je původně vyvinutý firmou Psion a dnes rozvíjený a podporovaný společností Symbian, jež kromě Psionu sdružuje nejvýznamnější výrobce mobilní techniky (jako je Motorola, Nokia nebo Ericsson).
Jak je správně řečeno v nesmrtelném "Někdo to rád horké":"... nikdo není dokonalý...." Dokonalý není ani Epoc, naopak, obsahuje řadu kompromisů a chyb; s řadou z nich se v tomto textu také seznámíme. Asi nejnepříjemnější je, že na rozdíl od dnešních nejvýznamnějších operačních systémů (Apple Darwin, FreeBSD, Linux) není jeho kód plně otevřený: lze jej získat pouze na základě poměrně drahé licence, přístupné pouze velkým výrobcům mobilního hardwaru.
Přesto jsem přesvědčen, že v horizontu nejbližších deseti dvaceti let - než mobilní platformy opanují otevřené systémy na bázi Unixu - je právě Epoc sice ne dokonalým, ale přesto s velkou rezervou nejlepším softwarovým řešením pro mobilní systémy.
Na úvod jen několik faktů o systému Epoc:
- Epoc je v současnosti nesrovnatelně lépe přizpůsoben specifikům mobilních zařízení než jakýkoli jiný systém. To platí díky tomu, že byl pro mobilní přístroje přímo navržen, nadto firmou Psion, jež byla (bohužel již není)´v oboru mobilních systémů světovou jedničkou (ostatně i název "organizer" vznikl zobecněním konkrétního jména prvého produktu firmy Psion!).
- Uživatelské rozhraní Epocu je nesmírně flexibilní a podporuje jak velmi luxusní grafický systém pro přenosné počítače, tak i jednoúčelové služby, vhodné například pro mobilní telefony či pagery.
- Ačkoli jádro Epocu není tak kvalitní jako jádra špičkových stolních systémů (např. Mach v Darwinu), pořád je jim daleko blíže než zastaralé služby systémů jako PalmOS nebo Windows CE. Epoc podporuje prakticky všechny standardní technologie moderních operačních systémů, od ochrany paměti přes architekturu klient/server až po preemptivní multitasking.
- Epoc má navíc širokou podporu řady firem; nehrozí mu proto například situace systému FreeBSD, který - ačkoli je jeho architektura lepší než architektura Linuxu, nemluvě ani o Windows - pro nedostatek podpory živoří na okraji zájmu.
Držte si klobouky, pojedeme z kopce
Epoc je, jak už víme z minulého odstavce, moderní operační systém, v koncepci ne zásadně odlišný od systémů unixového typu (v konkrétních implementacích ale, bohužel, řada odlišností je, i tam, kde pro to žádné důvody nejsou). Jeho základem je poměrně velmi slušně navržené a dost výkonné mikrojádro, které se stará o základní systémové služby. Mezi ty patří správa paměti se samozřejmou podporou ochrany systémové paměti před uživatelskými procesy (samozřejmou u slušných operačních systémů, nikoli mezi mobilními řešeními). Stránkování lze využívat bez omezení například i pro úpravy kódu operačního systému (jinak to u systému v paměti ROM není možné); jsou podporovány i paměťově mapované soubory: například dynamicky zaváděné knihovny z paměti ROM nejsou vůbec "zaváděny", namísto toho se jejich kód využívá přímo na adresách, na nichž leží. Jádro nabízí i efektivní systém zpráv pro meziprocesovou komunikaci klient/server. Obsluha přerušení je optimalizována natolik, že Epoc může bez problémů sloužit jako realtime operační systém.
Správa procesů nabízí klasický mechanismus tasků a threadů, s podporou preemptivního multithreadingu. Oproti klasickým systémům Epoc místy trochu příliš podporuje thready na úkor tasků (např. "majitelem" komunikačního kanálu k serveru je thread, nikoli task), což trochu komplikuje přenositelnost některých programů; ta však je stejně z důvodů popsaných v prvé kapitole u mobilních systémů dost iluzorní.
Součástí jádra je také vrstva HAL: jedná se o prostou zkratku Hardware Abstraction Layer; Epoc je díky této vrstvě velmi snadno přenositelný na prakticky libovolnou architekturu. V současnosti jsou k dispozici verze pro ARM, StrongARM a Intel80x86.
Vzhledem k tomu, že na mobilních zařízeních nepřipadá v úvahu restart, musí operační systém podporovat dynamicky zaváděné a uvolňované ovladače; v Epocu tak tomu také je, a odpovídající služby jsou dost luxusní.
Neobvyklou zajímavostí Epocu je to, že jej lze snadno konfigurovat jako jednoprocesový uzavřený systém, ve kterém jsou všechny služby a servery reprezentovány pouze thready (odtud pochází také neobvyklé zdůraznění threadů, o kterém jsem se zmínil v předminulém odstavci). To samozřejmě není samoúčelné - právě díky tomu je snadné Epoc využít i na uzavřených jednoduchých zařízeních typu mobilních telefonů nebo pagerů, jejichž řídicí mikroprocesor samozřejmě nemá žádnou správu paměti.
Grafický server Epocu je skutečně serverem, a ne jen knihovnou služeb pro přístup k obrazovce, jak je u mobilních systémů nedobrým zvykem. Nabízí proprietární sadu služeb, a má k tomu dobrý důvod: X Window by byly zcela nevhodné a moderní grafické služby, jako například Display PostScript, jsou - alespoň prozatím - vinou omezení mobilních systémů nepoužitelné. Zato je k dispozici řada služeb specifických právě pro potřeby mobilních systémů - například samostatný server zajišťuje pro úsporu omezených zdrojů nejen sdílení písem, ale i obrázků.
Vím, že se tento článek zabývá systémem Epoc poměrně podrobně, alejsem toho názoru, že si takto kvalitní systém pozornost zaslouží. Budemese mu věnovat ještě jednou a to především z pohledu vývoje aplikací.