Page Cache在内存中是如何工作的?具体在 Linux

How does Page Cache work in memory? Specifically in Linux

众所周知,操作系统实现了页面机制来实现快速访问。每次,当进程请求内核将二进制文件从磁盘加载到其内存 space 时,内核将首先查看页面缓存。如果二进制文件已经缓存在页面缓存中,则无需访问硬件磁盘。这样,OS可以减少开销。

但是,我有一个问题。

正如我们所知,OS 将帮助页面缓存在物理内存中分配页面以保存即将可能使用的数据。当内核在页缓存中发现进程请求的数据时,内核将传递给进程什么?内核是否会将包含所需数据的 PageCache 页面的内容复制到分配给该进程的新页面?或者内核只是 return PageCache 中页面的指针?

有很多操作系统,所以如果我们谈论任意真实的、未来的或理论上的操作系统,答案可能是 "either"。

然而,对于我所知道的所有真实操作系统,页面只会在内存中出现一次。为每个页面创建一个副本是非常低效的,这样做不会产生任何好处。