【发布时间】:2015-05-03 21:50:45
【问题描述】:
我有兴趣知道在windows和linux下,文件缓存在进程之间起作用吗?如果进程 A 读取整个文件,而新进程 B 想要读取其中的部分(或全部),假设文件已经在内存中是否有意义?还是缓存只发生在每个进程中的每个文件对象?
【问题讨论】:
标签: linux windows caching internals
我有兴趣知道在windows和linux下,文件缓存在进程之间起作用吗?如果进程 A 读取整个文件,而新进程 B 想要读取其中的部分(或全部),假设文件已经在内存中是否有意义?还是缓存只发生在每个进程中的每个文件对象?
【问题讨论】:
标签: linux windows caching internals
Windows 和 Linux 都在系统内存中缓存文件数据,与进程分开。但是,您无法对在任何给定时间仍有多少文件(如果有)仍在缓存中做出任何假设。
操作系统维护一个固定大小页面的缓存(通常在 Linux 上为 4 KB,在 Windows 上为 256 KB)。每个页面都包含一个文件的一部分。当您的进程进行读取时,操作系统会在缓存中搜索包含您请求的数据的页面。如果找不到您请求的所有数据,它会将所需的页面从磁盘读取到缓存中,可能会覆盖其他现有页面。
【讨论】: