設備驅動
編輯設備驅動程序是一種計算機程序,用于操作或控制連接到計算機的特定類型的設備。驅動程序提供了通往硬件設備的軟件接口,從而使操作系統和其他計算機程序可以訪問硬件功能,而無需知道有關所使用硬件的確切細節。
驅動程序通過硬件連接到的計算機總線或通信子系統與設備進行通信。當調用程序調用驅動程序中的例程時,驅動程序向設備發出命令。設備將數據發送回驅動程序后,驅動程序可以調用原始調用程序中的例程。
驅動程序依賴于硬件且特定于操作系統。它們通常提供任何必要的異步時間相關的硬件接口所需的中斷處理。
程序目的
編輯設備驅動程序的主要目的是通過充當硬件設備與使用該設備的應用程序或操作系統之間的轉換器來提供抽象。程序員可以獨立于最終用戶使用的任何特定硬件來編寫更高級別的應用程序代碼。例如,用于與串行端口交互的高級應用程序可能僅具有“發送數據”和“接收數據”兩個功能。在較低級別上,實現這些功能的設備驅動程序將與安裝在用戶計算機上的特定串行端口控制器進行通信。控制16550 UART所需的命令與控制FTDI所需的命令有很大不同串行端口轉換器,但是每個特定于硬件的設備驅動程序都將這些詳細信息抽象到相同(或相似)的軟件接口中。
設備驅動的發展
編輯編寫設備驅動程序需要深入了解給定平臺功能的硬件和軟件工作方式。因為驅動程序需要對硬件功能的低級別訪問才能運行,所以驅動程序通常在特權較高的環境中運行,并且如果出現問題,可能導致系統運行問題。相反,可以停止現代操作系統上的大多數用戶級軟件,而不會嚴重影響系統的其余部分。如果對設備進行了錯誤的編程,即使在用戶模式下執行的驅動程序也可能使系統崩潰。這些因素使診斷問題更加困難和危險。
因此,編寫驅動程序的任務通常落在為硬件開發公司工作的軟件工程師或計算機工程師身上。這是因為與大多數外部人士相比,他們在硬件設計方面擁有更好的信息。此外,從傳統意義上講,為了保證其客戶可以最佳方式使用其硬件,符合硬件制造商的利益。通常,邏輯設備驅動程序(LDD)由操作系統供應商編寫,而物理設備驅動程序(PDD)由設備供應商實現。但是,近年來,非供應商為專有設備編寫了許多設備驅動程序,主要用于免費和開源?操作系統。在這種情況下,硬件制造商提供有關設備通信方式的信息非常重要。盡管可以通過逆向工程來學習此信息,但是使用硬件要比使用軟件困難得多。
Microsoft嘗試通過創建用于驅動程序開發的新框架稱為Windows Driver Foundation(WDF)來減少由于設備驅動程序編寫不當而引起的系統不穩定。這包括鼓勵用戶開發某些類型的驅動程序(主要是那些實現基于消息的協議以與其設備通信的驅動程序)的用戶模式驅動程序框架(UMDF),作為用戶模式驅動程序。如果此類驅動程序發生故障,則不會引起系統不穩定。在內核模式驅動程序框架?(KMDF)模型繼續允許開發內核模式設備驅動程序,但是嘗試提供已知會引起問題的功能的標準實現,包括取消I / O操作,電源管理以及即插即用設備支持。
蘋果有一個用于在macOS上開發驅動程序的開源框架,稱為I / O Kit。
在Linux環境中,程序員可以將設備驅動程序作為內核的一部分,分別作為可加載模塊或作為用戶模式驅動程序來構建(對于存在內核接口的某些類型的設備,例如USB設備)。Makedev包含Linux中設備的列表,包括ttyS(終端)、lp(并行端口)、hd(磁盤)、循環和聲音(其中包括Mixer、sequencer、dsp和音頻)。
Microsoft Windows?.sys文件和Linux?.ko文件可以包含可加載的設備驅動程序。可加載設備驅動程序的優點在于,僅在必要時才可以加載它們,然后再將其卸載,從而節省了內核內存。
內核模式與用戶模式
編輯設備驅動程序,特別是在現代Microsoft Windows平臺上,可以在內核模式(x86 CPU上為Ring 0)或在用戶模式下(x86 CPU上為Ring 3)運行。在用戶模式下運行驅動程序的主要好處是提高了穩定性,因為編寫不良的用戶模式設備驅動程序無法通過覆蓋內核內存來使系統崩潰。另一方面,用戶/內核模式轉換通常會帶來相當大的性能開銷,因此使內核模式驅動程序成為低延遲網絡的首選。
用戶模塊只能通過使用系統調用來訪問內核空間。最終用戶程序(例如UNIX Shell或其他基于GUI的應用程序)是用戶空間的一部分。這些應用程序通過內核支持的功能與硬件交互。
虛擬設備驅動程序
編輯虛擬設備驅動程序代表設備驅動程序的特定變體。它們用于仿真硬件設備,特別是在虛擬化環境中,例如在Microsoft Windows計算機上運行DOS程序時或在Xen主機上運行客戶機操作系統時,例如。虛擬設備驅動程序沒有使來賓操作系統與硬件對話,而是扮演相反的角色并模擬一塊硬件,從而使來賓操作系統及其驅動程序在虛擬機中運行可能會有訪問真實硬件的幻想。來賓操作系統嘗試訪問硬件的嘗試被路由到主機操作系統中的虛擬設備驅動程序,例如?函數調用。虛擬設備驅動程序還可以將模擬的處理器級事件(例如中斷)發送到虛擬機中。
虛擬設備也可以在非虛擬環境中運行。例如,虛擬網絡適??配器與虛擬專用網絡一起使用,而虛擬磁盤設備與iSCSI一起使用。虛擬設備驅動程序的一個很好的例子是Daemon Tools。
虛擬設備驅動程序有多種變體,例如VxD、VLM和VDD。
開源驅動程序
編輯常用設備驅動程序的Solaris描述:
- fas:快速/寬SCSI控制器
- hme:快速(10/100 Mbit / s)以太網
- isp:差分SCSI控制器和SunSwift卡
- glm:(Gigabaud鏈接模塊)UltraSCSI控制器
- scsi:小型計算機串行接口(SCSI)設備
- sf:soc +或社交光纖通道仲裁環路(FCAL)
- soc:SPARC存儲陣列(SSA)控制器和控制設備
- social:用于FCAL(soc +)的串行光控制器
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/117088/