- Linux設備驅動開發詳解:基于最新的Linux4.0內核
- 宋寶華
- 716字
- 2018-12-31 20:25:12
1.3 有操作系統時的設備驅動
在1.2節中我們看到一個清晰的設備驅動,它直接運行在硬件之上,不與任何操作系統關聯。當系統包含操作系統時,設備驅動會變得怎樣呢?
首先,無操作系統時設備驅動的硬件操作工作仍然是必不可少的,沒有這一部分,驅動不可能與硬件打交道。
其次,我們還需要將驅動融入內核。為了實現這種融合,必須在所有設備的驅動中設計面向操作系統內核的接口,這樣的接口由操作系統規定,對一類設備而言結構一致,獨立于具體的設備。
由此可見,當系統中存在操作系統的時候,驅動變成了連接硬件和內核的橋梁。如圖1.4所示,操作系統的存在勢必要求設備驅動附加更多的代碼和功能,把單一的“驅使硬件設備行動”變成了操作系統內與硬件交互的模塊,它對外呈現為操作系統的API,不再給應用軟件工程師直接提供接口。

圖1.4 硬件、驅動、操作系統和應用程序的關系
那么我們要問,有了操作系統之后,驅動反而變得復雜,那要操作系統干什么?
首先,一個復雜的軟件系統需要處理多個并發的任務,沒有操作系統,想完成多任務并發是很困難的。
其次,操作系統給我們提供內存管理機制。一個典型的例子是,對于多數含MMU的32位處理器而言,Windows、Linux等操作系統可以讓每個進程都可以獨立地訪問4GB的內存空間。
上述優點似乎并沒有體現在設備驅動身上,操作系統的存在給設備驅動究竟帶來了什么實質性的好處?
簡而言之,操作系統通過給驅動制造麻煩來達到給上層應用提供便利的目的。當驅動都按照操作系統給出的獨立于設備的接口而設計時,那么,應用程序將可使用統一的系統調用接口來訪問各種設備。對于類UNIX的VxWorks、Linux等操作系統而言,當應用程序通過write()、read()等函數讀寫文件就可訪問各種字符設備和塊設備,而不論設備的具體類型和工作方式,那將是多么便利。
推薦閱讀
- 電腦組裝與系統安裝
- Puppet實戰
- 從零開始寫Linux內核:一書學透核心原理與實現
- Red Hat Enterprise Linux 8系統管理實戰
- Google系統架構解密:構建安全可靠的系統
- Hands-On DevOps with Vagrant
- Windows 7應用入門與技巧
- Social Data Visualization with HTML5 and JavaScript
- INSTANT Galleria Howto
- 新編電腦辦公(Windows 10+ Office 2013版)從入門到精通
- 應急指揮信息系統設計
- 電腦辦公(Windows 10 + Office 2016)入門與提高(超值版)
- Linux內核分析及應用
- 每天5分鐘玩轉Docker容器技術
- Administering ArcGIS for Server