块设备驱动

本文详细介绍了Linux系统中块设备驱动的工作原理,包括文件系统访问块设备的路径、磁盘数据的块管理、通用块层的功能、IO调度程序的运作机制以及块设备驱动程序的注册和初始化过程。重点阐述了IO调度程序如何通过不同的调度算法优化磁盘操作,以及块设备驱动程序如何处理设备的读写请求。

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

一、文件系统访问块设备的路径

系统调用函数调用vfs函数,vfs获取要访问的文件的描述符、偏移量、数据长度等参数;

vfs层获取文件的address_mapping结构体,若所请求的磁盘空间在磁盘高速缓存中,则直接通过操作磁盘高速缓存;

vfs未获取到文件对应的磁盘缓存,则通过映射层来查找需要访问的磁盘空间地址。文件和磁盘空间都被拆分成块,映射层调用具体文件系统函数,根据文件inode访问文件对应的磁盘索引节点,根据请求的文件块号(逻辑块号,以文件偏移量进行计算)在磁盘索引节点的数据结构中查找对应的磁盘位置(文件对应的磁盘块可能不连续,磁盘索引节点需存储每个逻辑块和磁盘块的对应关系);

确定了需访问的磁盘块后,通用块层调用对应块设备驱动的钩子下发bio请求(每个io请求只能针对连续的磁盘块,因此需确定磁盘块后然后针对每个连续的磁盘块区间下发bio请求);

io调度程序根据内核的读写策略,将物理介质上相邻的io请求聚集在一起,聚集后的内存区称为物

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

picaso77

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值