小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

應(yīng)用程序、內(nèi)核、驅(qū)動的關(guān)系

 own360 2013-09-10

應(yīng)用程序與庫函數(shù)、內(nèi)核、驅(qū)動之間的關(guān)系

應(yīng)用程序、庫、內(nèi)核、驅(qū)動程序的關(guān)系:應(yīng)用程序調(diào)用應(yīng)用程序函數(shù)庫完成功能、應(yīng)用程序以文件形式訪問各種資源、應(yīng)用程序函數(shù)庫、部分函數(shù)直接完成功能、部分函數(shù)通過系統(tǒng)調(diào)用。

 由內(nèi)核完成內(nèi)核處理系統(tǒng)調(diào)用。


 調(diào)用設(shè)備驅(qū)動程序,設(shè)備驅(qū)動直接與硬件通信。

  它們之間的關(guān)系如下圖所示


設(shè)備類型:

常見的設(shè)備有三類:字符設(shè)備、塊設(shè)備、網(wǎng)絡(luò)設(shè)備。

字符設(shè)備:對字符設(shè)備發(fā)出讀/寫請求時,實際的硬件I/O操作一般緊接著發(fā)生。

塊設(shè)備:塊設(shè)備與之相反,它利用系統(tǒng)內(nèi)存作為緩沖區(qū)。

網(wǎng)絡(luò)設(shè)備:網(wǎng)絡(luò)設(shè)備是一類特殊的設(shè)備,它不像字符設(shè)備或塊設(shè)備那樣通過對應(yīng)的設(shè)備文件節(jié)點訪問,也不能直接通過readwrite進行數(shù)據(jù)訪問請求。

       

設(shè)備號

硬件設(shè)備以主設(shè)備號和從設(shè)備號區(qū)分。在設(shè)備管理中,除了設(shè)備類型外,內(nèi)核還需要對被稱為主從設(shè)備號的參數(shù),才能唯一標識一個設(shè)備。主設(shè)備號相同的設(shè)備使用相同的驅(qū)動程序,從設(shè)備號用于區(qū)分具體設(shè)備的實例。在/dev目錄下使用ll命令(ls -l)可以查看各個設(shè)備的設(shè)備類型、主從設(shè)備號等。cat /proc/devices可以查看系統(tǒng)中所有設(shè)備對應(yīng)的主設(shè)備號。

 

設(shè)備文件

設(shè)備類型、主從設(shè)備號是內(nèi)核與設(shè)備驅(qū)動程序通信時使用的,應(yīng)用程序使用設(shè)備文件節(jié)點訪問對應(yīng)設(shè)備。Linux 2.4引入了設(shè)備文件系統(tǒng)(devfs)所有的設(shè)備文件作為一個可以掛載的文件系統(tǒng),每個主從設(shè)備號確定的設(shè)備都對應(yīng)一個文件節(jié)點。每個設(shè)備文件都有其文件屬性(c代表字符設(shè)備或者b代表塊設(shè)備),都有2個設(shè)備號:1、主設(shè)備號,用于標識驅(qū)動程序;2、從設(shè)備號:用于標識同一驅(qū)動程序的不同硬件。設(shè)備文件的主設(shè)備號必須與設(shè)備驅(qū)動程序在登記時申請的主設(shè)備號一致。需要注意的是,系統(tǒng)調(diào)用是內(nèi)核與應(yīng)用程序之間的接口,設(shè)備驅(qū)動程序是內(nèi)核與硬件之間的接口。

 

驅(qū)動程序與應(yīng)用程序的區(qū)別

1、應(yīng)用程序以main開始,驅(qū)動程序沒有main,它以一個模塊初始化函數(shù)作為入口。

2、應(yīng)用程序從頭到尾執(zhí)行一個任務(wù),驅(qū)動程序完成初始化之后不再運行,等待系統(tǒng)調(diào)用。

3、應(yīng)用程序可以使用GLIBC等標準C函數(shù)庫,驅(qū)動程序不能使用標準C庫。

 

用戶態(tài)與內(nèi)核態(tài)

系統(tǒng)運行時一般情況下,分用戶態(tài)和內(nèi)核態(tài),這兩種運行態(tài)下的數(shù)據(jù)互不可見的。驅(qū)動程序是內(nèi)核的一部分,工作在內(nèi)核態(tài),應(yīng)用程序工作在用戶態(tài)。這樣就存在數(shù)據(jù)空間訪問的問題:無法通過指針直接將二者的數(shù)據(jù)地址進行傳遞。問題的解決辦法是:系統(tǒng)提供一系列函數(shù)幫助完成數(shù)據(jù)空間轉(zhuǎn)換:例如,get_user 、put_user copy_from_user 、copy_to_user

等函數(shù)。

 

Linux驅(qū)動程序功能

驅(qū)動程序的一般功能是:對設(shè)備初始化和釋放、把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù)、讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)和回送應(yīng)用程序請求的數(shù)據(jù)、檢測和處理設(shè)備出現(xiàn)的錯誤等。


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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多