块IO层(Linux内核源码分析)

背景

本篇博客重点分析块IO层,试图了解在linux源码中是如何实现块IO的。

基本知识

块设备与字符设备

块设备与字符设备都是物理外设。简单来说,块设备与字符设备的最大区别在于块设备都随机对数据片段进行读写的,而字符设备都以顺序对数据片段进行读写的。
比如磁盘、CD-ROM盘、闪存就属于块设备。键盘、串口属于字符设备。

扇区与块

扇区是块设备的最小寻址单元,也就是说,是物理上的最小单元。而块则不同,块是文件系统进行IO的最小单元,就是说,块是逻辑上的最小单元。所以,对于编程者来说,可能更为在意的是块的概念。
由此看来,扇区与块的关系就很明了了,块一定是扇区整数倍,而且一定要小于内存中一个页的长度。通过扇区的大小是512字节。

页与块

页是内存中的一个基本管理单元。
块是文件系统的一种抽象,内核执行的所有磁盘操作都是按照块进行的。

源码分析

我们可以先思考一下这个问题,从磁盘这样的块设备中要读取数据到内存中,从整体来看内核需要干什么?
首先是不是需要知道磁盘哪块的数据要放入到内存中的哪个位置?
然后需要知道是如何将数据放入内存中,也就是以怎样的方式?
知道了前面的之后,就需要考虑一个问题,内核中需要处理的块IO一定不只一个,如何在一小段时间内来了许多需要进行块IO的请求,这个时候该怎么处理呢?难道不需要管理随便的找块IO请求进行处理吗?
接下来我们就通过源码逐个分析这些问题。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值