LINUX中塊設備文件和字符設備文件的本質區別


在LINUX系統文件類型分類的文章中我們提到了 塊設備 和 字符設備文件,那么什么是塊設備 字符設備文件呢?他們之間有什么本質上的區別呢?

 

設備文件分為 Block(塊) Device Driver 和 Character(字符)Device Drive 兩類。Character Device Drive又被稱為字符設備或裸設備 raw  devices。 Block Device Driver稱為塊設備。

區別:

Block Device Driver 是以固定大小長度來傳送轉移資料,Character Device Driver是以不定長度的字元傳送資料。且所連接的Devices也有所不同。

Block Device 大致是可以隨機存取(Random Access)資料的設備,如硬碟機(硬盤)或光碟機;而Character  Device剛好相反,依循先後順序存取資料的設備,如 印表機(激光打印機)、終端機(列如 電腦顯示器)等皆是。

/dev/dsk 對應的為塊設備,文件系統的操作用到它,如mount。

/dev/rdsk 對應的為字符設備(裸設備,rdsk的r即為 raw),fsck  newfs等會涉及到。一般我們的操作系統和各種軟件都是以塊方式讀寫硬盤,這里的塊是邏輯塊,創建文件系統時可以選擇。

windows里叫簇。可看newfs or  mkfs的manual。oracle是比較常見的字符方式讀寫硬盤。

 

字符設備還是塊設備的定義屬於操作系統的設備訪問層,與實際物理設備的特性無必然聯系。設備訪問層下面是驅動程序,所以只要驅動程序能夠提供哪一種方式,都可以。也就是說驅動程序支持 stream 方式,那么就可以用這種方式訪問,

驅動程序如果還支持block方式,那么你想用哪種方式訪問都可以。

1:典型的比如硬盤式的裸設備(Block device),他兩種訪問方式都支持:他是一種具有一定結構的隨機存取設備,對這種設備的讀寫是按塊進行的,他使

用緩沖區來存放暫時的數據,待條件成熟后,從緩存一次性寫入設備或從設備中一次性讀出放入到緩沖區;

 

:2:磁盤和文件系統等字符設備(Character  device):這是一個順序的數據流設備,對這種設備的讀寫是按字符進行的,

而且這些字符是連續地形成一個數據流。他不具備緩沖區,所以對這種設備的讀寫是實時的,如終端、磁帶機等。

 

系統中能夠隨機(不需要按順序)訪問固定大小數據片(chunks)的設備被稱作塊設備。這些數據片就稱作塊。最常見的塊設備是硬盤,除此以外,還有軟盤驅動器、CD-ROM驅動器和閃存等等許多其他塊設備。

注意,它們都是以安裝文件系統的方式使用的——這也是塊設備一般的訪問方式。

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM