块设备驱动

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

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

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

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

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

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

在io请求经io调度程序整理完后,块设备驱动向磁盘控制器发送命令进行磁盘的读写;

二、磁盘数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

picaso77

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

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

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

打赏作者

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

抵扣说明:

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

余额充值