UDIčka pro vývojáře

Hardware a software tvoří základ výpočetní techniky, jeden bez druhého nemohou existovat a nemají smysl. O to, aby jej...


Hardware a software tvoří základ výpočetní techniky, jeden bez druhého nemohou
existovat a nemají smysl. O to, aby jejich vzájemná symbióza probíhala bez
problémů, se starají ovladače, drivery. Tyto malé kousky softwaru zajišťují
většinu komunikace mezi operačním systémem, potažmo aplikacemi, a konkrétním
"železem". Bohužel, ne vždy je k dispozici ten správný ovladač a když je, pak
zase nemusí fungovat zrovna nejlépe. Oba tyto problémy by se měl pokusit
vyřešit projekt pojmenovaný UDI (Uniform Driver Interface).
Výsledkem by měl být jednotný systém pro tvorbu ovladačů k hardwaru, který by
byl nezávislý na použitém operačním systému (OS). Jednou napsaný ovladač by pak
mohl být použit pod jakýmkoliv OS podporujícím standard UDI a to bez nutnosti
přepisování jediného řádku kódu. Právě tento nelehký úkol se pokusili vyřešit
zakladatelé projektu UDI, velcí výrobci jako například SCO, Compaq, HP, IBM,
Intel nebo SUN Microsystems. Z tohoto zkráceného výčtu lze asi nejlépe
uhodnout, co je hlavní cílovou platformou, ano, jsou jím klony UNIXU. Tento
operační systém totiž do dnešní doby stále ještě trpí nedostatkem kvalitních
driverů pro různý hardware. Právě to by měl vyřešit velice zajímavý projekt
UDI, jehož specifikace 1.0 spatřila světlo světa
1. září minulého roku.
Princip a cíle
Pokud se zamyslíte nad rozdíly mezi operačními systémy nebo mezi hardwarovými
platformami, bude vám ihned jasné, že úkol vytvoření jednotného systému pro
nezávislé ovladače není v žádném případě jednoduchý. Tvůrci UDI se pokusili
vyřešit tento problém podobně, jako je tomu u Javy, konkrétně u Java Virtual
machine (JVM). Vlastní operační systém je totiž pro UDI ovladače plně skryt v
tzv. UDI environmentu (prostředí). Podob-ně jako u JVM stačí pro danou
platformu napsat toto prostředí a ovladače mohou běžet bez jakékoliv změny.
Tento příměr ovšem neplatí doslova, u UDI není generován žádný bytekód,
kompatibilita je zaručena pouze na úrovni zdrojového kódu, ovšem i to je velký
pokrok proti dosavadní praxi. Vlastní komunikace s takovýmto zařízením pro
ostatní aplikace je poté realizována standardní cestou, kdy I/O operace volají
služby jádra OS (system call), které jsou mapovány na UDI funkce.
Typy ovladačů
Rozdíly mezi jednotlivými zařízeními jsou však natolik velké, že zobecňování
jednotlivých zařízení nemohlo jít příliš daleko. Proto ve specifikaci UDI
najdete speciální typy určené pro ukládací hardware (pevný disk, pásky,
CD-ROM), SCSI zařízení, síťové karty, USB, Fibre Channel a pro zařízení
připojená na paralelní a sériový port. Samostatnou kapitolu pak tvoří ukazovací
zařízení (myš, tablet), klávesnice a bus bridge (propojování sběrnice včetně
kontroly přerušení). U všech těchto typů je určitě zajímavá i možnost vytvořit
pseudo-device ovladač, tedy pouze software bez konkrétního hardwaru (tak lze
lehce vytvořit RAM-disk, loopback zařízení apod.).
Propojování ovladačů
Jak je vidět z předchozího výčtu typů, musí mezi těmito typy zařízení existovat
nějaká možnost komunikace. Představme si praktický případ, jehož schéma vidíte
na obrázku. Ve spodní části je konkrétní stav hardwaru a v horní části pak jeho
obraz v operačním systému. Na hlavní I/O Bus Adapter jsou připojeny další dva
adaptéry, na které jsou teprve připojena koncová zařízení jako je disk,
klávesnice nebo monitor. Podobná hierarchická struktura je zachována i ve
struktuře ovladačů UDI. Aby jednotlivé ovladače spolu mohly komunikovat, jsou
mezi nimi vytvořeny tzv. kanály. Na těchto kanálech je určitá povolená sada
operací, sloužící k výměně dat. Ani zde ovšem pouze s abstraktním kanálem nelze
vystačit a proto byly ve standardu UDI implementovány tzv. metajazyky
(metalanguages). Ty definují operace a předávaná data po jednotlivých
rozhraních. Například zařízení připojená pomocí SCSI sběrnice budou používat
právě metajazyk pro SCSI rozhraní.
Je to na něco?
Přiznám se otevřeně, že tato myšlenka mne přímo fascinuje. Stále mám totiž v
paměti své poslední zkušenosti se zvukovou kartou pod Linuxem. Dalším problémem
je, že již při koupi nového hardwaru musí uživatel takových operačních systémů
(tedy ne Windows) velice obezřetně shánět informace a zjišťovat, jestli pro
vybrané zařízení najde správně fungující ovladač. To všechno by měl odstranit
právě standard UDI. Zajímavá je i myšlenka podpory dosud neexistujících
operačních systémů, která by mohla umožnit vývojářům vytvořit nejen nový OS,
ale i novou architekturu.
Samozřejmě, v současné době je tento systému výhodný zejména pro již existující
OS. Asi nejvíce si od něj slibuje firma SCO, která má již dokonce připraven
development kit, který je na jejich webových stránkách ke stažení. Dalšími
operačními systémy by pak z těch známějších měly být Tru64 UNIX od firmy
Compaq, IBM AIX a Solaris od firmy Sun Microsystem. Zajímavá je však reakce
linuxové komunity, která na projekt nereaguje příliš nadšeně. Hlavním garantem
celé portace na Linux je firma Intel, reakce na jejich nabídky jsou ale zatím
spíše rozporuplné. Ačkoliv například Linus Torvalds projekt podpořil, jiní
vývojáři jsou spíše skeptičtější. Bojí se totiž výsledků celé akce, očekávají
totiž, že výrobci hardwaru nebudou uvolňovat své ovladače ve formě zdrojových
kódů a budou se je pokoušet pro jednotlivé unixové klony prodat. To by
samozřejmě nabořilo celou filozofii GPL softwaru.
Právě na nich ale asi závisí osud celého standardu. Pokud oni na tento systém
přistoupí, začne se výrobcům hardwaru pomalu vyplácet psát ovladače i pro UDI.
A uživatelé budou moci nakupovat nový hardware s menšími obavami než dosud.
Zajímavé odkazy
http://www.projectudi.org/ hlavní centrála projektu
http://www.sco.com/udi/sco/udidk.html development kit pro UnixWare 7.0
9 3620 / als









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.