文章预览
原文连接:https://zhuanlan.zhihu.com/p/41307290 概述 本文主要阐述内核(linux-3.12)的文件系统预读设计和实现。 所谓预读,是指文件系统为应用程序一次读出比预期更多的文件内容并缓存在page cache中,这样下一次读请求到来时部分页面直接从page cache读取即可。当然,这个细节对应用程序透明,应用程序可能的感觉就是下次读的速度会更快,当然这是好事。文中我们会通过设置几个情境(顺序读、随机读、多线程交织读)来分析预读的逻辑。 情境1:顺序读 // 事例代码 { ... f = open( "file" , ....); ret = read(f, buf, 4096 ); ret = read(f, buf, 2 * 4096 ); ret = read(f, buf, 4 * 4096 ); ... } 该场景非常简单:打开文件,共进行三次读(且是顺序读),那让我们看看操作系统是如何对文件进行预读的。 Read 1 第一次进入内核读
………………………………