本节介绍Linux内核如何实现I/O,重点是内核的三个主要子系统:虚拟文件系统(VFS)、页面缓存和页面回写。这些子系统有助于使I/O无缝、高效和优化。
The Virtual Filesystem 虚拟文件系统
虚拟文件系统允许Linux 内核在不知道当前使用的文件系统类型的情况下调用文件系统的功能并且操作文件系统数据。
The Page Cache 页缓存
页面缓存是最近从磁盘文件系统访问的数据的内存存储。
磁盘访问速度慢得令人痛苦,特别是相对于今天的处理器速度而言。将请求的数据存储在内存中允许内核完成对来自内存的相同数据的后续请求,避免重复磁盘访问。
Page Writeback 页面回写
内核通过使用缓冲区延迟write。当进程发出写请求时,数据被复制到缓冲区中,缓冲区被标记为脏,表示内存中的副本比盘上复制得到的新。
脏缓冲区需要提交到磁盘,同步磁盘上的文件和内存中的数据。这就是所谓的写回。
这在两种情况下发生:
- 当空闲内存缩小到一个阈值以下时,脏缓冲区被写回磁盘,以便现在需要清理的缓冲区可以被删除,释放内存。
- 当脏缓冲区时间超过阈值时,将缓冲区写入磁盘。这可防止数据无限期地保持脏的状态。
网友评论