磁盘数据的内存缓存

Memory Caching of Data from Disk

我一直都知道主内存缓存从磁盘上的文件读取的数据,但我很难将其与程序的典型内存使用情况相协调,如下图所示:

如果我在一个非常大的文件 2010Stats.txt 上使用 freadfgetl,那么上图中的哪一段内存缓存了来自磁盘的数据?

这是您进程的地址-space。每个进程都有自己的虚拟内存地址-space。除非你 mmap 一个文件,它的数据只有在被 read 系统调用或等价物复制到你的进程的内存中时才会出现。 (C stdio / iostream 函数将在这样的系统调用之上实现。)

磁盘缓存由 OS 内核管理,它必须跟踪内存物理页面的使用方式,以及每个进程的虚拟地址映射。