扇区 块 缓冲区 页框
来源:互联网 发布:linux 调整时区 编辑:程序博客网 时间:2024/06/06 04:02
在详细说明块缓冲区和块缓冲区头之前,我们先来看一下块设备中的两个基本概念:扇区和块。
扇区是块设备传输数据的基本单元,也就是说它是块设备中最小的寻址单位,扇区通常的大小为512B。块是内核对文件系统的一种抽象,也就是说内核执行的所有磁盘操作都是以块为基本单位的。可以简单的将扇区和块理解为:扇区是硬件设备传输数据的最小单位,而块是操作系统传输数据的最小单位。一个块通常对应一个或多个相邻的扇区,由于内核将块作为对文件系统操作的最小单位,因此VFS将其看作是单一的数据单元。
当内核从磁盘读入数据后或者即将写数据到磁盘时,它需要将数据写入一个缓冲区。缓冲区其实就是物理页框的一部分,因此一个物理页框可能包含一个或多个块缓冲区。根据上述描述的关系,包含磁盘数据的物理页框构造如下图:
正如上面所说,块缓冲区是页框的一部分,因此不用特别描述块缓冲区中的数据。每个块缓冲区都对应一个块缓冲区头buffer_head,他们的关系如同物理页框和物理页框描述符,前者用来存储数据,后者是对前者的属性以及控制信息的描述。块缓冲区头、块缓冲区以及页框的关系如下:
内核中使用buffer_head结构来描述缓冲区头,该结构中的部分字段解释如下:
1
struct
buffer_head {
2
unsigned
long
b_state;
3
struct
buffer_head *b_this_page;
4
struct
page *b_page;
5
atomic_t b_count;
6
u32 b_size;
7
sector_t b_blocknr;
8
char
*b_data;
9
struct
block_device *b_bdev;
10
bh_end_io_t *b_end_io;
11
void
*b_private;
12
struct
list_head b_assoc_buffers;
b_state:对块缓冲区状态的描述。
b_this_page:在一个页框中,可能包含多个块缓冲区。一个页框内的所有缓冲区形成循环链表,该字段指向下一个块缓冲区。
b_page:指向缓冲区所在页框的描述符。
b_size:块缓冲区大小。
b_data:当前块在作为缓冲的页框内的位置。
b_bdev:指向块设备的指针。
- 扇区 块 缓冲区 页框
- 扇区 物理块 逻辑块
- 区分扇区与磁盘块
- 磁盘扇区和磁盘块、块设备
- linux缓冲区 即 块
- SylixOS 块消息缓冲区
- 对段、页、块、扇区的理解
- 扇区与块(sectors,block)
- 扇区与磁盘块的区别
- 5.常见文件系统,超级块,引导扇区
- 常见文件系统,超级块,引导扇区
- 扇区与块(sectors,block)
- Linux下按扇区读写块设备
- 扇区 物理块 逻辑块 flash 基础概念【网络收集】
- 扇区 物理块 逻辑块 flash 基础概念【网络收集】
- 循环缓冲区(数据块)
- Linux,扇区,块,文件系统,目录中的记录项
- Linux文件系统(五)---三大缓冲区之buffer块缓冲区
- 携程酒店自动化360度质量保障体系
- 感染力的六个原则
- Ultimate Array
- js中的左查询和右查询
- leetcode--Longest Substring Without Repeating Characters
- 扇区 块 缓冲区 页框
- Spring(16)——使用注解进行bean定义
- 对Windows下的Socket通信进行封装
- POJ 1061 青蛙的约会 拓展欧几里得 经典题
- POI解析
- mybatis+springmvc+miniui实战开发基本知识点
- c++ 使用lambda表达式实现闭包
- leetcode--Median of Two Sorted Arrays
- Boot Camp分区时强制终止导致硬盘空间消失的解决方法