问题标签 [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.
c - 如何转储页表?
我是 linux、C 和堆栈溢出的新手。我试图查看所有正在运行的进程的页表。为此,我正在使用dump_pagetable.c。
我尝试通过正常编译先运行gcc dump_pagetables.c -o dump_pagetables.out
。但它给了我错误:
- 如何让这段代码运行?
- 如何修改
dump_pagetables.c
以便我也可以看到大页面。
linux - 如何设置 CONF_X86_PTDUMP?
我有一个 3.19.0-25 通用内核。我想查看 Linux 中所有进程的页表。所以,我被告知要设置CONF_X86_PTDUMP
. 但是我不知道如何设置,并且关于构建自己的内核CONF_X86_PTDUMP
的 Ubuntu 页面没有帮助。我在哪里验证是否设置了标志。提前致谢。CONF_X86_PTDUMP
linux-kernel - 如何为 github 中的文件应用内核补丁?
我想查看页表条目。所以我将内核构建到 4.1.4
但我仍然看不到页表条目。现在我明白了dump_pagetable.c必须打补丁。我什至不知道在哪里可以找到这个补丁的名称。
- 我可以单独修补这个文件吗?还是我必须修补整个依赖文件夹?如果是这样,它是哪个文件夹?
- 另外,我不知道修补文件所需的命令,请指导我完成整个过程。
- 如何检查补丁是否成功完成?
memory - 虚拟内存 - 计算页表中的页数
- 虚拟地址空间为 64 位
- 页面大小为 64KB
- 字大小为 4 字节
页表中有多少页?
一开始我以为:
page size = 64KB = 2^16bytes,所以偏移量使用 64 的 16 位因此,剩下 48 位 -> 页表中有 2^48 个页面(我不明白在哪里使用有关字大小的信息) 但是,正确的答案是有 2^50 页,这让我感到困惑..
然后我想可能页面偏移量只有14bits,因为字长是4bytes = 2^2bytes。所以页表中确实有 2^50 页。
我对吗?我能得到更好的解释吗?
operating-system - 寻址/索引页表
我知道我们可以使用虚拟地址作为索引来搜索页表并从相应的条目中获取物理地址(准确地说是页框号)。而页表在内存中的位置由页表基址寄存器(PTBR)提供。
对于存储在连续物理内存中的小页表,我们可以使用物理地址中的(要索引的页号+页表的基地址)来寻址页表。
对于大页表,表本身可能是分页的,并使用虚拟内存寻址,那么当页表中的相应条目被分页并存储在其他地方时,我们如何将虚拟地址转换为物理地址呢?或者,我们如何处理分页的页表?
非常感谢。
memory-management - 页表条目变脏的方式
访问位和脏 (A/D) 位通知页面是否被访问或写入。当文件加载到内存中时,一些更改仅在内存中,这些更改仍未与存储在磁盘上的文件同步。被修改但没有写回的页面是脏页面。
我的问题是这个概念是否也暗示 ELF 文件?.code、.data 也会变脏吗?如果是,那怎么办?
unix - RSS 值是否必须与页面对齐
我正在通过time命令检查我的应用程序的内存使用情况。它给出以下输出
最大 RSS 为 13300,未对齐页面。我的 64 位机器(ubuntu)上的页面大小为 4096。据我了解,内存分配/释放是基于页面的。但是 RSS 图不是页面对齐的。之后我通过ps命令观察到系统中运行的所有进程都是如此。
这是否意味着我的理解不正确,物理内存是按页面分配/释放的?那么内存是如何分配的,什么是内存粒度。
operating-system - 页表计算
物理内存为 2^20 字节逻辑地址空间为 2048 页页面大小为 4KB
- 页表有多长?
- 每个页表条目除了页框号外还包含有效/无效位,页表有多宽?
- 考虑一个只允许使用地址 0 到 30000 的逻辑地址空间的进程。页表中有多少条目应该设置为有效?
- 是否存在内部或外部碎片?解释。
- 如果系统使用倒排页表,页表中有多少条目?
请帮忙!我明天考试
operating-system - 从 TLB 中逐出条目时更新页表
从 TLB 中逐出条目时是否更新页表?如果是这样,为什么?页表中更新了哪些信息?我认为当被驱逐的页面是干净的时不需要更新页表。
同样,当页面被缓存(引入)到 TLB 时,页表是否更新?
c - 使用 pae 分页时的线性地址转换
我正在尝试从管理程序级别遍历(并打印)进程分页结构。我正在运行的来宾是使用 PAE(物理地址扩展)分页的 32 位操作系统(ubuntu 12.04)。
英特尔手册中的下图显示了使用 PAE 分页时不同结构的详细信息
我对如何使用这些信息感到困惑:
要访问不同的 PDPTE:我应该使用CR3 + i
(包括忽略的位)还是将 CR3 右移 4 位,然后添加一个偏移量(CR3 >> 4) + i
?
同样对于来自 PDPTE 的页面目录的地址,我知道我应该从条目及其 40 位 (12:51) 中排除标志。但是,对于所有 PDPTE,我只得到 0ed PDE(我使用过CR3 + i
)......我曾经kvm_read_guest(vcpu->kvm, cr3 + i, &pdpte, 8)
阅读 PDPTE 并kvm_read_guest(vcpu->kvm, (pdpte >> 12) + i, &pde, 8)
从 PDPTE 中读取 PDE
如果有人对此有任何解释,我将非常感激:)