超聲波探傷系統(tǒng)驅(qū)動(dòng)程序的作用
超聲波探傷系統(tǒng)驅(qū)動(dòng)程序的分類(lèi)
探傷系統(tǒng)將設(shè)備分為三種基本類(lèi)型:字符設(shè)備、塊設(shè)備和網(wǎng)絡(luò)設(shè)備,每個(gè)模塊一般為其中的某一類(lèi),但也可以構(gòu)造一個(gè)大的模塊并在其中實(shí)現(xiàn)不同類(lèi)型的設(shè)備驅(qū)動(dòng)。為了提高設(shè)備驅(qū)動(dòng)的伸縮性和可擴(kuò)展性,最好為每個(gè)新功能創(chuàng)建一個(gè)單獨(dú)的模塊。
1. 字符設(shè)備:字符設(shè)備像字節(jié)流一樣被訪(fǎng)問(wèn),在存取時(shí)一般沒(méi)有緩存,在對(duì)字符設(shè)備發(fā)出讀/寫(xiě)請(qǐng)求時(shí),硬件設(shè)備 I/O 一般會(huì)緊接著發(fā)生。字符設(shè)備文件和普通文件的區(qū)別在于,字符設(shè)備只能順序訪(fǎng)問(wèn),而普通文件可以隨機(jī)訪(fǎng)問(wèn)。
2. 塊設(shè)備:塊設(shè)備主要用來(lái)容納文件系統(tǒng),例如磁盤(pán)。從應(yīng)用程序角度來(lái)看,塊設(shè)備和字符設(shè)備的訪(fǎng)問(wèn)方式相同,可以進(jìn)行讀寫(xiě)并允許一次傳遞任意多字節(jié)的數(shù)據(jù)。但是在內(nèi)核中,塊設(shè)備驅(qū)動(dòng)程序和字符設(shè)備驅(qū)動(dòng)程序具有完全不同的接口。塊設(shè)備在系統(tǒng)內(nèi)存中一般有緩沖區(qū),以提高訪(fǎng)問(wèn)效率。
3. 網(wǎng)絡(luò)設(shè)備:網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序主要是針對(duì)數(shù)據(jù)包的傳輸和接收而設(shè)計(jì),它不需要了解各項(xiàng)事務(wù)如何映射到實(shí)際傳送的數(shù)據(jù)包,只負(fù)責(zé)處理數(shù)據(jù)包。內(nèi)核和網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序之間的通信有專(zhuān)用的一套函數(shù),與內(nèi)核和字符設(shè)備以及塊設(shè)備驅(qū)動(dòng)程序之間的通信方式完全不同。由于網(wǎng)絡(luò)設(shè)備接口不是面向流的,因此在文件系統(tǒng)中沒(méi)有相應(yīng)的節(jié)點(diǎn),操作系統(tǒng)給網(wǎng)絡(luò)設(shè)備接口分配了唯一的名字。
設(shè)備驅(qū)動(dòng)程序的概念
系統(tǒng)調(diào)用是操作系統(tǒng)內(nèi)核與應(yīng)用程序之間的接口,設(shè)備驅(qū)動(dòng)程序則是操作系統(tǒng)內(nèi)核與系統(tǒng)硬件之間的接口。設(shè)備驅(qū)動(dòng)程序?yàn)樯蠈討?yīng)用程序屏蔽了硬件的實(shí)現(xiàn)細(xì)節(jié),這樣從應(yīng)用程序角度來(lái)看,硬件設(shè)備只是一個(gè)設(shè)備文件,應(yīng)用程序可以像操作普通文件一樣對(duì)硬件設(shè)備進(jìn)行操作。
設(shè)備驅(qū)動(dòng)程序是操作系統(tǒng)的一部分,它主要完成以下功能:
1. 如果以模塊化方式動(dòng)態(tài)加載,則在加載和卸載設(shè)備驅(qū)動(dòng)時(shí)分別完成對(duì)設(shè)備的初始化和釋放;如果以靜態(tài)鏈接方式編譯進(jìn)內(nèi)核,則在系統(tǒng)啟動(dòng)時(shí)會(huì)完成對(duì)設(shè)備的初始化;
2. 完成內(nèi)核與硬件之間的數(shù)據(jù)傳輸,從硬件讀取數(shù)據(jù)到內(nèi)核或者把數(shù)據(jù)從內(nèi)核寫(xiě)到硬件;
3. 完成用戶(hù)空間和內(nèi)核之間的數(shù)據(jù)傳輸,從用戶(hù)空間復(fù)制數(shù)據(jù)到內(nèi)核或者把數(shù)據(jù)從內(nèi)核空間傳輸?shù)接脩?hù)空間;