Sdílet prostřednictvím


Úvod k objektům kontroleru

Jak název napovídá, objekt kontroleru obvykle představuje fyzický ovladač zařízení s připojenými zařízeními. Ne-WDM ovladač nejnižší úrovně pro soubor podobných zařízení řízený fyzickým řadičem může vytvořit objekt řadiče a použít ho k synchronizaci vstupně-výstupních operací mezi připojenými zařízeními. Ovladač implementuje rutinu ControllerControl a volá rutiny podpory objektů kontroleru správce vstupně-výstupních operací.

Poznámka:

Použití objektů kontroleru není podporováno v ovladačích WDM.

Obecně platí, že ovladače používají objekty kontroleru k synchronizaci operací s připojenými zařízeními, pokud jsou splněna následující kritéria:

  • Kontroler neprovádí dlouhé operace bez přerušení, takže ovladač nemusí vytvářet vlákno vyhrazené pro zařízení nebo používat systémová pracovní vlákna.

  • Zařízení připojená k řadiči jsou podobná. To znamená, že se nejedná o zařízení s úplně odlišnými fyzickými vlastnostmi nebo funkčními funkcemi, jako jsou klávesnice a myš zařízení, která mohou být připojena k klávesnici a pomocnému ovladači zařízení.

  • Ovladač je navržený tak, aby byl monolitický: jednovrstvý vzhledem k řadiči zařízení a připojeným fyzickým zařízením, a ne jako ovladač portu (pro řadič) s jedním nebo více ovladači třídy (pro připojená zařízení) vrstveným nad ovladačem portu.

Ovladače zařízení s vstupně-výstupními kanály a sadou objektů logických zařízení mohou také použít objekt kontroleru k synchronizaci vstupně-výstupních operací mezi kanály takového zařízení nebo mezi kanály takového zařízení.

Objekt kontroleru nemá žádný název, a proto není cílem vstupně-výstupních požadavků. Jedná se jednoduše o synchronizační mechanismus serializace vstupně-výstupních operací ze sady objektů zařízení. Vzhledem k tomu, že objekt kontroleru nemá žádný název, je neviditelný pro subsystémy chráněné uživatelským režimem, které nemůžou vytvářet vstupně-výstupní požadavky zařízení bez získání popisovače objektu souboru, který představuje objekt cílového zařízení. Objekt kontroleru je také neviditelný pro ovladače vyšší úrovně, které nemohou připojit vlastní objekty zařízení k objektu kontroleru. Jinými slovy, ani správce vstupně-výstupních operací, ani ovladač vyšší úrovně nemohou inicializovat IRP požadující vstupně-výstupní operace na zařízení reprezentovaném objektem řadiče. Vstupně-výstupní požadavky se vždy vydávají objektům zařízení. Objekt kontroleru může používat pouze ovladač.

Synchronizace a překrývající se vstupně-výstupní operace

Monolitické ovladače fyzických zařízení s funkcemi, jako jsou ovladače disku AT, nejsou nutné k synchronizaci vstupně-výstupních operací zařízení použít objekt kontroleru. Například zapisovač ovladače může místo použití objektu kontroleru zkusit něco jako následující metodu synchronizace:

  • Nastavte pojmenované objekty zařízení tak, aby představovaly zařízení, která jsou cílem pro vstupně-výstupní požadavky.

  • Udržovat informace o stavu (například sada příznaků Zaneprázdnění zařízení v jednotlivých rozšířeních zařízení nebo v jednom rozšíření zařízení) označující, který objekt zařízení je cílem aktuální vstupně-výstupní operace.

  • Proveďte vstupně-výstupní operace pro právě zaneprázdněný objekt zařízení a znovu vyžádáte příchozí IRP pro ostatní objekty zařízení, dokud nebude aktuální IRP dokončen.

Předchozí technika synchronizace serializuje zpracování protokolu IRP pro všechny objekty cílového zařízení ovladače. Všimněte si, že to také nutí ovladač dokončit aktuální IRP, předtím než routine StartIo může začít zpracovávat další IRP, což bohužel snižuje výkon ovladače.

Pokud se některé operace zařízení můžou překrývat, může použití objektu kontroleru zvýšit propustnost vstupně-výstupních operací ovladače, protože tato metoda synchronizace umožňuje ovladači určit, jestli se operace mohou překrývat těsně před nastavením fyzického zařízení. Například řadič disku může ovladači umožnit překrývat hledání na jednom disku s operacemi čtení a zápisu na jiném disku.

Použití objektu kontroleru je navíc relativně snadný způsob synchronizace vstupně-výstupních operací pro více než jeden cílový objekt zařízení prostřednictvím jednoho fyzického zařízení, jako je například řadič disku AT. Použití objektu kontroleru umožňuje monolitickému ovladači synchronizovat vstupně-výstupní operace napříč sadou pojmenovaných objektů zařízení, aniž by bylo nutné udržovat stav pro každé zařízení a řadič zařízení v jednom nebo více rozšířeních zařízení a bez nutnosti znovu zadávat fronty IRPs.

Některá zařízení, která jsou navržena tak, aby překrývala I/O operace, jako jsou full-duplex sériové kontrolery nebo bus-master adaptéry, mají obecně ovladače, které nastavují interní fronty pro IRPs.