磁盘数据的内存缓存
Memory Caching of Data from Disk
我一直都知道主内存缓存从磁盘上的文件读取的数据,但我很难将其与程序的典型内存使用情况相协调,如下图所示:
如果我在一个非常大的文件 2010Stats.txt
上使用 fread
或 fgetl
,那么上图中的哪一段内存缓存了来自磁盘的数据?
这是您进程的地址-space。每个进程都有自己的虚拟内存地址-space。除非你 mmap
一个文件,它的数据只有在被 read
系统调用或等价物复制到你的进程的内存中时才会出现。 (C stdio / iostream 函数将在这样的系统调用之上实现。)
磁盘缓存由 OS 内核管理,它必须跟踪内存物理页面的使用方式,以及每个进程的虚拟地址映射。
我一直都知道主内存缓存从磁盘上的文件读取的数据,但我很难将其与程序的典型内存使用情况相协调,如下图所示:
如果我在一个非常大的文件 2010Stats.txt
上使用 fread
或 fgetl
,那么上图中的哪一段内存缓存了来自磁盘的数据?
这是您进程的地址-space。每个进程都有自己的虚拟内存地址-space。除非你 mmap
一个文件,它的数据只有在被 read
系统调用或等价物复制到你的进程的内存中时才会出现。 (C stdio / iostream 函数将在这样的系统调用之上实现。)
磁盘缓存由 OS 内核管理,它必须跟踪内存物理页面的使用方式,以及每个进程的虚拟地址映射。