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