Struktura gonilnika


Gonilnik ima naslednje tipične rutine:

Inicijacijsko rutino: To pokliče sistem ob naložitvi gonilnika

Začetno rutino: S to rutino sproži gonilnik postopke za začetek prenosa podatkov.

Skupino dispečerskih rutin (na primer open, close, read, write,..): To so v bistvu glavne rutine, ki jih nudi gonilnik  navzven. Ko želimo izvedbo neke vhodno izhodne operacije, tvori upravnik vhoda-izhoda nov paket IRP in ga posreduje primerni dispečerski rutini.

Prekinitveno servisno rutino (ISR) : opravi le najnujnejše, saj dela v režimu, ko ni prekinjana. Zato nato uvrsti v posebno čakalno vrsto "rutino z zamaknjenim klicem"  (DPC, Deferred Procedure Call), ki bo kasneje opravila preostalo delo. Prekinitveno servisne rutine imajo le gonilniki prekinitveno gnanih naprav. Gonilnik datotečnega sistema  na primer take rutine nima.

Rutino z zamaknjenim klicem (DPC):  Ta opravi večino vhodno - izhodnega dela, ki ji ga je zapustila prekinitveno servisna rutina.

Eno ali več zaključnih rutin

Eno ali več rutin za prekinitev vhodno izhodne operacije

Odlagalno (Unload) rutino: Ta sprosti sistemske resurse, ki jih zaseda gonilnik. Gonilnike lahko nalagamo ali odlagamo med delovanjem sistema.

Rutino za čiščenje pri zaustavitvi računalnika

"Error logging" rutino. Ta obvešča o napakah upravnika vhoda/izhoda, ta pa povzroči zapis informacije o tem dogodku v "log" datoteko.


Problem sinhronizacije

Gonilniki morajo imeti sinhroniziran dostop do skupnih podatkov, sicer lahko pride do napak.


 
 

Na enoprocesorskih sistemih zagotavlja sinhronizacijo dvig IRQL pred spreminjanjem neke strukture. Pri večprocesorskih sistemih pa to ne zadošča in se uporablja tehnika "spinlock".