问题标签 [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 投票
0 回答
3021 浏览

linux - 如何将虚拟地址从用户空间转换为物理地址?三种不同的方法在 Linux 内核 4x 版本中给出了不同的结果

0 投票
0 回答
117 浏览

linux-kernel - ARM Linux PTE的有效性

我知道在 ARM 处理器的 MMU 中,PTE 中没有提供一些位,例如引用位或脏位。因此,在这些系统中提供了两个页表——处理器本机页表,既没有引用位也没有脏位,以及存在所需位的软件维护页表。但是,我的问题是,由于处理器本机页表中没有有效位,MMU 是如何找出翻译无效并产生页面错误的?

0 投票
2 回答
565 浏览

linux - Linux页表指针取消引用到底发生了什么?

我正在尝试研究 Linux 内核中的页表遍历。我使用标准方法遍历页表以查找 PFN(例如,不是实际代码):

该系统是

CPU:英特尔(R) 酷睿(TM) i7-3770

CPU @ 3.40GHz

操作系统:Linux Fedora release 22(二十二)内核:4.4.4-200.fc22.x86_64

我试图了解 pgd 指针如何取消引用到 pud 指针。我将简单的代码放入 getPud 函数中:

并尝试通过objdump进行反汇编

我的汇编知识不足以理解诸如callq *0x0

有人可以对getPud中发生的事情有所了解吗?

谢谢

谢尔盖

更新 1

我使用 objdump 来反汇编我创建的 LKM (cpes.ko) 模块以遍历页表。

0 投票
1 回答
52 浏览

memory - How is a page made invalid in global page replacement?

Let us say there are two processes A and B. B needs to insert a new frame in its page table. as there are no frames free, we have to swap out one frame and bring in B's frame from disk. Suppose the operating system follows global page replacement scheme and picks up a frame in which we have A's data. Now, to swap this frame out we need to change in A's page table that corresponding frame is invalid. To do that in general.we need to know which process's data is there in a particular frame in the memory so that we can go to it's page table and alter the bit to invalid. How is this acchieved? Does each frame in the memory also store process id of the corresponding process whose data it is having?

0 投票
1 回答
579 浏览

memory-management - 为什么我们对页表中的每个条目都有一个验证位?

我正在研究分页内存管理,并且在某个时刻,我发现页表的每个条目都有一个相关联的位,以指示帧是否是有效或无效的帧,以供与此相关联的进程访问页表。

我的问题是:如果一个进程有一个专用的页表,其条目对应于其逻辑页和内存中的物理帧之间的映射,为什么我们需要添加一个外部位来指示一个帧是否被一个条目引用进程自己的页表是否可以访问?

我自己的解释是,由于某些未知的原因,一个进程可能在其自己的页表中具有可能未使用或由于某种原因变得无效的条目。

0 投票
0 回答
286 浏览

linux - ARM Linux,年轻的比特

我了解如何模拟 Linux 中的脏位,但我对访问/年轻位感到困惑。

MMU 如何区分真正的页面错误和进一步访问产生的页面错误。换句话说,Linux 是否会将 Hardware PTE 的最后两位重置为“00”?

我已经阅读了 ARM Linux 如何模拟 PTE 的脏、访问和文件位?,但是它没有具体说明 Linux PTE 和硬件 PTE 中的哪些确切位被操纵来模拟访问位?

0 投票
0 回答
55 浏览

x86 - x86 页面目录多进程

我想知道是否所有正在运行的进程的页面目录都保存在主内存中,或者在任何时候我们只在内存中保留一个页面目录,并且在上下文切换时旧的页面目录将被清除出内存,而新的一个被带到记忆中。

将 Linux 视为操作系统。

0 投票
1 回答
3059 浏览

caching - 计算每个进程的虚拟页面数

我有 64 KB 的页面、4GB 的物理内存和一台 64 位机器。

我了解到 64 位机器会产生 256TB 的虚拟内存。如果我必须计算每个进程的虚拟页面数,那将是:

总虚拟内存/页面大小 = 256TB/64KB = 4x10^9 页?我已经在线阅读了文档,但我没有完全包装它。

0 投票
2 回答
1815 浏览

memory-management - 在转换内核地址时,pgd_bad、pmd_bad、pud_bad 是什么意思?

有人可以解释一下内核页表中的宏吗?

0 投票
0 回答
64 浏览

operating-system - 计算页表的大小

16 位系统,32KiB 物理内存。1KiB 页面大小。每个页表条目由帧号、一个存在/不存在位和一个 2 位长的杂项信息字段组成。请计算页表的大小。

(32KiB/1KiB) * 2 位=64 位?

我认为这只是物理内存/页面大小乘以杂项字段的长度,但这不会给我们 64 位吗?我认为这是不对的,但我可能弄错了,非常感谢任何和所有帮助!