问题标签 [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.
page-tables - 我们什么时候需要三级页表
如果我们有一台 64 位地址的机器,并且每个页表条目只包含一个指向分配帧的指针。如果我们需要一个三级页表,我如何计算可能的最大帧大小?我对三级页表很困惑,在什么情况下我们需要一个三级页表?任何帮助,将不胜感激。
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. 我想知道数据实际存储在哪里?
那么 virt_to_phys() 是什么意思呢?
我确保在控制寄存器中使用的地址在 vm 和 qemu 中的两个操作系统中都是相同的,用于分页。那么为什么会出现这种差异呢?
如果需要打印 pte 在 qemu 中的页面内容,如何使用 printf 语句来打印它们?
非常感谢任何见解。
memory - Copy-On-Write : 父子修改页面后是什么状态?
当你 fork 一个进程时,在开始时,父子共享同一个内存页。但是如果其中一个人在这个页面上写,它会被复制,这样第一个就不会受到这个变化的影响。这大致就是所谓的 Copy-on-Write。
我的问题是:如果我们 fork() 一个进程,然后孩子修改页面会发生什么:页面重复一次,但之后,父亲也修改了页面。页面是否再次重复?父亲“知道”独生子已经被复制了吗?
预先感谢您的帮助。
virtualization - Intel EPT表是4级页表吗?
图取自这里。
Q1。似乎EPT表保留了guest页表的完整副本,使其成为4级页表。那是对的吗?
Q2。是不是有点浪费空间?
Q3。究竟什么是 EPT 违规?这是否意味着:guest 正在尝试访问一个新的 guest 虚拟地址 (gVA),EPT 表还没有记录,所以它陷入 VMM,并将两个 gVA 和 gPA 条目添加到 EPT 表中。那是对的吗?
assembly - 如何在长模式下设置 CR3 寄存器(64 位)
我正在研究我的操作系统项目。入门代码已经跳转到长模式并设置临时页表。我现在已经设置并填充了我自己的页表,并按照我需要的方式完成了内存映射。现在我需要在 CR3 寄存器中设置 PML4T 的物理地址。
这在执行该指令时崩溃。GDB一步一步附上
编辑:
page-tables - 计算页表的大小
我有一个带有以下提示的任务:
我想我已经弄清楚了。
页面大小 = 8 * 2^10 = 8192
,因此偏移量为13 bits
。
虚拟页数 =20 - 13 = 7
位
虚拟页 =2^7
页
这是我有点困惑的地方。我想我应该将有效、脏和引用位添加到物理页号(即2
, from 15 - 13
)中。然而5 * 2^7 = 640 bytes
,这似乎非常小。
上面回答,好像是13 bits
。
谁能指出我正确的方向?谢谢!
virtual-memory - 当出现页面错误时,您是否将页面读入 TLB 以及 PT?
我目前正在学习虚拟内存,并且遇到了一些关于 TLB 未命中和页面错误的问题。我的理解是:
当你有一个 TLB 未命中时,你去 PT。如果 PT 有命中,那么很好,您将 PT 条目从内存复制到 TLB。
当你有一个 TLB 未命中,并且当你去 PT 时你也错过了,然后你去磁盘并将页面复制到 PT。
至此,您已将页面复制到 PT,但是您更新 TLB 了吗?例如,您是否也将页面复制到 TLB?还是只更新PT?
谢谢!
operating-system - 如何计算有效访问时间
假设 TLB 命中率为 90%,物理内存访问需要 100ns,TLB 访问需要 20ns,计算使用两级页表以及并行 TLB 和页表索引的处理器的有效访问时间。
这是我的公式:
这是我的计算:
由于二级页表,我理解 2* 100ns,我的困惑是当我的教授说 TLB 访问时间 20ns 不应该包含在未命中计算中时。
有人可以解释一下这背后的原因吗?
linux - 如何在Linux中获取进程的页表内容?
我正在尝试显示我创建的进程的顶级页表。
如何获取我在 Linux 中编写的模块内进程的页表内容?
我在具有 64 位 Intel 架构的 Windows 8 主机上使用 Ubuntu 14.04 LTS 虚拟机。
assembly - 页表和页目录的区别
我经常在微处理器和微控制器范式中听到术语地址空间。我知道地址用于引用物理内存(主)中的特定内存块。
如果我是对的,地址空间是所有这些地址的超集。正确的?
通过使用虚拟内存/分页,我们正在使用辅助存储扩展地址空间。
在这个范例中,页表、页表条目和页目录到底是什么?我知道第一个 p.memory 在逻辑上是分段的,这些段被分成页面。那么究竟什么是页表呢?包含 Pages 的表?什么是页面目录,页面表的超级表?