问题标签 [page-tables]

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 回答
95 浏览

page-tables - 我们什么时候需要三级页表

如果我们有一台 64 位地址的机器,并且每个页表条目只包含一个指向分配帧的指针。如果我们需要一个三级页表,我如何计算可能的最大帧大小?我对三级页表很困惑,在什么情况下我们需要一个三级页表?任何帮助,将不胜感激。

0 投票
0 回答
478 浏览

c - 了解 Qemu 地址转换

这是我的设置:

在 vm 中,在用户空间程序中,我在地址 bf9ee1a0 处存储了一个值为“8”的变量。

当我在vm内部的内核空间中调用virt_to_phys函数时,我得到了一个与该地址相对应的物理地址ff9ee1a0。

在qemu上,pte和pte_addr分别是a5913865和bf955f78。我只是使用了x86_cpu_handle_mmu_fault函数并添加了一些printf语句。我的理解是 os 和 qemu 的映射应该是一样的。即 bf9ee1a0 应该映射到 a5913865。

我知道这里涉及到许多级别的翻译。来宾虚拟 - 来宾物理 - 主机虚拟。

这是我的问题: 1. 我想知道数据实际存储在哪里?

  1. 那么 virt_to_phys() 是什么意思呢?

  2. 我确保在控制寄存器中使用的地址在 vm 和 qemu 中的两个操作系统中都是相同的,用于分页。那么为什么会出现这种差异呢?

  3. 如果需要打印 pte 在 qemu 中的页面内容,如何使用 printf 语句来打印它们?

非常感谢任何见解。

0 投票
2 回答
103 浏览

memory - Copy-On-Write : 父子修改页面后是什么状态?

当你 fork 一个进程时,在开始时,父子共享同一个内存页。但是如果其中一个人在这个页面上写,它会被复制,这样第一个就不会受到这个变化的影响。这大致就是所谓的 Copy-on-Write。

我的问题是:如果我们 fork() 一个进程,然后孩子修改页面会发生什么:页面重复一次,但之后,父亲也修改了页面。页面是否再次重复?父亲“知道”独生子已经被复制了吗?

预先感谢您的帮助。

0 投票
3 回答
2084 浏览

virtualization - Intel EPT表是4级页表吗?

图取自这里在此处输入图像描述

Q1。似乎EPT表保留了guest页表的完整副本,使其成为4级页表。那是对的吗?

Q2。是不是有点浪费空间?

Q3。究竟什么是 EPT 违规?这是否意味着:guest 正在尝试访问一个新的 guest 虚拟地址 (gVA),EPT 表还没有记录,所以它陷入 VMM,并将两个 gVA 和 gPA 条目添加到 EPT 表中。那是对的吗?

0 投票
2 回答
1504 浏览

assembly - 如何在长模式下设置 CR3 寄存器(64 位)

我正在研究我的操作系统项目。入门代码已经跳转到长模式并设置临时页表。我现在已经设置并填充了我自己的页表,并按照我需要的方式完成了内存映射。现在我需要在 CR3 寄存器中设置 PML4T 的物理地址。

这在执行该指令时崩溃。GDB一步一步附上

编辑:

0 投票
1 回答
198 浏览

page-tables - 计算页表的大小

我有一个带有以下提示的任务:

我想我已经弄清楚了。

页面大小 = 8 * 2^10 = 8192,因此偏移量为13 bits
虚拟页数 =20 - 13 = 7
虚拟页 =2^7

这是我有点困惑的地方。我想我应该将有效、脏和引用位添加到物理页号(即2, from 15 - 13)中。然而5 * 2^7 = 640 bytes,这似乎非常小。

上面回答,好像是13 bits

谁能指出我正确的方向?谢谢!

0 投票
1 回答
289 浏览

virtual-memory - 当出现页面错误时,您是否将页面读入 TLB 以及 PT?

我目前正在学习虚拟内存,并且遇到了一些关于 TLB 未命中和页面错误的问题。我的理解是:

当你有一个 TLB 未命中时,你去 PT。如果 PT 有命中,那么很好,您将 PT 条目从内存复制到 TLB。

当你有一个 TLB 未命中,并且当你去 PT 时你也错过了,然后你去磁盘并将页面复制到 PT。

至此,您已将页面复制到 PT,但是您更新 TLB 了吗?例如,您是否也将页面复制到 TLB?还是只更新PT?

谢谢!

0 投票
1 回答
16015 浏览

operating-system - 如何计算有效访问时间

假设 TLB 命中率为 90%,物理内存访问需要 100ns,TLB 访问需要 20ns,计算使用两级页表以及并行 TLB 和页表索引的处理器的有效访问时间。

这是我的公式:

这是我的计算:

由于二级页表,我理解 2* 100ns,我的困惑是当我的教授说 TLB 访问时间 20ns 不应该包含在未命中计算中时。

有人可以解释一下这背后的原因吗?

0 投票
1 回答
550 浏览

linux - 如何在Linux中获取进程的页表内容?

我正在尝试显示我创建的进程的顶级页表。

如何获取我在 Linux 中编写的模块内进程的页表内容?

我在具有 64 位 Intel 架构的 Windows 8 主机上使用 Ubuntu 14.04 LTS 虚拟机。

0 投票
1 回答
24645 浏览

assembly - 页表和页目录的区别

我经常在微处理器和微控制器范式中听到术语地址空间。我知道地址用于引用物理内存(主)中的特定内存块。

如果我是对的,地址空间是所有这些地址的超集。正确的?

通过使用虚拟内存/分页,我们正在使用辅助存储扩展地址空间。

在这个范例中,页表、页表条目和页目录到底是什么?我知道第一个 p.memory 在逻辑上是分段的,这些段被分成页面。那么究竟什么是页表呢?包含 Pages 的表?什么是页面目录,页面表的超级表?