【问题标题】:Is COW the same as Demand paging?COW 和 Demand 分页一样吗?
【发布时间】:2021-09-28 09:01:40
【问题描述】:

我正在阅读:

虽然我完全了​​解 COW 是什么,但我对 Demand 分页一无所知,它与 COW 有什么不同?我将其视为具有不同名称的 COW 的精确副本和实现。我错了吗?

【问题讨论】:

  • 提示:按需分页不涉及任何写入。
  • @MooingDuck 基本概念说:“尝试访问页面。”访问可以是写。

标签: memory memory-management operating-system copy-on-write demand-paging


【解决方案1】:

它们不一样。

按需分页是一种分页机制,您(操作系统)仅在需要时(在页面错误期间)将所需页面加载到内存 (RAM) 中。这与进行大量预取相反,在预取中您会在需要它们之前加载几页内存,以期将来使用它们。

COW 是copy-on-write,一种保存内存写入的方法。例如,当一个进程分叉时,为什么要复制父内存的完整副本?它占用了额外的时间和空间。为什么不改为写时复制,这意味着您让两个进程共享内存,将内存标记为只读,然后仅在其中一个进程想要写入该页面时复制页面。

按需分页是一种虚拟内存策略。 COW 是共享内存的优化。

【讨论】:

  • 但是从你解释的 COW 使用需求分页来看,我完全糊涂了。
  • COW 与请求分页无关。 COW 以何种方式使用请求分页? COW 是关于共享内存中已经存在的内存,例如在分叉期间。需求分页是关于何时将内存从硬盘驱动器引入 RAM。
  • 你能举例说明什么时候使用请求分页吗?
  • 我没有具体的例子,因为它是一种策略,但这是假设的。想象一个系统开始时在 RAM 中没有内存。使用请求分页,在第一次访问内存时,我们意识到它不在磁盘中(页面错误),我们只加载包含我们想要的数据的页面。如果下一次内存访问是在与我们引入的页面相邻的页面中,没关系,我们仍然会产生页面错误并仅加载这个新的相邻页面。所以需求分页就是这样,只有在需要时才加载到内存中,以前从来没有。
  • 通过预取,我们可以通过在第一个页面错误期间加载相邻页面来保存第二个页面错误,只需猜测它可能会在未来使用(它在我的例子)。预取的少数缺点之一是它的猜测。有时你会花时间加载你不需要的额外内存。按需分页保证您只会加载到您明确访问的内存中。
猜你喜欢
  • 2013-07-15
  • 1970-01-01
  • 2018-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-18
  • 2014-04-06
相关资源
最近更新 更多