1. 程式人生 > >LINUX中塊設備文件和字符設備文件的本質區別

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

hunk 特性 pan 操作系統 物理 文件的 顯示器 windows 緩存

在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驅動器和閃存等等許多其他塊設備。

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

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