字元裝置 塊裝置 網路裝置

2021-08-07 09:31:00 字數 1821 閱讀 9777

裝置驅動的**量佔核心程式的50%

裝置模型的意義:

為了降低裝置多樣性帶來的linux驅動開發的複雜度,以及裝置熱拔插處理、電源管理等,linux核心提出了裝置模型(也稱作driver model)的概念。裝置模型將硬體裝置歸納、分類,然後抽象出一套標準的資料結構和介面。驅動的開發,就簡化為對核心所規定的資料結構的填充和實現。

因為硬體裝置多種多樣,使得裝置驅動程式繁多,裝置模型將硬體裝置分類,抽象出一套標準的資料結構和介面。

乙個位元組乙個位元組讀寫的裝置,

讀取資料需要按照先後資料(順序讀取

常見的字元裝置有滑鼠、鍵盤、串列埠、控制台和led裝置

每個字元裝置在/dev目錄下對應乙個裝置檔案,linux使用者程式通過裝置檔案(或稱裝置節點)來使用驅動程式操作字元裝置。

1.應用層的程式open(「/dev/***」,mode,flags)開啟裝置檔案,進入核心中,即虛擬檔案系統中。

2.vfs層的裝置檔案有對應的struct inode,其中包含該裝置對應的裝置號,裝置型別,返回的裝置的結構體。

3.在驅動層中,根據裝置型別和裝置號就可以找到對應的裝置驅動的結構體,用i_cdev儲存。該結構體中有很重要的乙個操作函式介面file_operations。

4.在開啟裝置檔案時,會分配乙個struct file,將操作函式介面的位址儲存在該結構體中。

5.vfs層 向應用層返回乙個fd,fd是和struct file相對應,這樣,應用層可以通過fd呼叫操作函式,即通過驅動層呼叫硬體裝置了。

資料以固定長度進行傳輸,比如512k

從裝置的任意位置(可跳)讀取,但實際上,塊裝置會讀一定長度的內容,而只返回使用者要求訪問的內容,所以隨機訪問實際上還是讀了全部內容。

塊裝置包括硬碟、磁碟、u盤和sd卡

每個塊裝置在/dev目錄下對應乙個裝置檔案,linux使用者程式通過裝置檔案(或稱裝置節點)來使用驅動程式操作塊裝置。

塊裝置可以容納檔案系統,比如磁碟

面向報文而不是面向流的,因此將網路介面對映到檔案系統的節點比較困難

核心呼叫一套和資料報相關的函式,而不是read,write。

網路介面沒有像字元裝置和塊裝置一樣的裝置號,只有唯一的名字,如eth0,eth1

主要通過socket操作,開啟通常用命令列,

網路協議介面層:網路層,ip

網路裝置介面層:將協議和各種網路驅動連線在一起,這一層提供一組通用函式供底層網路裝置驅動使用。

網路驅動介面層:資料鏈路層,提供對物理層訪問的裝置驅動程式,這可以是各種介質,例如串列埠鏈路或乙太網裝置。包括llc和mac層

物理層:phy層

字元裝置 塊裝置 網路裝置

字元裝置 字元裝置的上層沒有磁碟檔案系統,所以字元裝置的file operations成員函式就直接由字元裝置驅動提供 一般字元裝置都會實現相應的fops集 因此file operations 也就成為了字元裝置驅動的核心。塊裝置 對於塊裝置而言,ext2,jiffs2,fat等檔案系統會 實現針對...

字元裝置 塊裝置 網路裝置詳解

字元裝置 塊裝置 網路裝置 裝置模型 裝置驅動的 量佔核心程式的50 裝置模型的意義 為了降低裝置多樣性帶來的linux驅動開發的複雜度,以及裝置熱拔插處理 電源管理等,linux核心提出了裝置模型 也稱作driver model 的概念。裝置模型將硬體裝置歸納 分類,然後抽象出一套標準的資料結構和...

字元裝置驅動與塊裝置驅動 網路裝置驅動的區別

在linux作業系統下有3類主要的裝置檔案型別 塊裝置 字元裝置和網路裝置。這種分類方法可以將控制輸入 輸出裝置的驅動程式與其他作業系統軟體分離開來。字元裝置是指訪問時沒有快取的裝置。典型的字元裝置包括滑鼠 鍵盤 序列口等。字元裝置與塊裝置的主要區別是 在對字元裝置發出讀 寫請求時,實際的硬體i o...