理解块层、多队列与设备映射器
1. 块层中的数据结构
块设备的一个显著特点是广泛使用页缓存,对块设备的读写操作都在缓存中进行。当应用程序首次从块中读取数据时,数据会从物理磁盘提取到内存;写入数据时,先在缓存中操作,之后再写入物理磁盘。
1.1 buffer_head 结构
从磁盘读取或要写入磁盘的数据块存储在缓冲区中,由 buffer_head 结构表示,该结构定义在 include/linux/buffer_head.h 中:
struct buffer_head {
unsigned long b_state;
struct buffer_head *b_this_page;
struct page *b_page;
sector_t b_blocknr;
size_t b_size;
// ......
};
buffer_head 结构的字段用于唯一标识块设备中的特定块,各字段说明如下:
- b_data :指向与 buffer_head 关联的数据缓冲区的起始位置,缓冲区大小由文件系统的块大小决定。
- b_size :指定缓冲区的字节大小。
- b_page :指向存储块的内存页,通常与 b_data 和 b_size
超级会员免费看
订阅专栏 解锁全文
1509

被折叠的 条评论
为什么被折叠?



