Operační systémy reálného času s Win32 API
Časy, kdy se do „holého“ hardwaru počítače nahrál řídicí program, který vše řešil sám a nepoužíval operační systém, jsou až na výjimky minulostí. Snaha po zobecnění potřeb, hledání a nacházení společných rysů a následná standardizace vedly k nástupu a nárůstu používání operačních systémů. To nejdůležitější, co operační systém programátorům nabízí, jsou aplikační funkce (API – Application Program Interface). Ty jsou jako nedílná součást operačního systému připraveny v knihovnách a definovány v hlavičkových souborech.
1. Úvod
Řídicí průmyslové počítače na bázi architektury PC (IPC) v současné době vynikají velkým výpočetním výkonem, vysokou spolehlivostí a stále nižší spotřebou energie. Lze je využít jako řídicí jednotky, které je dále možné propojovat do sítě počítačů s klientskými vizualizačními a parametrizačními programy. K těmto příznivým vlastnostem přistupuje i značná pestrost nabídky na trhu hardwaru a nízká pořizovací cena.
Naproti tomu se s rostoucím výkonem hardwarové platformy stává stále důležitější role použité softwarové platformy. A používání operačních systémů výrazně usnadnilo vývoj, umožnilo zvýšit spolehlivost aplikací a podstatně zkrátit dobu od zadání po uvedení výrobku na trh. Přirozeným důsledkem této skutečnosti je existence různých operačních systémů s více či méně podobnými rysy, které jsou pro danou aplikaci více či méně vhodné, drahé, levné, s profesionální podporou nebo bezplatné.
Tento článek si klade za cíl vyzdvihnout a ukázat široké technické veřejnosti způsoby použití operačních systémů s nejznámějším programátorským rozhraním Win32 API v průmyslových a ostatních časově kritických aplikacích.
2. Operační systémy s funkcemi Win32 API
Programátorské rozhraní Win32 API používá velká většina programátorů z celého světa, a to i v řídicích aplikacích. V důsledku toho je zajištěna velká přenositelnost a univerzálnost napsaných zdrojových textů programů a tak i ochrana investic vložených do vývoje.
Protože existuje více operačních systémů reálného času s Win32 API, je nutné zvolit ten optimální. Podstatné faktory při volbě jsou:
- typ použitého procesoru CPU,
- rozsáhlost a požadovaná komplexnost řešení,
- počet opakovaného použití vyvinutého produktu.
Jestliže je projekt systému, který má využívat Win32 API, založen na procesoru z řady IBM x86 nebo Pentium, je možné použít operační systémy Windows nebo PharLap ETS. Používá-li projekt jiný procesor, jako třeba ARM, MIPS, PPC nebo SuperH, je možné použít jen Windows CE.
Operační systémy Windows jsou víceúlohové a víceprocesní, zatímco PharLap ETS je víceúlohový, ale není víceprocesní. Windows 2000 a Windows XP podporují rozhraní pro zpracování několika dokumentů souběžně (MDI – Multiple Document Interface), naopak PharLap ETS a Windows CE poskytují pouze rozhraní pro jednoduchý dokument (SDI – Single Document Interface).
Jestliže je třeba realizovat projekt menšího zařízení, přičemž záměrem je toto zařízení vícenásobně opakovat, je rozhodně nejlepší použít PharLap ETS. Naopak, bude-li třeba realizovat kusovou výrobu nebo bude zapotřebí při řešení aplikovat rozsáhlejší funkce, např. použít DCOM nebo OPC (OLE for Process Control), je lépe použít OS Windows 2000 nebo XP.
3. Operační systémy pevného reálného času
Operační systém pevného reálného času (hard real-time) je obecně takový systém, jehož správný provoz závisí nejen na výsledcích, které z něj vzejdou, ale i na tom, kdy budou získány. Je důležité podotknout, že aktivita v pevném reálném čase nutně neznamená, že tato aktivita bude vykonána rychle – spíše ukazuje, jak deterministické jsou časové charakteristiky reakcí systému. Jinými slovy, důležitým výkonovým hlediskem není průměrná doba vykonání reakcí, ale doba reakce v tom nejhorším případě, přitom požadavek na stanovení doby reakce je absolutní, bez výjimky.
K požadavku na časový determinismus přistupují ještě další požadavky, které systémy reálného času typicky poskytují:
- preemptivní plánovač s velkým počtem nastavitelných priorit vláken,
- prediktivní mechanismus synchronizace vláken,
- systém dědičné priority,
- rychlé hodiny a časovače.
4. Rozšíření Windows na systém reálného času
Windows NT, 2000 i XP nejsou v základním provedení operační systémy reálného času. Byly vytvořeny jako operační systémy pro obecné účely, vhodné jak pro interaktivní systém na počítačích typu desktop, tak i jako serverové systémy v síti. Nedostatky Windows 2000 a XP z hlediska reálného času jsou zejména tyto:
- příliš málo priorit vláken,
- neprůhledná a nedeterministická rozhodnutí plánovače,
- vznik inverze priorit, zvláště při zpracování přerušení.
Ani Windows XP Embedded, která jsou v podstatě Windows XP s utilitou pro nakonfigurování podle použitého hardwaru, nejsou operační systém reálného času. Teprve po nainstalování doplňku RTX (Real-Time eXtension) od společnosti VenturCom se Windows 2000 a XP začnou chovat jako opravdový systém reálného času. Rozšíření RTX přidává plánování úloh v reálném čase a zkracuje rozlišitelnou jednotku času z 5 ms na přibližně 20 µs.
Za pozornost stojí, že aplikační rozhraní RTX lze vyvolat jak ze standardního prostředí Win32, tak i v rámci subsystému reálného času – RTSS. Při používání RTX API z Win32 ale není k dispozici determinismus poskytovaný v rámci RTSS. Vše, co je nutné ke konverzi programu používajícího Win32 do programu používajícího RTSS, je znovu vytvořit vazby aplikace s novou kolekcí knihoven, která je součástí RTX.
Přidáním RTX k Windows 2000 nebo XP se operační systém začne chovat jako opravdový systém reálného času. Nezávislý plánovač vláken RTSS v RTX může běžet v popředí i při obsluze vlákna přerušení Windows a může být používán na jednoprocesorovém i na symetrickém víceprocesorovém stroji, beze změny jádra Windows a ovladačů zařízení. Aplikace také nemusí při startu či restartu počítače čekat, než se spustí operační systém (to znamená, že může být spuštěna za méně než tři sekundy od startu počítače). K RTX patří i podpůrné nástroje a doplňky – TimeView, Platform Evaluator a RT TCP/IP.
TimeView je určeno pro časovou analýzu vzniklých událostí. Zaznamenává v přirozeném pořadí s časovými značkami volitelné systémové a aplikační události. Ukazuje sled spouštění a časování událostí, přerušení, přepínaní kontextů vláken a vzájemné interakce aplikací.
Platform Evaluator umožňuje dokumentovat a charakterizovat schopnosti reálného času použité hardwarové platformy. S jeho pomocí lze určit optimální konfigurace hardwaru pro dosažení vlastností reálného času.
RT TCP/IP umožňuje použít vysoce výkonné síťové protokoly reálného času v aplikaci v prostředí Windows + RTX. Dovoluje, aby běh síťových aplikací bez přerušení pokračoval i při obsluze systémové výjimky Windows (blue screen).
5. PharLap ETS – kompaktní operační systém s Win32 API
Ačkoliv se může zdát, že je jen málo rozdílů mezi víceúlohovými (multithreading) a víceprocesními (multitasking) systémy, je vhodné si oba pojmy trochu ozřejmit. Každý proces (task, spuštěný program) je složen z mnoha programovým vláken (threads) a každé vlákno může mít vlastní prioritu pro plánovaní svého provádění (v PharLap ETS jsou všechna uživatelská vlákna složkou jediného procesu jádra). Vlákna v procesu sdílejí stejný adresní prostor, globální proměnné, paměťovou hromadu (heap) a proměnné prostředí. Každé vlákno má vlastní zásobník registrů a priority. PharLap ETS je operační systém, který používá pouze vlákna k vykonávání více úloh v rámci jednoho procesu, a tudíž má malou režii pro přepínání kontextů úloh, protože je zde zapotřebí nejmenší množství registrů a dalších informací, jež musejí být ukládány a obnovovány v průběhu přepínání mezi úlohami. Tato skutečnost dělá z PharLap ETS neobyčejně rychlý a současně hardwarově nenáročný operační systém pevného reálného času.
PharLap ETS je navržen pro „střed trhu“ – poskytuje síťové možnosti, podporuje internetový server i GUI (grafické rozhraní). V rámci systémů reálného času se vyznačuje velmi dobrým poměrem schopností reálného času k ceně systému. Pro mnohé platformy může být operační systém PharLap ETS spuštěn i bez systému BIOS prostřednictvím vlastního spouštěcího kódu.
Plánování běhu programových vláken (scheduling) je deterministické, tzn. že „poběží“ vždy povolené programové vlákno s nejvyšší prioritou a bude aktivní, dokud buď nebude zablokováno jiným právě povoleným vláknem s vyšší prioritou, anebo, je-li povoleno časové sdílení a vyskytne se jiné povolené vlákno se stejnou prioritou, nevyprší sdílený čas aktivního vlákna. Plánovač běhu programových vláken brání vzniku chybového efektu prioritní inverze zajištěním běhu vlákna s nejvyšší prioritou tak, že se snaží uvolnit blokující vlákno dynamickým zvyšováním priorit.
Frekvence, s níž jádro ETS přepíná mezi vlákny se stejnou prioritou – časové sdílení procesoru (slicing) –, je řízena podle délky časového sdílení procesoru každým vláknem. Standardně je časové sdílení nastaveno na 10 ms. Omezení periody „tiků“ systémového časovače závisí na použitém hardwaru. Pro systémy kategorie PC/AT se tato perioda pohybuje mezi 1 až 55 ms. V jádru ETS jsou ovšem i funkce pro stanovení impulsů systémových hodin ve zlomcích milisekund.
6. Příklady konkrétního použití
6.1 Windows + RTX
RTX tím, že zavádí do Windows subsystém reálného času RTSS a přináší schopnost provádět řídicí operace v pevném reálném čase, dovoluje nahradit funkce DSP (Digital Signal Processor) a jiných pomocných koprocesorů (tzv. smart karet) pro funkce reálného času čistě softwarovým řešením.
S příchodem výkonných a cenově dostupných procesorů s taktovací frekvencí přes 1 GHz lze funkce zajišťované koprocesory jednoduše nahradit softwarovými úlohami v časově kritickém prostředí RTSS, které „běží“ současně se standardními aplikacemi. Toto řešení uspoří značné prostředky, např. za „smart“ karty, tj. v/v karty s vlastním CPU. Ty lze nahradit běžnými kartami, které jsou řízeny v reálném čase přímo z cílové aplikace.
Jiným příkladem je realizace směrovače VoIP (Voice over IP – hlasové služby v prostředí internetu) s rozšířenými funkcemi. Tato implementace komunikačního zařízení zajišťuje současně několik funkcí. Řekněme, že systém musí pro dvě spojení LAN realizovat směrovač, který garantuje kvalitu služby (QoS), a běh aplikačního serveru. Windows XP poskytují tyto služby skoro na všech platformách, avšak realizace směrovače QoS vyžaduje zvýšenou pozornost. Windows XP sice dokážou zabezpečit softwarové směrování, ale nemohou zaručit dobu odezvy, speciálně v případě velkého zatížení služby přístupu k vzdálenému serveru (RAS – Remote Access Server) nebo zatížení od aplikačního serveru. Existují dvě možná řešení: jedno spočívá v přidání směrovací „smart“ karty s QoS, která provádí směrování mezi dvěma spojeními LAN, druhá možnost spočívá v naprogramování QoS a směrování (routing) v reálném čase s pomocí RTX, přímo v hostitelském CPU. Pod Windows XP může běžet aplikace serveru, veškeré služby RAS a procesy soukromé sítě, zatímco pod RTSS, prioritně před všemi procesy Windows XP, jsou realizovány ovladače karty síťového rozhraní a samotné směrování. Výhodou tohoto přístupu je nižší cena, jelikož není třeba žádný dodatečný speciální hardware, ale stačí obyčejné dvě „hloupé“ síťové karty.
6.2 PharLap ETS
Jak bylo uvedeno, PharLap ETS používá vlákna pouze k provádění více úloh v rámci jednoho procesu, takže se jedná o jednoprocesní operační systém. Tato vlastnost ho předurčuje pro použití v dedikovaných (jednoúčelových) aplikacích, např. pro zabudování (embedding) řídicí jednotky do strojů, nebo je velmi vhodné PharLap ETS použít na realizaci pokročilých algoritmů řízení pro průmyslové regulátory.
Protože PharLap ETS disponuje rozsáhlou a pečlivě vybranou podmnožinou funkcí Win32 API, není příliš obtížné napsat takový zdrojový kód, který bude možné překládat, vytvářet v něm vazby a výsledný produkt spouštět jak na platformě ETS, tak na platformě Windows. Díky sadě funkcí RtWinAPI, kterou obsahují Windows CE, PharLap ETS i RTX, jsou zdrojové texty časově kritických procedur mezi těmito platformami navzájem přenositelné.
Příkladem aplikace, která využívá tyto vlastnosti, může být distribuovaný řídicí systém (obr. 1). Ten využívá specifické možnosti různých hardwarových a softwarových platforem a přitom je všude schopen pracovat s jádrem, které je napsáno jediným zdrojovým textem. Takový systém je např. DisCO, které pracuje na principu rozloženého zpracování dat a decentralizace řízení. Název systému vyjadřuje použití objektové technologie v distribuovaném prostředí: Distributed Computing Objects.
Po softwarové stránce tvoří DisCO balík spolupracujících programů pro libovolné počítače s procesory IBM x86 a Pentium a potřebným vstupním a výstupním hardwarem. Výběr fyzického provedení je plně v rukou systémového inženýra – je na něm, co ze široké nabídky hardwaru pro vestavné, průmyslové nebo kancelářské aplikace použije. Operační systémy pro koncové stanice (front-end) lze volit mezi Windows CE, Windows XP Embedded bez doplňku reálného času RTX nebo s ním a PharLap ETS, pro technologické servery lze použít Windows 2000 či XP bez RTX nebo s ním a pro terminály operátorů Windows 2000 nebo XP.
Distribuce dat a řízení uvnitř systému jsou podmíněny existencí síťového spoje na bázi standardu Ethernet nebo komunikačního rozhraní RS-485. Lze také použít prostředí sítě Internet nebo Intranet. Externí komunikace umožňuje připojovat zařízení pomocí průmyslových sběrnic, např. sběrnice Profibus, nebo komunikačními protokoly použitých zařízení. Data do jiných řídicích systémů se exportují prostřednictvím komunikačního standardu OPC. Řídicí systém DisCO je k dispozici ve spustitelné binární formě .exe a jako dynamické knihovny .dll
7. Závěr
RTX, doplněk reálného času od americké firmy VenturCom, prokazuje, že s vybranou škálou rozšíření je možné vylepšit systémy Windows 2000 a XP nebo Embedded NT a XP tak, aby měly vlastnosti operačních systémů pevného reálného času a zároveň s tím byly nadále používány jako univerzální platforma. Výsledný systém vyhovuje požadavkům determinismu, které jsou nutnou součástí světa reálného času, a současně poskytuje prostředí, jež je blízké širokému poli uživatelů. Použité řešení umožňuje vystavět systémy s dobrým poměrem ceny k výkonu. Doplněk RTX je vhodný pro použití jak ve vestavných (embedded) systémech, tak i (a to především) ve výkonných luxusních aplikacích.
Operační systém PharLap ETS je výrobcem prezentován jako nejkompaktnější operační systém reálného času postavený na bázi Win32 API pro vestavěné aplikace. Jeho přizpůsobení na 32bitový hardware kompatibilní s IBM x86 a Pentium je bezproblémové a celkové použití je snadné. Přestože se nejedná o produkt společnosti Microsoft, používá vývojové prostředí MS Visual C++, které spolupracuje se spojovacím programem LinkLoc ze softwarového balíku ETS SDK a vytváří tak „exekutivní“ prováděcí mikrojádro, schopné spuštění dokonce i v paměti ROM.
Je až překvapující, že během deseti let se podařilo změnit pomalá, neefektivní a rozměrná PC na vysoce výkonné, efektivní tzv. embedded systémy pracující v reálném čase, které umožňují realizovat všechny druhy časově kritických aplikací. Zároveň s hardwarem se vyvíjí i software, aby dokázal splnit všechny nové náročné požadavky.
Ing. Ladislav Reisner, dataPartner, s. r. o.
dataPartner s. r. o.
Dukelská 64
370 01 České Budějovice
tel.: 386 104 311
fax: 386 104 319
e-mail: kontakt@datapartner.cz
http://www.datapartner.cz
|