設(shè)備驅(qū)動(dòng)程序是I/O系統(tǒng)的高層與設(shè)備控制器之間的通信程序,其主要任務(wù):
????接收上層軟件發(fā)來的抽象I/O要求,如read、write等命令;
????再把它轉(zhuǎn)化為具體要求,發(fā)送給設(shè)備控制器,啟動(dòng)設(shè)備去執(zhí)行。
????反方向,它也將由設(shè)備控制器發(fā)來的信號(hào),傳送給上層軟件。
1.驅(qū)動(dòng)程序的功能
(1)接收由與設(shè)備無關(guān)的軟件發(fā)來的命令和參數(shù),并將命令中的抽象要求,轉(zhuǎn)換為與設(shè)備相關(guān)的低層操作序列;
(2)檢查用戶I/O請(qǐng)求的合法性,了解I/O設(shè)備的工作狀態(tài),傳遞與I/O設(shè)備操作有關(guān)的參數(shù),設(shè)置設(shè)備的工作方式;
(3)發(fā)出I/O命令,如果設(shè)備空閑,便立即啟動(dòng)I/O設(shè)備,完成指定的I/O操作;如果設(shè)備忙碌,則將請(qǐng)求者掛在設(shè)備隊(duì)列上等待;
(4)及時(shí)響應(yīng)由設(shè)備控制器發(fā)來的中斷請(qǐng)求,并根據(jù)其中斷類型,調(diào)用相應(yīng)的中斷處理程序進(jìn)行處理。
2.設(shè)備驅(qū)動(dòng)程序的特點(diǎn)
(1)驅(qū)動(dòng)程序是與設(shè)備無關(guān)的軟件和設(shè)備控制器之間通信和轉(zhuǎn)換的程序。
(2)驅(qū)動(dòng)程序,與設(shè)備控制器和I/O設(shè)備的硬件特性,緊密相關(guān)。?????
(3)驅(qū)動(dòng)程序與I/O設(shè)備所采用的I/O控制方式緊密相關(guān)。
(4)由于驅(qū)動(dòng)程序與硬件緊密相關(guān),因而其中的一部分必須用匯編語言編寫。
(5)驅(qū)動(dòng)程序應(yīng)允許可重入,一個(gè)正在運(yùn)行的驅(qū)動(dòng)程序常會(huì)在一次調(diào)用完成前被再次調(diào)用。
3.設(shè)備處理方式
具體分類
(1)為每一類設(shè)備設(shè)置一個(gè)進(jìn)程,專門用于執(zhí)行這類設(shè)備的I/O操作。這種方式比較適合于較大的系統(tǒng);
(2)在整個(gè)系統(tǒng)中設(shè)置一個(gè)I/O進(jìn)程,專門用于執(zhí)行系統(tǒng)中所有各類設(shè)備的I/O操作。也可以設(shè)置一個(gè)輸入進(jìn)程和一個(gè)輸出進(jìn)程,分別處理系統(tǒng)中的輸入或輸出操作;
(3)不設(shè)置專門的設(shè)備處理進(jìn)程,而只為各類設(shè)備設(shè)置相應(yīng)的設(shè)備驅(qū)動(dòng)程序,供用戶或系統(tǒng)進(jìn)程調(diào)用。這種方式目前用得較多。
4.驅(qū)動(dòng)程序處理過程
I/O設(shè)備與控制器間的通信轉(zhuǎn)換程序
????了解抽象命令,了解控制器內(nèi)部的寄存器結(jié)構(gòu)
與硬件密切相關(guān),每類設(shè)備配備一種驅(qū)動(dòng)程序
????功能:接受解釋指令(有通道的系統(tǒng),自動(dòng)通道程序)、相關(guān)判斷、發(fā)送設(shè)備命令、響應(yīng)中斷
????特點(diǎn),控制方式不同程序不同,部分固化進(jìn)硬件,代碼可重入。

5.?I/O控制方式
程序I/O方式
1、中斷驅(qū)動(dòng)I/O方式
2、直接存儲(chǔ)器訪問DMA(字節(jié)—塊)
3、I/O通道控制方式(組織傳送的獨(dú)立)
宗旨:減少主機(jī)對(duì)I/O控制的干預(yù),將CPU從繁雜的I/O控制事物中解脫出來。