给定 4KB 块大小,当从磁盘读取 1KB 文件并将其缓存在主内存中时,是否会缓存包含该文件的整个 4KB 块?
同样,如果打开一个 100KB 文件,在其中查找 50KB,然后读取 1KB 数据,那么是否只有包含 1KB 数据读取的 4KB 块缓存在主内存中,而不是整个文件?
我假设 ext4 文件系统,但不坚持它。
答案1
是的。
权威的Linux 页面缓存基础知识状态
文件块不仅在写入期间写入页面缓存,而且在读取文件时也会写入页面缓存。
和
自动存储文件块在Page Cache中一般是相当有优势的。
这适用于基于块的文件系统,即 ccfs、ext?、gfs、ifs、xfs,如下所示他的图。这也得到了证实页缓存,内存和文件之间的关系,其中明确指出:
如果您从文件中读取单个字节,则包含您请求的字节的整个 4KB 块将从磁盘读取并放入页面缓存中。
该网页的第三段仅确认了包含主内存中缓存的 1KB 数据读取的 4KB 块,而不是整个文件。