Ing. Ladislav Reisner, dataPartner s. r. o.
(reisner@datapartner.cz)
Reálný čas ve Windows s použitím RTX
Operační systém Windows NT/2000 od společnosti Microsoft je z mnoha důvodů stále častěji považován za platformu dalšího rozvoje systémů pro řízení v reálném čase (real-time). Z důvodu přísných požadavků na reakční dobu systémů reálného času je ale nezbytné možnosti Windows NT/2000 v tomto směru dále rozšířit. Podívejme se, jak lze k implementaci subsystému reálného času do prostředí Windows NT/2000 použít doplněk RTX (Real-Time eXtension) od americké společnosti VenturCom. RTX implementuje deterministické plánování vláken reálného času, komunikační mechanismy mezi prostředím reálného času a přirozeným prostředím NT/2000 a další rozšíření Windows NT/2000 o vlastnosti, které lze často najít ve specializovaných operačních systémech reálného času. Článek se zabývá způsobem, jakým komponenty RTX poskytují vlastnosti reálného času, uvádí některé současné výsledky a zkušenosti a naznačuje směry možných budoucích zlepšení.
1. Úvod
Díky možnosti dosáhnout komplexního řešení na platformě Windows NT/2000, NT Embedded nebo Windows XP a naopak vyhnout se možným nákladům na udržování heterogenního výpočetního prostředí se mnoho firem snaží používat systém Windows jako svůj jediný operační systém, a to na všech úrovních hierarchie průmyslového podniku. Časté použití Windows jako síťového serverového systému nebo na stolních počítačích lze velmi snadno pochopit, protože to jsou právě ta prostředí, pro která byl Windows NT/2000 vytvořen. Existují však také podněty, směřující k použití Windows i v jiných prostředích, jako např. na půdě továrních aplikací. Společnou charakteristikou těchto prostředí je, že často od operačního systému vyžadují chování přesného reálného času.
2. Čím se vyznačuje systém reálného času
Systém reálného času (real-time system) je systém, jehož správný chod závisí nejen na výsledcích, které z něj vzejdou, ale i na tom, kdy je získáme. Je důležité podotknout, že přívlastek „real-time“ neznamená nutně „rychlý“; ale je především poukazem na to, že časové charakteristiky reakcí systému jsou deterministické. To znamená, že důležitým hlediskem není průměrná doba reakcí, ale doba reakce v tom nejhorším případě. Někdy se systémy reálného času dále klasifikují jako hard (tvrdé) nebo soft (měkké). Hard real-time systém je takový, v němž požadavek na dobu reakce je absolutní; u soft real-time systému se tolerují určité malé odchylky. V tomto článku budeme dále hovořit o hard real-time operačním systému.
Příkladem systému reálného času je systém řídící části uzávěrové linky nad dopravníkem přepravujícím sklenice k zavíčkování. Takový systém nevystačí s pouhým správným nastavením polohy uzavírací hlavice se zásobníkem s víčky; musí to udělat právě v okamžiku, kdy je sklenice v poloze připravené k zavíčkování. Všechna přesnost v umisťování sklenic je bezcenná, když se zásobník s víčky dostane do správné polohy až poté, co jej sklenice minula.
K požadavku časového determinizmu přistupují ještě další požadavky, které systémy reálného času typicky splňují. Jsou to především:
- preemptivní plánovač s velkým počtem (typicky 64 až 256) nastavitelných priorit vláken;
- prediktivní mechanismus synchronizace vláken;
- systém dědičné priority;
- rychlé hodiny a časovače.
3. Proč je Windows NT nevhodný jako operační systém reálného času?
Microsoft Windows NT byl vytvořen jako operační systém pro obecné účely, tj. vhodný jak pro interaktivní práci na stolních počítačích, tak i jako serverový systém v síti. Nedostatky NT v aplikacích reálného času byly již důkladně prozkoumány a jejich příčiny jsou zejména následující:
- příliš málo úrovní priority vláken;
- neprůhledná a nedeterministická rozhodnutí plánovače;
- možnost vzniku inverze priorit, zvláště při zpracování přerušení.
Logika návrhu RTX je dána několika faktory. Operační systém NT je masový tržní produkt, který nelze přímo použít v aplikacích vyžadujících reálný čas. Navrhuje se doplnit vlastnosti reálného času do NT prostřednictvím rozšíření obecně použitelného produktu nebo zásuvného modulu do něj.
Následující dvě kapitoly jsou pouze stručným nahlédnutím pod povrch architektury NT. Přesto méně zasvěcení čtenáři mohou přejít přímo ke kap. 6. Zájemce z řad odborné technické veřejnosti lze naopak pozvat k návštěvě stránky www.datapartner.cz, kde v dokumentu Whitepaper na stránce produktu RTX naleznou mnohem hlubší popis v českém jazyce.
Tab. 1. Typické reakční doby pro Pentium II 266 MHz
Operace |
Způsob měření |
Reakční doba (µs) |
Vlákno přerušení |
průměr; maximum |
9; 38 |
Přerušení časovače |
průměr; maximum |
10; 43 |
Přepínač kontextu (čipová výtěžnost) |
průměr |
3,5 |
Přepínač kontextu (semafor) |
průměr |
5,5 |
Změna priority vláken |
průměr |
3 |
čipová výtěžnost vlákna |
průměr |
3 |
Sběr semaforů, bez „soupeření“ |
průměr |
1,5 |
Sběr semaforů, bez „soupeření“ |
průměr |
5 |
Volání semaforu z Win32 do RTSS |
průměr |
50 |
4. Proč rozšiřovat Windows NT/2000, XP nebo NT Embedded na systém reálného času?
Operační systém NT má velmi bohatý promyšlený model ovládačů zařízení. Ten a zákaznicky upravitelná vrstva HAL nabízejí vývojářům velkou flexibilitu, možnost řídit chování systému i prostor pro kreativitu při různých technických požadavcích a podmínkách. Funkční schopnosti reálného času lze implementovat „podle příručky“ sledováním návodu v Device Driver Kit (DDK) Microsoft Windows NT/2000 a modelů HAL.
Dejme tomu, že mnoho nedostatků NT je způsobeno modelem vláken a plánovačem vláken – potom je logické, že přidávané rozšíření má svůj model vláken se svým vlastním plánovačem. Rovněž synchronizace objektů NT jako např. událostí, semaforů a mutexů vyžaduje nezbytně sémantiku reálného času (zejména, když připravená vlákna nečekají na objekt v pořadí podle priority ani nezabraňují inverzi priorit). Z těchto důvodů by mělo rozšíření implementovat své vlastní objekty synchronizace.
Jestliže se rozhodneme implementovat hard real-time subsystém pro NT v logické návaznosti na existující prostředí NT, mělo by zvolené prostředí reálného času být schopné:
- vynuceně kdekoliv přerušit chod NT (mimo kritický kód obsluhy zpracovávaného přerušení NT);
- odložit přerušení a obsluhu chyby normálního NT během provádění úkolů reálného času;
- při provádění úkolů reálného času zpracovávat přerušení reálného času.
Nápady s preemptivní činností ovládačů NT na vysoké úrovni aktivity IRQ (obsluh přerušení) a po neomezenou dobu činností reálného času se mohou jevit jako nebezpečné. Takovéto události jsou však běžné a NT je navržen tak, aby byl schopen se s nimi vypořádat: události s vysokým IRQL se „vtlačí“ na události s nižším IRQL, sběrnicové ovládání periferními DMA může odložit dokonce zpracování přerušení na nejvyšší úrovni, a zařízení PCI mohou blokovat přístupy procesoru k prostoru vstupů a výstupů (viz RTX a reakční doba přerušení). Z pohledu NT je činnost RTSS, který „krade“ své cykly, ekvivalentní s odebíráním a vracením z přerušení. Takovou událost lze v NT dobře řešit bez ohledu na dobu jejího trvání.
Potřebnou funkci subsystému reálného času obsahuje blok IPC se subsystémem Win32, s přístupem k funkci jádra NT (řízení přerušení, I/O porty, obsluha úkonů typu vypnout-havárie) a – což je velmi důležité – s kompatibilitou s Win32, alespoň na úrovni zdrojového kódu.
5. Struktura RTX
Stručně řečeno, rozšíření RTX je implementováno jako kolekce knihoven (statických i dynamických) a pomocí subsystému reálného času (RTSS) jako ovládač zařízení jádra NT a rozšířená HAL (obr. 1). Subsystém RTSS implementuje jak objekty reálného času, tak již dříve zmíněný plánovač. Knihovny poskytují přístup k subsystému prostřednictvím rozhraní RTX API, které tak uvedené objekty zpřístupňuje. Všimněte si, že RTX API lze vyvolat i ze standardního prostředí Win32 stejně jako v rámci RTSS. Při používání RTX API z Win32 se neposkytuje determinismus dostupný v rámci RTSS. Větší objem aplikačního vývoje lze spíše než v prostředí poskytovaném DDK realizovat v komfortnějším programovacím prostředí Win32. Vše, co je nutné ke konverzi programu používajícího Win32 do programu používajícího RTSS, je znovu aplikaci spojit (link), tentokrát s jinou kolekcí knihoven.
Aplikace RTX – stejně tak jako RTX samo o sobě – jsou implementovány na vrchol zaveditelných ovládačů NT, ačkoliv vyžadují propojení (hooks) s manažerem I/O. Toto je přirozený stav: ovládače Windows NT jsou z pohledu manažeru služeb NT uživatelsky nastavitelné a lze je zavést do adresního prostoru jádra.
6. Získaný výkon
Přidáním RTX k Windows NT/2000 se NT může chovat jako opravdový systém reálného času. RTX poskytuje Windows jak funkční schopnosti velmi výkonného všeobecně použitelného operačního systému, tak vysokou účinnost (pravděpodobnost 99,999 %, tj. méně než pět minut prostoje za rok), a to v jednom čase a na stejném počítači. Nezávislý plánovač vláken RTSS v RTX může běžet v popředí přerušení i zpracování vlákna Windows NT a může být používán na jednoprocesorovém nebo symetrickém několikaprocesorovém stroji beze změny jádra NT a ovládačů zařízení. Aplikace pak také nemusí čekat, než se nastartuje NT, to znamená, že může být spuštěna dříve než do tří sekund od spuštění počítače.
Doplněk RTX přinesl do operačního systému Windows schopnost provádět řídicí operace na tovární úrovni a začlenit funkci DSP a jiných pomocných koprocesorů přímo do softwaru. S příchodem dnešních extrémně výkonných a přitom cenově dostupných procesorů s taktovací frekvencí okolo 1 GHz se funkce koprocesorů mohou stát jednoduše softwarovými úlohami v časově kritickém prostředí, běžícími současně se standardními aplikacemi. Možnost úspory výdajů za hardware je přitom víc než zřejmá.
Názvosloví |
API Application Program Interface – rozhraní pro uživatelské programy |
APIC Advanced Programmable Interrupt Controller – zdokonalený programovatelný řadič přerušení |
COM Common Object Model – otevřená architektura umožňující výměnu dat mezi standardy OLE a ObjectBroker |
COTS Commercial Off-The-Shelf – komerčně dostupné (produkty, řešení) |
DDK Device Driver Kit – část návodu k Microsoft Windows NT/2000 |
DMA Direct Memory Access – přímý přístup do paměti |
DSP Digital Signal Processor – procesor pro zpracování signálu |
HAL Hardware Abstraction Layer – modul ve Windows NT/2000 poskytující časové služby vlastnímu jádru systému |
IPC InterProcess Communication Objects – synchronizační objekty pro komunikaci mezi procesy |
IRQ Interrupt Request – žádost o přerušení |
IRQL Interrupt Request Lines – úroveň žádosti o přerušení |
ISR Interrupt Service Request – požadavek na obsluhu přerušení |
PCI Peripheral Component Interconnect – standard sběrnice od firmy Intel, v současnosti dominující u PC |
RTSS Real-Time SubSystem – subsystém reálného času |
RTX Real-Time eXtension – programové rozšíření umožňující využívat Windows NT/2000 jako operační systém reálného času |
RTX API RTX Application Programming Interface – rozhraní pro uživatelské programy v RTX |
7. Nástroje na měření výkonu
Součástí RTX jsou i nástroje na měření výkonu, které umožňují vývojářům kvalifikovat a ladit výkon jejich hardwarových platforem.
Ksrtm je ovládač zařízení a utilita Win32 pro měření reakční doby přerušení časovače na úrovni HAL. Provoz v jádře jej relativně znecitlivuje vůči kolísání rychlé vyrovnávací paměti. Ksrtm také určuje, která komponenta NT nebo který ovládač zařízení způsobuje událost s nejdelší dobou reakce: po takové události získává Ksrtm adresu ISR přerušovací sekvence ze zásobníku a pak ji vyhodnotí vůči zavedenému modulu jádra NT.
Aplikace Srtm je jednoduchý nástroj na měření reakční doby časovače RTX API, který pracuje buď s RTSS nebo s Win32. Srtm vytváří sloupcový diagram, který realisticky odráží reakční dobu časovače spotřebovanou testovanou aplikací.
Nástroj Lpt určuje události s dlouhou reakční dobou vzhledem k událostem řízení sběrnice.
To, jak vypadá reálný čas ve Windows, si můžete jednoduše vyzkoušet: stačí stáhnout „RTXdemo“ ze stránek produktu RTX na www.datapartner.cz a nainstalovat jej ve svém počítači. V demu uvidíte popsané nástroje na měření v činnosti.
Spolu s RTX je k dispozici i samostatná aplikace TimeView – produkt pro analýzu časování a vzniku událostí. Tento nástroj zaznamenává v přirozeném pořadí spolu s časovými značkami vybrané události v systém i v aplikaci. Ukazuje sled spouštění a časování událostí, stejně jako přerušení, přepínaní kontextů vláken a vzájemné interakce aplikací.
Příklad měření provedeného na procesoru Pentium II 266 MHz je uveden v tab. 1.
8. Budoucí trendy
Původní verze RTX pracovala na systémech s jediným procesorem. Nejnovější verze pracuje na multiprocesorových systémech konformních se specifikací Intel Multiprocessor Rev 1.4. Tato specifikace dovoluje přerušením, aby byla řízena řídicím programem APIC, vhodným pro multiprocesorový systém. Pomocí APIC lze nasměrovat odlišná přerušení do různých sad procesorů. RTSS přiděluje jeden procesor systému k provozu vláken RTSS, zatímco zbývající procesory pracují s vlákny NT. Tento postup dramaticky zkracuje čekací dobu vláken reálného času (z 50 na méně než 13 µs) a přitom se zabrání procesoru ve „vyhladovění“ vláken NT, k čemuž může dojít v systému s jediným procesorem.
RTSS může také sloužit jako základna pro jiná prostředí reálného času, jako je Newmonics real-time založený na RTSS s virtuálním počítačem kompatibilním s platformou Java. Může být také spojen s jinými subsystémy NT, jako jsou Interix od firmy Softway. Jiné možnosti nabízí kombinace rozhraní COM s objekty RTSS přístupnými z Win32 nebo zpřístupnění COM v rámci prostředí RTSS.
9. Reference
Metoda rozšíření funkcí Windows NT/2000 o schopnosti reálného času s použitím RTX se v současné době úspěšně využívá v mnoha aplikacích po celém světě. Mezi nimi jsou velmi zajímavé a stojí za povšimnutí následující dvě reference.
Americká společnost Lockheed Martin Aeronautics si vybrala RTX k použití v systémech pro výcvik leteckých posádek – v simulátorech pro letectvo Special Operations Forces (SOF), což je součást vojenského letectva Spojených států (USAF). Lockheed Martin Aeronautics opustil stávající speciální architekturu použitou pro výcvikový systém AC-130H Gunship a nahradil ji komerčně dostupnou (COTS) platformou zahrnující RTX a Windows NT. Při převádění výsledků třicetiletého vývoje speciálního hardwaru i softwaru umožnil tento krok významně snížit náklady na hardware. Technici firmy Lockheed Martin mohou používat standardní nástroje prostředí Microsoft Windows, což jim umožní přidávat nové softwarové prvky a plynule spojovat funkční schopnosti Windows se stávajícím zdrojovým kódem výcvikového systému.
RTX a Windows NT Embedded byly začleněny do systému pro sběr dat a sledování a řízení kritických situací navrženého pro LSV 2 (Large Scale Vehicle 2), největší autonomní ponorku bez posádky na světě. Výsledné řešení sbírá data z 1 848 elektrických článků každých 3,7 s a sleduje nejen spotřebu energie a zbývající kapacitu baterií, ale i stupně napětí, teplotu a celkový stav prostředí, zahrnující přítomnost kouře nebo ohně. Operační systém je vsazen do 22MB paměti flash, přičemž zbyl dostatek paměti pro zachycování a archivaci výsledků 24hodinové a výzkumné periody získávaných z 18 procesorů obstarávajících sběr dat. Když dorazí ponorka LSV 2 do přístavu, je připojena na elektrický kabel, aby dobila baterie, a na kabel Ethernetu, přes který se stahují výsledky podmořského výzkumu přímo do sítě LAN výzkumného zařízení. Použitá technologie umožňuje vystavět řešení, jejichž poměr ceny a výkonu je v celém světě nepřekonaný.
10. Závěr
Windows NT i Windows NT Embedded jsou dva binárně kompatibilní systémy. Znamená to, že jestliže aplikace běží ve Windows NT, pak bude plně funkční i ve Windows NT Embedded. Spojením s knihovnou RTX získáme systém reálného času i pro Windows NT Embedded.
Doplněk RTX od firmy VenturCom prokázal, že s vybranou škálou rozšíření je možné vylepšit systém Windows NT/2000 tak, aby měl vlastnosti operačního systému reálného času a zároveň s tím byl nadále používán jako universální platforma. Výsledný systém vyhovuje tlakům determinismu, které jsou nutnou součástí světa reálného času, a současně poskytuje prostředí blízké širokému poli uživatelů.
dataPartner s. r. o.
www.datapartner.cz
|