[讀書筆記]裝置驅動程式簡介(第一章)

weixin_34041003發表於2018-08-16

一、綜述

迷茫的時候該怎麼辦呢?
看書啊,使勁看,拼命看。
之前讀過《Linux裝置驅動程式》(LINUX DEVICE DRIVER)這本書,
讀第一遍的時候,只是泛讀,看一些自己看得懂的,不懂的都跳過了,結果發現跳過了很多(捂臉)
讀第二把的時候,之前很多看不懂的地方,隨著工作經驗的累積,慢慢看得懂一些東西,還是會跳過一些章節。
現在是第三遍了,我想我該仔細去閱讀,做好一些筆記,以免過後忘記了還能來溫習一下,畢竟 “溫故而知新,可以為師矣”。
誰讓腦子不好使呢,就做點筆記吧!


1.裝置驅動程式的作用
驅動程式的作用->提供機制,而不是提供策略。
大多數程式設計問題實際上可以分為2部分:
1.需要提供什麼功能(機制)
2.如何使用這個功能(策略)
在我們實際開發的時候,我們編寫的驅動程式應該儘量只提供硬體訪問的功能,而怎樣使用硬體的問題留給上層應用程式。

2.核心功能的劃分
Linux系統支援 多程式併發執行,每個程式都可以請求系統資源,如申請記憶體,運算等,而核心負責處理這些請求。根據核心完成任務的不同,核心功能可以分為:
1.程式管理:負責建立和銷燬程式,並處理它們和外界的連線。
2.記憶體管理 :負責建立、分配、銷燬記憶體
3.檔案系統
4.裝置控制
5.網路功能

3.裝置和模組分類
模組:字元模組,塊模組,網路模組
裝置:字元裝置,塊裝置,網路裝置
字元裝置:是個能夠像位元組流一樣被訪問的裝置,通常至少要實現open、close、read、write方法,字元裝置可以通過檔案系統節點來訪問。

塊裝置:和字元裝置類似,通過/dev/目錄下的檔案系統節點來訪問,塊裝置(如磁碟)能夠容納檔案系統,塊裝置和字元裝置的區別僅僅在於核心內部管理資料方式的不同

網路裝置:任何網路事物都經過一個網路介面形成,即一個能夠和其他主機互動資料的裝置,通常介面可以是硬體裝置,也可以是純軟體裝置。由於網路裝置不是面向流的,無法對映到檔案系統的節點,因此無法像字元裝置一樣通過read,write方式來和系統通訊,核心中有一套也資料包傳輸相關的函式來通訊

Stay hungry,Stay foolish!
荊軻刺秦王

相關文章