bio,request,request_queue的关系

本文详细介绍了Linux通用块层中的核心数据结构:bio、request和request_queue。bio描述了块设备的IO操作,其bio_vec数组描述了内存段。request用于IO调度,将bio合并并排序以提高磁盘访问速度。request_queue作为每个磁盘的请求队列,存储待处理的请求。在IO操作期间,bio的内容会根据设备驱动的处理情况进行更新。通过对bio和request的处理,实现了灵活且高效的磁盘访问策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通用块层的核心数据结构称为bio描述符,它描述了块设备的io操作。每一个bio结构都包含一个磁盘存储区标识符(存储区中的起始扇区号和扇区数目)和一个或多个描述与IO操作相关的内存区段(bio_vec数组)

bio结构中的字段

/*
 * main unit of I/O for the block layer and lower layers (ie drivers and
 * stacking drivers)
 */
struct bio {
   
   
	struct bio		*bi_next;	/* request queue link 链接到请求队列中的下一个bio*/
	struct block_device	*bi_bdev;  /* 指向块设备描述符的指针 */
	unsigned int		bi_flags;	/* status, command, etc bio的状态标志*/
	int			bi_error;
	unsigned long		bi_rw;		/* bottom bits READ/WRITE, I/O操作标志(低位是读写位,高位是优先级)
						 * top bits priority
						 */

	struct bvec_iter	bi_iter;

	/* Number of segments in this BIO after
	 * physical address coalescing is performed.
	 */
	unsigned int		bi_phys_segments;  //合
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值