linux-中塊裝置檔案和字元裝置檔案的本質區別

126雲發表於2021-01-26

在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驅動器和快閃記憶體等等許多其他塊裝置。

注意,它們都是以安裝檔案系統的方式使用的——這也是塊裝置一般的訪問方式。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69957453/viewspace-2753012/,如需轉載,請註明出處,否則將追究法律責任。

相關文章