久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Linux驅(qū)動程序框架以及概述

 補丁牛仔褲 2023-04-06 發(fā)布于廣東

驅(qū)動程序三種基本類型(組成)

1、字符設(shè)備(Char Device)
2,、塊設(shè)備(Block Device)
3,、網(wǎng)絡(luò)設(shè)備(Net Device)

設(shè)備驅(qū)動程序功能

1、對設(shè)備初始化和釋放
2,、把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù)
3,、讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)和回送應(yīng)用程序請求的數(shù)據(jù)
4、檢測和處理設(shè)備出現(xiàn)的錯誤

訪問特定硬件
訪問特定硬件就是訪問物理地址(如處理器內(nèi)設(shè)備的寄存器,、外設(shè)的地址映射),。然而由于MMU的內(nèi)存映射以及對操作系統(tǒng)的保護,運行在用戶態(tài)的應(yīng)用程序一般不能直接訪問硬件地址,。因此需要驅(qū)動程序作為應(yīng)用程序和訪問硬件之間的媒介,。

驅(qū)動程序的內(nèi)核模塊機制(開發(fā)模式)

靜態(tài)編譯、動態(tài)加載
Linux提供了一種內(nèi)核模塊機制,。一個模塊被編譯成單獨的內(nèi)核模塊后,,一開始可以不編譯到整個內(nèi)核中,當(dāng)內(nèi)核需要加入該模塊的時候,,不需要重新編譯整個內(nèi)核,,只需要將該內(nèi)核模塊插入(加載)到正在運行的內(nèi)核中。同樣,,也可以從正在運行的內(nèi)核中卸載,。

Linux設(shè)備驅(qū)動可以使用兩種方式被編譯和加載:
1、直接編譯到Linux內(nèi)核,隨Linux啟動時加載,,隨時可以使用該驅(qū)動程序,;
2、編譯成一個可加載和刪除的模塊,,用insmod加載,,rmmod刪除。

在這里插入圖片描述

驅(qū)動程序框架

三個主要部分

在這里插入圖片描述
1,、設(shè)備初始化/釋放:
負責(zé)對設(shè)備進行初始化和釋放
初始化檢測所要驅(qū)動的硬件設(shè)備是否存在,、能否正常工作。如果設(shè)備正常,,則對設(shè)備及相關(guān)驅(qū)動程序
需要的軟件狀態(tài)進行配置/初始化。
2,、上半部分:服務(wù)于文件系統(tǒng)I/O
負責(zé):通過文件系統(tǒng)從應(yīng)用程序讀取數(shù)據(jù),把數(shù)據(jù)通過文件系統(tǒng)回送給應(yīng)用程序(文件系統(tǒng)層<->設(shè)備驅(qū)動層)
這部分由文件系統(tǒng)相關(guān)的系統(tǒng)調(diào)用執(zhí)行,,和調(diào)用進程屬于同一個進程,具有調(diào)用進程的運行環(huán)境,,只是由用戶態(tài)變成了內(nèi)核態(tài),。
3、下半部分:服務(wù)于硬件設(shè)備的I/O
負責(zé):把數(shù)據(jù)從內(nèi)核傳送到硬件,,從硬件讀取數(shù)據(jù)到內(nèi)核(設(shè)備驅(qū)動曾<->硬件層)
這部分可以通過中斷方式實現(xiàn),,對于多數(shù)設(shè)備可以提高CPU處理效率。
這部分也可以不通過中斷方式實現(xiàn),,只要能完成設(shè)備驅(qū)動層和硬件之間的數(shù)據(jù)通信即可,。

1、字符設(shè)備驅(qū)動程序框架

在這里插入圖片描述

2,、塊設(shè)備驅(qū)動程序框架

在這里插入圖片描述

2,、網(wǎng)絡(luò)設(shè)備驅(qū)動程序框架

在這里插入圖片描述

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多