1,概述
一直都搞不明白普通文件跟塊文件的區別,總覺得一個普通的文件是存放在磁盤塊上,那它既屬於普通文件又屬於塊設備文件。剛好下午睡了一個大頭覺,比較清醒,集中學習了下普通文件和塊設備文件的區別和聯系。
本文從基本概念,尋址空間,內核讀寫幾個方面介紹普通文件和塊設備文件的辯證統一。
2,基本概念
普通文件(Regular File)。指普通意義上的文件,如數據文件、可執行文件等。
設備文件(Device File)。類unix操作系統都是基於文件概念的,文件是由字節序列而構成的信息載體。根據這一點,可以把IO設備當作設備文件這種所謂的特殊文件來處理;因此,與磁盤上的普通文件進行交互所用的同一系統調用可直接用於IO設備。根據設備驅動程序的基本特征,設備文件可以分為兩種:塊和字符。這兩種硬件設備之間的差異並不容易划分,但我們至少可以假定以下的差異:[1]
· 塊設備的數據可以隨機地被訪問,而且從人類用戶的觀點看,傳送任何數據塊所需的時間都是較少而且是大致相同的。塊設備的典型例子是硬盤、軟盤[1]。塊設備一般情況下是帶緩沖區的。
· 字符設備的數據或者不可以隨機訪問,或者可以被隨機訪問,但是訪問隨機數據所需的時間很大程度上依賴於數據在設備內的位置[1]。
3, 尋址空間的區別
塊設備文件是塊設備的物理尋址空間;普通文件是塊設備的虛擬尋址空間。普通文件比塊設備文件多一層文件系統的地址轉換機構。