郵箱:www.jungshuodz@163.com
手機:18268652722
電話:18268652722
地址:寧波市北侖區大碶廟前山路45號
人氣:
擴展的定義相當準確,但仍然不完整,因為某些驅動程序根本不與任何硬件設備關聯。假設我們要實現一個核彈發射器的驅動(這里不得不佩服jyy的想象力,程序中定義的密碼也可能是彩蛋2333)。幸運的是,之前有人遇到過類似的問題,安裝了上面的觸摸控制板驅動程序就消失了。在用戶模式下運行的組件稱為應用程序,在內核模式下運行的組件稱為軟件驅動程序。
應用程序調用操作系統實現的函數,操作系統調用驅動程序實現的函數。從最基本的意義上講,驅動程序是一個軟件組件,允許操作系統和設備相互通信。驅動程序(由設計和制造設備的同一家公司編寫)知道如何與設備硬件通信以獲取數據。當驅動程序從設備獲取數據時,它會將數據返回給操作系統,操作系統將數據返回給應用程序。
在lx_init之前的code_init函數中,這個結構體會作為參數傳入。這樣,通過系統調用讀寫這個設備時,控制流程就會走到我們注冊的函數中(可以使用strace命令來驗證)。 lx_read中有一些錯誤檢查以確保驅動程序安全。更多的函數會注冊在業界真實驅動的file_operations結構體中:
它相當于一個硬件接口。操作系統只有通過這個接口才能控制硬件設備的工作。某個設備的驅動程序如果安裝不正確,將無法正常工作。該段用于標記該驅動對應的模塊在內核中的起點和終點。這與最初包含在Linux內核中的模塊庫有關。這個設備驅動程序編譯完成后,會生成類似的東西。因此,驅動程序被比喻為硬件的靈魂、硬件的主人、硬件與系統之間的橋梁等。
我們可以擴展驅動程序的定義,說驅動程序是觀察或參與操作系統和設備之間通信的任何軟件組件。 Linux中的一切都是文件,所以只需要下面的file_operations結構來注冊一個設備驅動程序。萬能打印機驅動-打印機掃描儀驅動助手,自動識別打印機品牌型號,快速匹配對應的打印機掃描儀驅動。編寫軟件驅動程序的主要原因是訪問僅在內核模式下可用的受保護數據。
烤面包機的功能驅動程序通過向USB 主控制器的功能驅動程序發送請求來與烤面包機間接通信。假設程序想要將1GB 的數據復制到磁盤上。與CPU相比,總線非常慢。如果我們想讓程序循環地通過總線將數據一點點復制到磁盤上,那么開銷會非常巨大。設備驅動程序存在的目的是提取所有I/O設備共有的功能,使應用程序可以使用相同的接口,屏蔽掉復雜的細節,從而完成對I/O設備的抽象。
相關推薦