Jste zde

Provozování aplikací na operačních systémech Windows NT/2000/XP

Z pohledu programátora mají operační systémy založené na jádře NT svá specifika neslučitelná s

předchozími verzemi Windows. Při pokusu o spuštění aplikace napsané právě pro Windows95/98/ME může docházet k

nepříjemným překvapením nejen při jejich spouštění, ale i při běhu.

Problémy s provozováním některých aplikací na operačních systémech Windows NT/2000/XP nejsou způsobeny ani tak operačním systémem samotným, jako spíše procesorem, resp. využíváním všech jeho možností. Již mikroprocesory Intel 80386 totiž umožňovali dva druhy činnosti:

  • reálný režim (real mode, režim reálné adresy): V reálném režimu jsou procesory x86 plně kompatibilní se svými předchůdci. Pracují naprosto stejně jako 8086 (8088), používají 20 bitů pro tvorbu adresy, která je vytvářena podle stejného modelu jako je tomu u 8086. Umožňuje adresovat maximálně 1MB operační paměti.
  • chráněný režim (protected mode, režim virtuální adresy) je neslučitelný s 8086. Tento režim podporuje multiprocesing (paralelní zpracování více programů) a je tedy nezbytné, aby procesor v tomto režimu poskytoval ochranu mezi jednotlivými spuštěnými programy a různé úrovně oprávnění přístupu k prostředkům počítače. Rovněž je využíván jiný model pro vytváření adresy, která se skládá ze dvou 16bitových složek nazývaných selektor a offset za pomoci tzv. tabulek deskriptorů. Zatímco procesory 286 umožňovaly tímto způsobem adresovat maximálně 16MB operační paměti již od provedení 386 jsou to dnešní 4GB.

Již ze stručnéhop popisu režimů činnosti procesorů je jasné, oč výhodnější je využívání chráněného režimu, který se tak sám stará o řadu provozních činností, které v reálném režimu musí obstarávat operační systém (adresování větší operační paměti, stránkování, multitasking), což se pochopitelně negativně projevuje na celkovém výkonu počítače i na jeho stabilitě a tedy i spolehlivosti. Protože však chráněný režim mikroprocesorů neumožňuje realizovat některé operace, které v reálném režimu obstarává sama aplikace (např. přímý přístup na I/O porty) a naopak reálný režim neumožňuje provádět činnosti nutné pro běh aplikace, pokud si je sama nevykoná, nelze vzájemně zaměňovat programy napsané pro různé druhy činnosti procesorů. I proto se v roce 1993 řada Windows rozdělila na 16bitové (později 32bitové) založené na operačním systému MS-DOS a s procesorem pracujícím v reálném režimu, nazývané postupně Windows3, 3.11, 95, 98, 98SE, ME a rovnou 32bitové Windows NT podporující chráněný režim procesorů a zcela postrádající MS-DOS (pro aplikace běžící v prostředí DOSu je k dispozici pouze jeho emulátor).

Velká obliba Windows 95/98/ME vycházela právě ze zpětné kompatibility s předchozími verzemi, díky které bylo možné spouštění starších aplikací i na novém operačním systému. Řada Windows NT/2000/XP však často vyžadovali zcela nové a jinak napsané programy a proto se rozšířili především v podnikové sféře, kde byl dostatek financí pro vývoj nových aplikací. Dnes je však již řada Windows 95/98/ME na ústupu a Microsoft ohlásil ukončení podpory pro tyto systémy, neboť v podobě Windows XP mělo dojít ke sloučení obou řad (stabilita WinNT a kompatibilita Win98). Ačkoli se o kompatibilitě Windows XP se staršími aplikacemi dá úspěšně pochybovat, je zprovoznění starších programů přeci jen jednodušší než na Windows 2000.

Důvody pro použití režimu kompatibility

