V sklopu računalniškega sistema je več krmilnikov perifernih naprav (device controllers). Dovolj tipično so ti krmilniki priključeni na skupno vodilo, ki omogoča dostop do pomnilnika. Na posamezen krmilnik je lahko povezanih tudi več naprav. Primer takega krmilnika je SCSI krmilnik. (Small Computer System Interface). Naloga krmilnika je premik podatkov med periferno napravo in lokalnim pomnilnikom.
Za start posamezne vhodno-izhodne operacije mora CPE vpisati ustrezne kode v registre v perifernega krmilnika. Krmilnik nato izvede ustrezno operacijo (običajno prenos) in nato obvesti centralno procesno enoto, da je operacija zaključena. Temu dogodku pravimo prekinitveni zahtevek.
Tako situacijo normalno posredno sproľi programski proces, ki zahteva prenos podatkov. Po takem zahtevku lahko program čaka, da se vhodno-izhodna operacija zaključi (sinhrona vhodno-izhodna operacija), ali pa program teče dalje hkrati s potekom vhodno-izhodne operacije. V tem primeru potrebujemo še primeren sistemski klic, ki omogoči procesu, da kasneje počaka na zaključek sproľene vhodno-izhodne operacije. Sistem mora imeti moľnost istočasnega sledenja večjemu ątevilu vhodno-izhodnih zahtevkov. Zato mora imeti tabelo z opisom stanja posameznih naprav (periferna statusna tabela, device status table). V taki tabeli so normalni podani: tip posamezne naprave, njeni naslovi, stanje).
Ko pride do prekinitvenega zahtevka, operacijski sistem ugotovi,
katera naprava ga je povzročila, naslovi ustrezni element periferne statusne
tabele in ustrezno popravi njegove podatke (status, števce podatkov ipd).
![]() |
Ko je vhodno-izhodna operacija zaključena, pogleda sistem, kateri proces je čakal na njen zaključek, in ga sprosti za nadaljevanje. Tak način vhodno-izhodnih operacij je asinhron. |
Običajno so vse vhodno-izhodne inštrukcije zaščitene in normalnemu uporabniku prepovedane. Računalnik jih izvaja le, če je v takoimenovanem sistemskem stanju (kernel mode, system mode).
S stališča operacijskega sistema mora biti zagotovljena čim večja neodvisnost od posebnosti posameznih perifernih naprav oziroma njihovih krmilnikov. Zato vhodno-izhodni podsistem običajno sestavljajo naslednji podsklopi:
Ustrezno vmesno
polje za pomnenje podatkov (pri sistemu UNIX so to bloki medpomnilnika
pri diskih in drugih blokovnih napravah, c-liste pri terminalih in drugih
znakovnih napravah),
Splošen
vmesnik do gonilnikov perifernih naprav,
Gonilniki
(drivers) za posamezne vrste perifernih naprav.
Vsaki periferni napravi lahko ustreza poseben gonilnik, če pa je več naprav istega tipa, lahko imamo en gonilnik za vse take naprave (na primer diske). Sistem lahko podpira tudi takoimenovane programske naprave (software devices), katerim ni prirejena nobena fizična periferija. Tako bi lahko na primer obravnavali pomnilniške lokacije, ki so sicer procesu nedostopne.