Craftcom > Windows > Windows Vista > Kernel > I/O systém
Verze pro tisk
I/O systém

I/O Completion and Cancellation

Ve Windows Vista naleznete i změny v I/O systému, které zvyšují výkon především serverových aplikací. Tyto aplikace obyčejně používají synchronizační objekt completion port k tomu, aby počkali, než se obslouží asynchronní I/O požadavek. Když byl I/O požadavek obsloužen ve starších systémech, thread který ho vyvolal by provedl dokončovací práce. K tomu bylo ovšem zapotřebí, aby systém přešel na proces jemuž patří thread, který požadavek vyvolal. Došlo tak k přerušení prováděného kódu.
Ve Windows Vista nemusí nutně dokončovací práce provádět thread který byl autorem požadavku, ale jeden z threadů, který čeká na completion port, aby mohl pokračovat v práci. Tato relativně malá změna zamezí zbytečnému plánování a přepínání procesů a zvýší tak výkon aplikací a systému. Server navíc může obdržet výsledky více I/O operací v jednom požadavku a to odstraní zbytečné přechody do kernel-mode vrstvy.
Změnu kterou ale pocítí uživatel více, je model rušení synchronních I/O operací. Pokud jste se někdy z Windows NT 5.x pokoušeli dostat příkazem net view na off-line počítač, museli jste čekat než vyprší timeout. Aplikace nemá jinou možnost než čekat na timeout, protože nebyla možnost jí sdělit, že I/O operace selhala.
Ve Windows Vista může být většina I/O operací zrušena (včetně otevření souboru kterou požívají Explorer a Net View). Aplikace musí být ale upraveny aby se uživatele zeptaly, zda chtějí operaci zrušit. Většina aplikací které jsou součástí systému tuto podporu mají. Například dialogy na otevření nebo uložení souboru, které používá naprostá většina okenních aplikací, nyní umožňují zrušit operaci, když se snaží zobrazit obsah adresáře. U konzolových aplikací, jako například příkaz Net umožňuje zrušit I/O operaci stisknutím známé zkratky Ctrl+C. Můžete si to ověřit tak, že otevřete příkazovou řádku a na píšete:

net view \\neexistujicipc
Systém se bude snažit navázat spojení, ale jen ve Windows Vista bude moct uživatel operaci sám ukončit.
Dalším typem I/O operací, které mohou způsobit problémy jsou ty, u kterých ovladač nemůže jednoznačně určit, zda by je měl zrušit. Proces čekající na odpověď pak visí v paměti, nereaguje a nelze ho ukončit. Systém nemůže proces korektně ukončit, dokud nebudou všechny I/O požadavky dokončeny nebo zrušeny. Ve Windows Vista ovladač obdrží zprávu o ukončení procesu a problém s neukončitelnými aplikacemi je vyřešen.

I/O Priority

Windows již dlouho podporují prioritizaci procesů, ale teprve Windows Vista přichází i s modelem prioritizace I/O. Bez tohoto modelu mohou aplikace nebo služby běžící na pozadí (antivir, indexace souborů nebo defragmentace) narušovat odezvu aplikací běžících v popředí. Například když uživatel chce spoustit aplikaci nebo otevřít dokument, zatímco jiný proces klade požadavky na disk. V tomto případě dochází k čekání, než bude obsloužen požadavek aplikace / služby běžící na pozadí a to může vést třeba k nekontinuálnímu přehrávání multimédií.
Windows Vista uvádí dva nové typy I/O prioritizace, které mají pomoct upřednostnit aplikace běžící v popředí. Jsou to prioritizace jednotlivých I/O operací a rezervace šířky pásma. I/O systém zná 5 priorit, ale zatím se využívají pouze 4:

I/O priorita Použití
Critical Memory manager
High -
Normal Výchozí priorita
Low Výchozí priorita úlohy
Very low Práce na pozadí

Výchozí priorita je Normal s výjimkou Memory Manager-a, který má prioritu Critical, aby mohl v případě nedostatku paměti zapisovat data na disk. Windows Task Scheduler nastavuje úlohám (s normální vlastní prioritou) I/O prioritu Low a aplikace běžící na pozadí mají I/O prioritu Very low. Všechny operace jako Windows Defender nebo indexace běžící na pozadí tak mají I/O prioritu Very low. Dálší informace o prioritizaci I/O naleznete v originálním článku na TechNetu.
Rezervace pásma využijí zejména multimediální aplikace, protože spolu s MMCSS pomůže zajistit plynulé přehrávání. Aplikace nejprve od I/O systému zjistí, zda zařízení může dodávat data požadovanou rychlostí a pokud ano, tak si aplikace nechá rezervovat pásmo s definovanou rychlostí posílání požadavků o určité velikosti. I/O systém v tomto případě nebude obsluhovat jiné požadavky, které by rezervované pásmo omezovaly.
Poslední změna v I/O systému, která zde bude popsána, se týká velikosti I/O operací. Ve starších verzích Windows NT byly Memory Manager a I/O systém limitováni množstvím dat, které mohly být zpracovány jedním I/O požadavkem, konkrétně 64 KB. Aplikace ale obvykle posílají větší požadavky. Ty jsou rozděleny na několik menších o maximální velikosti 64 KB. Každá I/O operace si vyžádá přechod do kernel-mode a přenos na zařízení. Windows Vista již žádné limity na velikost I/O operací nemá a těží z toho několik upravených komponent běžících v user-mode. Například Explorer nebo příkaz Copy využívají operace o velikosti 1MB.

Mitch


© 2005 - 2011 Craft, craftcom.net
Všechna práva vyhrazena.
Šíření a kopírování textů, obrázků a jiných záznamů je bez předchozího souhlasu zakázáno.
Stránky vyhovují standardům: HTML 4.01 · CSS 2 · RSS 2
Čas zpracování: 100.028 ms