【问题标题】:How does Page Cache work in memory? Specifically in Linux页面缓存如何在内存中工作?特别是在 Linux 中
【发布时间】:2015-06-03 22:50:38
【问题描述】:

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

但是,我有疑问。

我们知道,操作系统将帮助页面缓存在物理内存中分配页面以保存可能很快会使用的数据。当内核在页面缓存中发现进程的请求数据时,内核将传递给进程什么?内核是否会将保存需要数据的 PageCache 页面的内容复制到分配给该进程的新页面?还是内核只返回PageCache中页面的指针?

【问题讨论】:

    标签: caching process kernel


    【解决方案1】:

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

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

    【讨论】:

    • 如果我们谈论的是 Linux 怎么办?我们知道 struct address_space 将被操作系统用来描述文件的页面缓存。 Linux 如何处理这个问题?
    • 文件内容只加载一次并共享。见duartes.org/gustavo/blog/post/…
    猜你喜欢
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    • 2015-11-02
    • 2010-09-17
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 2021-06-09
    相关资源
    最近更新 更多