01 设备驱动程序简介
#1 設備驅動程序的作用
&設備驅動程序的作用在于提供機制,而不是策略。
所謂機制,即“需要提供什么樣的功能”;所謂“策略”,即“如何使用這些功能”。前者精于設計,專注細節(jié);后者實現調用,不需要知道任何與硬件相關的信息。
&決定設備驅動通常不帶策略的主要原因是:不同的環(huán)境需要不同的方式來使用硬件,而設備驅動針對底層硬件,不可能為每一種方式都編寫一個策略。因此,我們讓驅動程序提供機制,而讓系統(tǒng)高層提供策略。
當然,有時候我們也要在驅動程序當中實現一些策略。例如,某個數字 I/O 驅動程序只提供以字節(jié)為單位訪問硬件的方法,這樣就可以避免編寫額外的代碼來處理單個數據位的麻煩。
&不帶策略的驅動程序的典型特征:
1) 同時支持同步與異步操作;
2) 驅動程序能夠被多次打開;
3) 充分利用硬件特性;
4) 不具備用來“簡化任務”的 或 提供與策略相關的軟件層。
&實際上,許多設備驅動程序是與用戶程序一起發(fā)行的。這些用戶程序主要用來幫助配置和訪問目標設備。同時附帶發(fā)行的還有一個客戶程序庫,它提供了那些不必在驅動程序本身實現的功能。
#2 內核功能劃分
&進程管理:創(chuàng)建和銷毀進程,進程處理,進程間通信,進程調度;[架構相關代碼——CPU]
&內存管理:內核在有限的可用資源之上為每個進程都創(chuàng)建了一個虛擬地址空間,內核的不同部分在和內存管理子系統(tǒng)交互時使用一組函數調用;[內存管理器——內存]
&文件系統(tǒng):內核在沒有結構的硬件上構造結構化的文件系統(tǒng),而文件抽象在整個系統(tǒng)中廣泛使用;文件系統(tǒng)是一個軟件驅動程序,它將底層數據結構映射到高層數據結構;不同的文件系統(tǒng)類型,代表著在塊設備上組織數據的不同方式;[文件系統(tǒng)類型和塊設備——磁盤和CD]
&設備控制:幾乎每一個系統(tǒng)操作最終都會映射到物理設備上,除了極少數的幾個對象之外,所有的設備控制操作都由被控制設備相關的代碼來完成,這段代碼就叫做驅動程序;[字符設備——控制臺]
&網絡功能:由于數據包的傳入是異步事件,因此大部分網絡操作與具體進程無關,而必須由內核來完成;[網絡子系統(tǒng)和 IF drivers——網絡接口]
#3 可裝載模塊和模塊的分類
&內核提供的特性可在運行時進行擴展,擴展包括添加和移除,這些可被擴展的代碼稱為“模塊”;每個模塊由目標代碼組成,我們可以使用 insmod 將模塊連接到正在運行的內核,也可以使用 rmmod 移除連接;
&在內核中以模塊方式實現的功能:文件系統(tǒng)類型、塊設備、字符設備、IF drivers 等;
&Linux 系統(tǒng)將設備分為三種基本類型:字符設備、塊設備、網絡設備;
1)字符設備:字符設備是個能夠像字節(jié)流一樣被訪問的設備,字符設備驅動程序應至少實現 open 、close、read 和 write 調用;字符設備可以通過文件系統(tǒng)節(jié)點來訪問,例如:/dev/tty1 和 /dev/lp0 等;字符設備文件與普通文件的唯一區(qū)別在于,大多數(除極少數之外)字符設備文件是一個只能順序訪問的數據通道,而對普通文件的訪問則可以前后移動訪問位置;
2) 塊設備:和字符設備一樣,塊設備也是通過 /dev 下的文件系統(tǒng)節(jié)點來訪問的,不同的是,塊設備上可以容納文件系統(tǒng);塊設備和字符設備的區(qū)別僅僅在于內核內部管理數據的方式,而這些對用戶是不透明的;
3) 網絡設備(接口):任何網絡事務都經過一個網絡接口形成;網絡接口由內核中的網絡子系統(tǒng)驅動,負責發(fā)送和接收數據包,但不涉及數據包的映射問題;由于不是面向流的設備,因此不將網絡接口映射到文件系統(tǒng)節(jié)點,而是通過給它們分配一個唯一的名字(如eth0);
#4 Linux 內核版本編號
&內核版本號:以版本號 2.6.9-5.ELsmp為例:
r: 2 , 主版本號
x: 6 , 次版本號,偶數表示穩(wěn)定版本,奇數表示開發(fā)中版本
y:9 , 修訂版本號 , 表示修改的次數
頭兩個數字合在一齊可以描述內核系列。如穩(wěn)定版的2.6.0,它是2.6版內核系列。
-5: 表示這個當前版本的第5次微調 patch
ELsmp : 指出了當前內核是為 EL 和 smp特別調校的
EL : Enterprise Linux ;smp : 表示支持多處理器
另外,還有支持大內存版本的 bigmem 或 hugemem
總結
以上是生活随笔為你收集整理的01 设备驱动程序简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring学习(三)-Bean的种类,
- 下一篇: 怎么创建具有真实纹理的CG场景岩石?