问题标签 [demand-paging]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
102 浏览

memory - COW 和 Demand 分页一样吗?

我在读:

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

0 投票
2 回答
51 浏览

c - 在不更改新创建的数组的值时,我是否遇到了需求分页?

我正在学习操作系统的内存管理,刚刚了解了虚拟内存以及如何使用按需分页来实现它。

我做了这个简单的程序:

它有2路径:

  1. 一个分配了一个数组4 gb并不断改变它的值。

  2. 另一个分配了一个 数组4 gb,但不改变它的值。

正如我所料,在运行第一个选项后,程序的内存增加到大约4 gb,但第二个没有改变。我猜这是由于内存没有被访问,所以它的页面被“换出”到后备存储,直到再次需要它们。

我的理解正确吗?

0 投票
1 回答
56 浏览

operating-system - 页表中有效/无效位的硬件支持

在阅读有关需求分页的信息时,我可以在几个来源(例如http://www.expertsmind.com/questions/name-the-hardware-to-support-demand-paging-30176232.aspx)中看到我们需要硬件支持页表中每个条目的有效/无效位。但是,我无法理解硬件支持会是什么样子。据我了解,

  1. 页表本身是一个基于软件的结构,即它有 4 字节/8 字节(取决于寻址方案/架构等)条目,这些条目存在于 RAM 中。
  2. 有效/无效位与用于页表每个条目的 4 字节/8 字节是分开的,因此它不像页表条目的 4 字节,我们使用 31 位来存储帧号有效/无效位为 1 位。

所以总而言之,我的问题是 - 有效/无效位的硬件支持是什么样的?如果它可能因实现/架构而异,您能否分享任何特定实现的细节?

0 投票
1 回答
62 浏览

linux-kernel - 匿名按需填零映射页面的 PTE 地址字段是什么?

当程序调用mmap分配一个匿名页(也称为零需求页)时,对应的页表项 (PTE) 的地址字段中会出现什么?我假设内核不会物理内存中创建一个零初始化页面(并将该物理页面的页码输入到 PTE 中),直到请求进程实际接触到该页面 - 因此术语demand-zero。由于它不是磁盘地址,也不是 0(用于未分配的页面),所以那里会出现什么值?作为一个不同但相关的问题,内核如何“知道”该页面将作为需求零页面处理,即故障处理程序应该找到一个物理页面并将其初始化为 0 而不是从磁盘?

0 投票
1 回答
37 浏览

linux - 为什么我的 Linux 没有执行惰性内存分配?

我正在练习使用 Linux 的 Lazy Allocation 和 Demand Paging 策略。

我想要一个我分配的缓冲区,它不会mmap()占用物理内存,直到我真正向它写东西。此外,我希望它以 Linux 的交换页面大小(例如 4K)的步长逐渐扩大(使用更多物理内存),同时我从头到尾连续写入。

根据一些文档搜索,如果只有读取权限,它应该放大,但我在实验中观察到的现实不喜欢这样。

为了测试这一点,我编写了一个程序如下,并在top运行时通过 shell 命令观察内存状态。

我观察到的是,我的应用程序使用的物理内存随着读取操作而不是写入操作而逐渐增长!

也许我的理解是错误的?