文件是否总是以 $BLOCKSIZE 增量缓存?

文件是否总是以 $BLOCKSIZE 增量缓存?

给定 4KB 块大小,当从磁盘读取 1KB 文件并将其缓存在主内存中时,是否会缓存包含该文件的整个 4KB 块?

同样,如果打开一个 100KB 文件,在其中查找 50KB,然后读取 1KB 数据,那么是否只有包含 1KB 数据读取的 4KB 块缓存在主内存中,而不是整个文件?

我假设 ext4 文件系统,但不坚持它。

答案1

是的。

权威的Linux 页面缓存基础知识状态

文件不仅在写入期间写入页面缓存,而且在读取文件时也会写入页面缓存。

自动存储文件在Page Cache中一般是相当有优势的。

这适用于基于块的文件系统,即 ccfs、ext?、gfs、ifs、xfs,如下所示他的图。这也得到了证实页缓存,内存和文件之间的关系,其中明确指出:

如果您从文件中读取单个字节,则包含您请求的字节的整个 4KB 块将从磁盘读取并放入页面缓存中。

该网页的第三段仅确认了包含主内存中缓存的 1KB 数据读取的 4KB 块,而不是整个文件。

相关内容