块设备是Linux三大设备之一,其驱动模型主要针对磁盘,Flash等存储类设备,本文以3.14为蓝本,探讨内核中的块设备驱动模型
框架
下图是Linux中的块设备模型示意图,应用层程序有两种方式访问一个块设备:/dev和文件系统挂载点,前者和字符设备一样,通常用于配置,后者就是我们mount之后通过文件系统直接访问一个块设备了。
块设备(blockdevice)是一种具有一定结构的随机存取设备,对这种设备的读写是按块(所以叫块设备)进行的,他使用缓冲区来存放暂时的数据,待条件成熟后,从缓存一次性写入设备或者从设备一次性读到缓冲区。作为存储设备,块设备驱动的核心问题就是哪些page->segment->block与哪些sector有数据交互
作为一种存储设备,和字符设备相比,块设备有以下几种不同:
字符设备 | 块设备 |
---|---|
1byte | 块,硬件块各有不同,但是内核都使用512byte描述 |
顺序访问 | 随机访问 |
没有缓存,实时操作 | 有缓存,不是实时操作 |
一般提供接口给应用层 | 块设备一般提供接口
我想了解如何学习 |