Různí programátoři píší své aplikace různě. Někdo se snaží napsat svůj program tak, aby zaručeně spolehlivě fungoval v rámci jediného operačního systému, jiní si zakládají na jeho přenositelnosti i za cenu případných chyb během jeho provozování. Vždy jsou však programy určeny pro provozování na některém operačním systému, byť by v ideálním případě měly být použitelné na všech. Tato doporučení, respektive označení operačního systému, na kterém program běží, nelze podceňovat. Některé programy jsou dokonce určeny pouze pro jeden konkrétní operační systém a při své instalaci či spouštění verzi operačního systému kontrolují. V případě, že nesouhlasí operační systém s tím, co má program zapsán ve svých systémových informacích, odmítne se spustit či nainstalovat a vyhodí chybové hlášení. Toto je však ideálním případem. Mnohem častěji dochází k tomu, že se aplikace spustí i na „nesprávném“ operačním systému a z pohledu uživatele se chová jako normálně pracující. V okamžiku, kdy se uživatel pokusí o operaci neslučitelnou s funkcí operačního systému, dojde k pádu programu či celého systému. V lepším případě pak dojde pouze ke ztrátě práce v aplikaci prováděné, v horším k poškození dat na HDD. Proto je vhodné zavádět režim kompatibility i pro aplikace, které nedisponují označením funkce pod příslušným operačním systémem. Je to preventivní opatření, které však zabrání velkým škodám. Režim kompatibility je vhodné zavádět u všech aplikací, které nedisponují označením Designed for WinNT, Designed for Win2000 nebo Designed for WinXP.

Zprovoznění aplikací na Windows XP

Vývojáři Microsoftu od počátku předpokládali potřebu spuštění aplikací napsaných pro Windows 95/98/ME na tomto systému. Proto je jeho nedílnou součástí též softwarové vybavení pomocí kterého je možné každému spustitelnému souboru samostatně nastavit parametry spouštění, tzv. Compatibility mode. Jsou dva způsoby, jak jej aktivovat:
 

V nabídce START => Programy (Všechny programy) => Příslušenství vybrat Průvodce kompatibilitou programů a nechat se vést pokyny na obrazovce. Poskytne výběr:

  • Zvolit ze seznamu programů – Program prohlédne obsah pevného disku a vybere z něj všechny spustitelné soubory. Nevýhodou je, že prohlíží pouze adresáře uvedené v registrech systému, takže pokud se program neinstaluje, případně je uložen mimo root disku a prohledávané adresáře, systém jej prostě nenajde.
     
  • Použít program z jednotky CD-ROM - Průvodce aplikuje režim kompatibility pro celý CD či DVD disk.
     
  • Vyhledat program ručně – Průvodce umožní ruční vyhledání spustitelného souboru.


Po vybrání příslušného programu pak již stačí vybrat ze seznamu operační systém, který má být pro aplikaci „emulován“ zadat případná omezení jako je rozlišení obrazovky a počet barev a vše potvrdit. Průvodce kompatibilitou programů pak ještě nabídne možnost vyzkoušení nastaveného režimu (spuštění aplikace) a následně se zeptá, chce-li uživatel nastavení uložit, vyzkoušet jiné či průvodce ukončit. V případě uložení nastavení parametrů spouštění je navíc uživatel vyzván k odeslání informací o spouštěné aplikaci a nastaveném režimu kompatibility do společnosti Microsoft, které však není nutné provádět a průvodce končí.



Výrazně jednodušším a rychlejším způsobem je vyhledání spustitelného souboru pomocí Průzkumníka Windows, jeho označení a otevření okna vlastností souboru (menu Soubor=>Vlastnosti nebo kliknutí pravého tlačítka myši na ikoně a vybrání položky Vlastnosti). V záložce Kompatibilita stačí zaškrtnout políčko „Tento program spustit v režimu kompatibility pro:“ a vybrat příslušný operační systém. I zde jsou doplňkové možnosti nastavení. Po potvrzení tlačítkem Použít či OK lze aplikaci spouštět již zcela normálně.

Windows 2000

