Linux IO Stack 系列 02
2016-02-02
这篇文章我们主要看看 Linux IO 栈主要大体结构,也就是主要涉及的模块:
我们根据上图的总体结构来解释下经过的流程:
- 首先应用程序发起 IO 操作是在用户空间
- VFS 层是 Linux 的虚拟文件系统,提供统一的文件系统视图
- VFS 通过文件操作找到 inode 节点,通过 inode 节点就可以找到通用的 block device
- 通用的 block device 中有个很重的操作,就是利用 io 请求队列对 io 重排序
上面我们在 io 重排序上打上了星号,我们就在看看 io 重排序涉及到的视图总览:
- 通过通用磁盘可以找到请求队列
- 请求队列中存放的就是 IO 请求
- 一个 IO 请求就是我们应用层发起 IO 操作操作时对 page cache 的操作
注意一个 BIO 其实是 page cache 的一个视图,因为 linux 为了提高性能,对 IO 的操作可能只是一个 page 中的少量数据, 所以使用了这样的组织方式。