一文图解|I/O 调度层

文章详细介绍了Linux内核中的I/O调度层如何通过排序、合并I/O请求来优化磁盘操作,特别是讨论了Deadline调度算法,它使用红黑树和FIFO队列来确保I/O请求的及时性和顺序性,防止饥饿现象发生。
摘要由CSDN通过智能技术生成

当我们使用 read() 和 write() 系统调用向内核提交读写文件操作时,内核并不会立刻向硬盘发送 I/O 请求,而是先将 I/O 请求交给 I/O 调度层进行排序和合并处理。经过 I/O 调度层加工处理后,才会将 I/O 请求发送给块设备驱动进行最终的 I/O 操作。

下图是块设备 I/O 栈的架构图:

在上图中,红色那一层便是 I/O 调度层。

I/O 调度层主要完成的工作如下:

  • 对新提交的 I/O 请求进行排序。
  • 如果新的 I/O 请求能与旧的 I/O 请求进行合并,那么将会把两个 I/O 请求合并成一个 I/O 请求。
  • 向块设备驱动层发送 I/O 请求。

 

什么是 I/O 调度层

现实中块设备的种类非常多,如磁盘、SSD(固态硬盘) 和 CD-ROM 等。由于不同种类的块设备其物理结构不同,所以优化 I/O 效率的算法也不一样。如:SSD 读写任意地址中的数据速度都一样,所以就没必要进行额外的优化,只需要将用户提交 I/O 操作直接发送给块设备驱动即可。

但有些块设备的物理结构比较特殊,如磁盘,其读写速度与磁头移动的距离(寻道)有关,所以磁头移动的距离越远,读写速度就越慢。

磁盘的物理结构如下图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值