塊設(shè)備是Linux三大設(shè)備之一,其驅(qū)動模型主要針對磁盤,F(xiàn)lash等存儲類設(shè)備,本文以3.14為藍本,探討內(nèi)核中的塊設(shè)備驅(qū)動模型
框架
下圖是Linux中的塊設(shè)備模型示意圖,應(yīng)用層程序有兩種方式訪問一個塊設(shè)備:/dev和文件系統(tǒng)掛載點,前者和字符設(shè)備一樣,通常用于配置,后者就是我們mount之后通過文件系統(tǒng)直接訪問一個塊設(shè)備了。
塊設(shè)備(blockdevice)是一種具有一定結(jié)構(gòu)的隨機存取設(shè)備,對這種設(shè)備的讀寫是按塊(所以叫塊設(shè)備)進行的,他使用緩沖區(qū)來存放暫時的數(shù)據(jù),待條件成熟后,從緩存一次性寫入設(shè)備或者從設(shè)備一次性讀到緩沖區(qū)。作為存儲設(shè)備,塊設(shè)備驅(qū)動的核心問題就是哪些page->segment->block與哪些sector有數(shù)據(jù)交互
作為一種存儲設(shè)備,和字符設(shè)備相比,塊設(shè)備有以下幾種不同:
字符設(shè)備 | 塊設(shè)備 |
---|---|
1byte | 塊,硬件塊各有不同,但是內(nèi)核都使用512byte描述 |
順序訪問 | 隨機訪問 |
沒有緩存,實時操作 | 有緩存,不是實時操作 |
一般提供接口給應(yīng)用層 | 塊設(shè)備一般提供接口
我想了解如何學習 |