01 設備驅動程序簡介

#1 設備驅動程序的做用
 
      &   設備驅動程序的做用在於提供機制,而不是策略。
    所謂機制,即「須要提供什麼樣的功能」;所謂「策略」,即「如何使用這些功能」。前者精於設計,專一細節;後者實現調用,不須要知道任何與硬件相關的信息。
 
      &   決定設備驅動一般不帶策略的主要緣由是:不一樣的環境須要不一樣的方式來使用硬件,而設備驅動針對底層硬件,不可能爲每一種方式都編寫一個策略。所以,咱們讓驅動程序提供機制,而讓系統高層提供策略。
    固然,有時候咱們也要在驅動程序當中實現一些策略。例如,某個數字 I/O 驅動程序只提供以字節爲單位訪問硬件的方法,這樣就能夠避免編寫額外的代碼來處理單個數據位的麻煩。
    
      &   不帶策略的驅動程序的典型特徵:
        1) 同時支持同步與異步操做;
        2) 驅動程序可以被屢次打開;
        3) 充分利用硬件特性;
        4) 不具有用來「簡化任務」的 或 提供與策略相關的軟件層。
 
      &   實際上,許多設備驅動程序是與用戶程序一塊兒發行的。這些用戶程序主要用來幫助配置和訪問目標設備。同時附帶發行的還有一個客戶程序庫,它提供了那些沒必要在驅動程序自己實現的功能。
 
 
#2 內核功能劃分
 
        進程管理:建立和銷燬進程,進程處理,進程間通訊,進程調度; [架構相關代碼——CPU]
 
      &  內存管理:內核在有限的可用資源之上爲每一個進程都建立了一個虛擬地址空間,內核的不一樣部分在和內存管理子系統交互時使用一組函數調用; [內存管理器——內存]
 
      &  文件系統:內核在沒有結構的硬件上構造結構化的文件系統,而文件抽象在整個系統中普遍使用;文件系統是一個軟件驅動程序,它將底層數據結構映射到高層數據結構; 不一樣的文件系統類型,表明着在塊設備上組織數據的不一樣方式;[文件系統類型和塊設備——磁盤和CD]
 
      &  設備控制:幾乎每個系統操做最終都會映射到物理設備上,除了極少數的幾個對象以外,全部的設備控制操做都由被控制設備相關的代碼來完成,這段代碼就叫作驅動程序; [字符設備——控制檯]
 
      &  網絡功能:因爲數據包的傳入是異步事件,所以大部分網絡操做與具體進程無關,而必須由內核來完成; [網絡子系統和 IF drivers——網絡接口]
 
 
#3 可裝載模塊和模塊的分類
 
      &  內核提供的特性可在運行時進行擴展,擴展包括添加和移除,這些可被擴展的代碼稱爲「模塊」;每一個模塊由目標代碼組成,咱們可使用 insmod 將模塊鏈接到正在運行的內核,也可使用 rmmod 移除鏈接;
    
      &  在內核中以模塊方式實現的功能:文件系統類型、塊設備、字符設備、IF drivers 等;
 
      &   Linux 系統將設備分爲三種基本類型:字符設備、塊設備、網絡設備;
        1) 字符設備:字符設備是個可以像字節流同樣被訪問的設備, 字符設備驅動程序應至少實現 open 、close、read 和 write 調用;字符設備能夠經過文件系統節點來訪問,例如:/dev/tty1 和 /dev/lp0 等;字符設備文件與普通文件的惟一區別在於, 大多數(除極少數以外)字符設備文件是一個只能順序訪問的數據通道,而對普通文件的訪問則能夠先後移動訪問位置;
        2) 塊設備:和字符設備同樣,塊設備也是經過 /dev 下的文件系統節點來訪問的,不一樣的是,塊設備上能夠容納文件系統; 塊設備和字符設備的區別僅僅在於內核內部管理數據的方式,而這些對用戶是不透明的;
        3) 網絡設備(接口):任何網絡事務都通過一個網絡接口造成;網絡接口由內核中的網絡子系統驅動,負責發送和接收數據包,但不涉及數據包的映射問題; 因爲不是面向流的設備,所以不將網絡接口映射到文件系統節點,而是經過給它們分配一個惟一的名字(如eth0);
 
 
#4 Linux 內核版本編號
 
      &   內核版本號:  以版本號 2.6.9-5.ELsmp  爲例:

    r:   2 , 主版本號網絡

    x:  6 , 次版本號,偶數表示穩定版本,奇數表示開發中版本數據結構

    y:  9 , 修訂版本號 , 表示修改的次數架構

    頭兩個數字合在一齊能夠描述內核系列。如穩定版的2.6.0,它是2.6版內核系列。異步

    -5:  表示這個當前版本的第5次微調 patch 函數

    ELsmp : 指出了當前內核是爲 EL 和 smp特別調校的spa

    EL : Enterprise Linux ; smp : 表示支持多處理器設計

    另外,還有支持大內存版本的 bigmem 或 hugemem對象

相關文章
相關標籤/搜索