Gonilniki naprav

 

Namen gonilnika naprave

Namen gonilnika naprave je rokovanje z zahtevki, ki jih v zvezi z napravo danega tipa posreduje jedro operacijskega sistema.Vmesnik za jedro mora biti dobro definiran in konsistenten. Izoliranje  programske kode, specifične za dano napravo  od jedra  poenostavlja dodajanje novih naprav.
 
 

Tipi gonilnikov naprav

Gonilnik naprave je programski modul, ki je lociran v jedru in predstavlja programski vmesnik do aparaturne naprave. taka naprava je na primer krmilnik diska ali traku ali omreľni krmilnik. Pri sistemu UNIX klasificiramo gonilnike glede na tipe naprav:

Kdaj kličemo gonilnik naprave


 
 

Nekateri zahtevki (na primer za vhodne ali izhodne operacije izhajajo neposredno iz sistemskih klicev v uporabnikovem programu. Nekateri drugi zahtevki, kot na primer konfiguriranje, pa so posledica aktivnosti med zagonom operacijskega sistema.
 
 
 

Mesto gonilnika (pri UNIX)

Primer branja enega znaka

Primer predstavlja branje enega znaka s terminala v "surovem" načinu (raw mode).

Slika podaja zaporedje dogodkov od klica v uporabnikovem programu naprej .


 
 
 

Bralni zahtevek gonilniku

Uporabniški program pokliče sistemski klic read  (C-1).V sistemskem klicu pride do prenosa treh argumentov: opisnika datoteke(fd), kazalec na mesto,kjer pomnimo znak (buf) in celoštevilčno spremenljivko (vrednost 1), ki pove vmesniku read , koliko bajtov želimo prebrati. Proces  je blokiran v gonilniku, ker je medpomnilnik, kjer naj bi bil znak,prazen. .
 

Sprejem znaka

Kasneje vtipkamo na primer znak "k" (I-4). Koda znaka je pomnjena v podatkovnem registru naprave (I-5).
 
 

Generiranje prekinitve

Ob vtipkanju znaka se spremeni status krmilnika naprave, ki poąlje procesorju (CPU) prekinitveni zahtevek. Ta sproži rokovalnik prekinitev (I-6). Trenutno tekoči proces je pred tem prekinjen in njegovo stanje shranjeno, da se bo lahko kasneje nadaljeval.
 
 

Rokovalnik prekinitev servisira prekinitev

Rokovalnik prekinitev (včasih mu pravimo tudi prekinitvena servisna rutina) pomni znak v lokacijo, ki jo poznajo tudi ostali moduli gonilnika. Zatem obudi proces, ki je moral zaradi čakanja na znak zaspati. Končno izstopi in pri tem restavrira proces, ki je bil prekinjen ob servisiranju prekinitve.
 

Vračamo znak

Ko kasneje razvrščevalnik procesov zbujenemu procesu dovoli nadaljevanje, je brani znak že v ustreznem medpomnilniku. Proces ga premesti v uporabniški naslovni prostor (C-11). Vmesnik read igonilnika naprave vrne nadzor jedru, ta pa uporabniąkemu programus (C-13).
 

Povzetek

Zgled poenostavljeno  predstavlja branje znaka. Opazimo,kako uporabniški program terja servis jedra. Vidimo še, da je obravnava prekinitvenih zahtevkov asinhrona glede na druge aktivnosti gonilnika.