Na operačním systému Windows 2000 je zavedení Compatibility mode výrazně složitější. Microsoft pro spouštění starších aplikací pod tímto systémem již od svého začátku dodával utilitu apcompat.exe ( Application Compatibility Program ) uloženou na instalačním CD Windows 2000 v adresáři Support/Tools , kterou bylo možné režim kompatibility zavést. Jak se však postupně vyskytovaly chyby a nedostatky operačního systému, Microsoft vydával opravné balíky (Service Packy), které funkci této utility znemožňovaly. Proto Microsoft začal vydávat též Application Support Tools pro jednotlivé service packy. Výsledkem je, že pro použití utility apcompat je nutné mít nainstalován též příslušný balík Support Tools, který obsahuje správnou verzi utility. Nelze aplikovat Support Tools pro Windows 2000 SP4 na systém s nainstalovaným SP2 a naopak. Přestože na čistém operačním systému, tedy bez dalších aplikací, toto funguje, svoji roli mohou hrát i ovladače k hardware, a proto je nutné používat vždy správnou verzi Support Tools.

Protože dnes již nikdo pravděpodobně nepracuje s původní verzí Windows 2000, ale má nainstalovan některý Service Pack, lze předpokládat, že si nainstaluje i příslušný Support Tools. Utilita apcompat.exe se pak nachází v nabídce Start => Programy => Příslušenství => Windows Support Tools => Kompatibilita programu. Pomocí tlačítka Browse vybereme příslušný spustitelný soubor, na který má být režim kompatibility aplikován, přepínačem zvolíme operační systém a zaškrtneme doplňkové volby:

  • Disable Heap Manager on Windows 2000 – Pro běh aplikace nebude využíván správce paměti Windows2000
     
  • Use the pre-Windows 2000 temp path – Pro aplikaci bude jako odkládací adresář využit /Temp, místo obvyklého úložiště v Document and Settings. Tím se lze vyhnout problémům s dlouhými názvy souborů.
     
  • Correct disk space detection for 2-GB+ drives – Upraví informace o volném místě na HDD u disků větších než 2GB .
     
  • Store Application Compatibility settings – Uloží nastavení Compatibility mode do registrů systému pro příští použití. Aplikaci je poté možné vyvolávat v režimu kompatibility „klasickým způsobem“.

Režim kompatibility však lze aktivovat též z příkazové řádky pomocí následující syntaxe:

apcompat [-?] [-v version name] [-x program path] [-d] [-t] [-g] [-k] 

Parametry:

-? Nápověda 
-v <version name> Výběr operačního systému
  1 WindowsNT4 SP3
2 WindowsNT4 SP4
3 WindowsNT4 SP5
4 Windows98
5 Windows95
-x <program path> Cesta ke spustitelnému souboru 
-d Vypnutí správce paměti
-t Nastavení odkládacího adresáře
-g Úprava informací o HDD
-k Uložení nastavení

Potvrzením tlačítka OK se spustí aplikace. Velmi nepříjemným jevem je, že v případě chybného nastavení je třeba znovu spustit utilitu apcompat a nastavovat znovu všechny parametry režimu kompatibility. Vyplatí se proto udělat si na ploše zástupce od této utility.

Známé problémy

Ačkoli operační systém Windows 2000 disponuje utilitou apcompat, je třeba upozornit, že tato není lékem pro všechny aplikace. Sice ve většině případů umožní spuštění aplikací, avšak již neumí zajistit jejich korektní funkci. Stále může v některých případech docházet k jejich nestabilitě či chybným operacím. Ve Windows XP je situace výrazně lepší, neboť spuštění aplikace dává poměrně kvalitní záruku jejího stabilního chodu. Přesto jsou režimy kompatibility schopny odstranit pouze část problémů, s jakými se uživatel může na operačních systémech založených na jádře NT setkat. Stále totiž tyto systémy udržují procesor v chráněném režimu, brání aplikaci v provádění operací, které by mohly vést k nestabilitě operačního systému, a neposkytují aplikacím příslušné ovladače pro využívání hardware počítače. Proto ani pomocí režimu kompatibility nelze na operačních systémech Windows NT využívat v aplikacích například přímý přístup k IO portům.
 

Oldřich Mrázek
mrazek@ HW.cz

DOWNLOAD & Odkazy

Hodnocení článku: