Linux系統中裝置分類

2021-08-19 07:15:04 字數 1262 閱讀 9274

一般來說,linux把裝置驅動程式分為4種:字元裝置,塊裝置,網路裝置及其他裝置。其中字元裝置和塊裝置可以像檔案一樣被訪問。例如:驅動程式通常會實現open, close, write, read, seek等操作。網路裝置在linux系統中是一模擬較特殊的裝置,它不像字元裝置或者塊裝置那樣對應裝置檔案節點訪問,核心也不再通過read,write等呼叫去訪問網路裝置。

驅動程式是核心**的一部分,其位址空間是核心的位址空間。應用程式通過作業系統的系統呼叫執行相應的驅動程式函式,中斷則直接執行相應的中斷程式**。當裝置驅動程式的file_operation結構體的位址被註冊到核心的裝置鍊錶中之後,塊裝置和字元裝置以裝置檔案的方式建立在檔案系統的/dev目錄下,而且每個裝置都有乙個主裝置號和乙個次裝置號。

在傳統的裝置管理中,除了裝置型別外,核心還需要主裝置號和從裝置號兩個引數,才能唯一的確定並標識某個裝置。

如圖所示,如果

第乙個字母是c,就代表字元設;如果是b,就代表是塊裝置;如果是d,就代表是個目錄,第五組代表主裝置號,第六組代表次裝置號。

在同乙個系統中,一類裝置的主裝置號是唯一的。次裝置號只是在驅動程式內部使用,系統核心直接把次裝置號傳遞給應用程式,由驅動程式管理。為了保證驅動程式的通用性,避免驅動程式移植過程中出現主裝置號衝突,理想的方式是給每個裝置驅動動態的分配主裝置號。

裝置型別、主次裝置號是核心與驅動程式通訊時所使用的,但是對於開發應用程式的使用者來說難於理解和記憶,所以linux中使用裝置檔案的形式來統一對裝置的訪問介面。在引入裝置檔案系統

(devfs)之前,linux將裝置檔案放在/dev下,裝置的命名一般為「裝置名+數字或者字母表示的子類」,例如,/dev/hd0,

/dev/hd1等。

在linux2.4核心版本中引入了

裝置檔案系統(devfs)

,將所有的裝置檔案掛載在同乙個檔案系統下,可以被檔案系統統一的管理。同時,命名規則也發生了一些變化,一般為主裝置建立乙個目錄,在講具體的子裝置建立在此目錄下。

值得注意的是,

裝置檔案系統(devfs)

在linux2.6.15之前的版本中被標記為捨棄;在2.6.15以後的版本中則取消了對他的支援。linux2.6核心引入了系統檔案系統(sysfs)為每個系統的硬體樹進行分級管理,他提供了裝置的基本資訊。同時使用udev指令碼,這是一種linux2.6核心採用的/dev目錄管理系統。它能夠在使用者態下動態的維護/dev目錄下的裝置檔案。

Linux 裝置檔案分類

linux 的乙個重要特點就是將所有的裝置都當做檔案進行處理,這一類特殊檔案就是裝置檔案,它們可以使用前面提到的檔案 i o 相關函式進行操作,這樣就大大方便了對裝置的處理。它通常在 dev 下面存在乙個對應的邏輯裝置節點,這個節點以檔案的形式存在。linux系統的裝置檔案分為三類 塊裝置檔案 字元...

Linux驅動裝置分類

1.字元驅動裝置 指訪問時沒有快取的裝置,採用位元組流訪問的裝置,如按鍵,串列埠,音效卡,觸控螢幕等 2.塊驅動裝置 有快取來支援,塊裝置必須能夠隨機訪問 random access 字元裝置則沒有這個要求。unix下,採用乙個資料塊來進行訪問,資料塊一般為512位元組,1k等,linux下,可以採...

Linux裝置驅動分類

linux系統的裝置分為字元裝置 char device 塊裝置 block device 和網路裝置 network device 三種。字元裝置是指訪問時沒有快取的裝置。塊裝置的讀寫都有快取來支援,並且塊裝置必須能夠隨機訪問 random access 字元裝置則沒有這個要求。典型的字元裝置包括...