《linux裝置驅動程式III》學習—第一章

來源:互聯網
上載者:User

1,裝置驅動作用的理解

        裝置驅動程式是位於作業系統與硬體之間的軟體層,為上層應用程式提供一個可以訪問硬體的介面,隱藏了對硬體寄存器等的具體操作。當使用者層調用的時候可以把硬體看成是核心的一個介面函數就行了。

 2,unix中的一點思想

        機制和策略,是unix設計背後影藏的最好思想之一。

        編程實際上可以分為兩部分:1,需要提供什麼樣的功能;2,如何使用這些功能。前者就是機制,後者是策略。前者相當是蓋房子的木頭、磚瓦、、、,後者是如何用這些原材料蓋出漂亮的房子。

        這裡驅動程式應該具有的是機制的功能,為不同環境的使用,巧妙是使用做基礎。

3,核心功能

       unix支援多進程的並發運行,核心為每個進程分配系統的資源,核心的功能可以劃分5部分:

      @進程管理:建立、銷毀進程;處理序間通訊;還有多核間共用CPU技術

      @記憶體管理:建立虛擬位址;malloc/free函數

      @檔案系統:unix中一切皆檔案思想

      @裝置管理:

      @網路管理:大部分網路操作與進程無關。。。和中斷相關?(自己猜的)

4,linux中裝置驅動劃分

      @字元裝置:90%的驅動是字元裝置,比如鍵盤、I2C、視頻、wifi什麼的等等。

                            大多數字元裝置只能按順序訪問;linux中一切裝置皆檔案,所以裝置的訪問時通過檔案節點來訪問

                            常用函數:open,write,read,close。

      @塊裝置 : 常見的塊裝置有:磁碟、儲存卡什麼的

                           與字元裝置類似,但可以不按順序訪問。在核心中總是對資料的管理方式不同:字元裝置1個位元組、

                           塊裝置把512個位元組   

                            放 在一個塊中。

擴充:Linux塊裝置驅動分類(轉)http://bbs.chinaunix.net/thread-2116399-1-1.html
Linux塊裝置驅動程式可以分為兩類四種:第一類是使用請求隊列的塊裝置驅動。來自上層的I/O到達塊裝置層後,經過IO調度器的排序、合并,轉換為請求加入到請求隊列中,這就是request_queue_t結構,而上述排序、合并過程是在_make_request函數中完成的。與此相對應,請求的處理是由策略常式完成的,這就是函數_request_fn要做的。它進而又分為兩種:其一是非中斷驅動的,策略常式的處理過程是:逐個將請求隊列中的元素取出,通知塊裝置控制器處理該請求,等待資料轉送完成,之後繼續下一個請求。其二是中斷驅動的,策略常式的處理過程是:策略常式傳輸隊列中第一個請求的資料,同時設定塊裝置控制器,讓它在資料轉送完成時產生一個中斷。由中斷處理函數再次啟用策略常式,或者為當前請求啟動另一次資料轉送,或者在當前請求結束後,將它從請求隊列中取出,並繼續處理下一個請求。
第二類塊裝置驅動程式並不真正使用請求隊列,也不需要策略常式。不過它們還是需要request_queue_t結構和_make_request函數,只是_make_request並不負責排序、合并、加入到請求隊列的操作,而是有兩種可能的處理:其一是直接執行該請求,向上層報告請求已經執行完以及執行的結果。如果說第一類塊裝置驅動程式常常用在磁碟類塊裝置中,那麼這一種直接處理的塊裝置驅動程式應用於真正意義的隨機訪問塊裝置,例如ramdisk,它們不需要考慮為提高磁頭移動效能而作最佳化的種種方法。另外一種處理方式是重新導向請求,常見於“堆棧式”塊裝置驅動,例如RAID和LVM,它修改請求裝置號以及請求扇區號後,返回特定值。塊裝置層判斷該工作尚未完成並且需要重試。但是,這次重試是在底層塊裝置的request_queue_t結構和_make_request函數上進行的。
綜上所述,Linux塊裝置驅動程式可分為:

  • 使用請求隊列、非中斷驅動方式;
  • 使用請求隊列、非中斷驅動方式;
  • 不使用請求隊列、直接處理方式;
  • 不使用請求隊列、重新導向方式。

          
@網路裝置:與字元和塊裝置完全不同,不是面向流的概念,也不能通過檔案節點訪問,而是專門由核心中的網路子系統驅動

 

其他:

 1,安全問題:linux中的所有安全檢查都是由核心完成的。

 2,版本編號。。。

 3,許可證:MODULE_LICENSE();//Dual BSD/GPL

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.