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

linux-kernel - 内核空间和用户空间的管理页表条目 (PTE) 有何不同?

在 Linux 操作系统中,启用页表后,内核只会将属于内核空间的 PTE 映射一次,而不再重新映射它们?此操作与用户空间中的 PTE 相反,每次进程切换发生时都需要重新映射?

所以,我想知道内核和用户空间中 PTE 管理的区别。

这个问题是问题的扩展部分: 引导期间 Linux 内核空间中的页表

0 投票
1 回答
122 浏览

linux - 如何通过 ring 0 虚拟内存访问 pte?

有人可以指点我有关内核如何将进程页表映射到内核空间的代码或一些资源吗?

这在 32 位和 64 位(在 x86 和 x86_64 处理器上)如何工作?内核如何设置通过内核虚拟地址访问的进程和内核的页表?

似乎有鸡和蛋的问题。您需要内核中的虚拟地址来访问物理页面,但是您需要为此设置页表条目,该条目是使用虚拟地址设置来访问物理页面的。

0 投票
3 回答
1754 浏览

linux-kernel - linux内核页表更新

在 linux x86 分页中。

  1. 每个进程都有自己的页面目录。

  2. 页表遍历从 CR3 指向的页目录开始。

  3. 每个进程共享内核页面目录内容

假设三句话是正确的,假设某个进程进入内核模式并更新他的内核页面目录内容(地址映射,访问权限等......)

问题。由于内核地址空间是在进程之间全局共享的,所以这个更新必须与其他进程的页面目录同步,对吧?

如何管理?

0 投票
0 回答
63 浏览

paging - 虚拟地址空间方程中的页

我已经解决了以下问题..但不确定我是否在正确的轨道上..

如果将 2GB 的虚拟地址划分为 4k 页,则虚拟地址空间中将存在多少页。

我已经计算出,如果 2 31 = 2GB 和 2 12将等于 4k 页面大小..

因此,如果我从 31 中取出 12 位,我将剩下 2 19页..

这是对的还是我离题了?

任何确认/方向(公式)将不胜感激!

0 投票
2 回答
785 浏览

linux-kernel - 内核虚拟内存页面是否可交换

就像每个用户级进程都有自己的虚拟内存空间,其页面被换出/换入,Linux 内核的虚拟内存页面是可交换的吗?

0 投票
1 回答
330 浏览

paging - 为什么使用 PAE 将地址空间从 32 位增加到 36 位

IA-32 架构实施 PAE 以将其地址空间从 32 位增加到 36 位,这是通过将页表划分为三级方案来完成的。

页目录表->页目录->页表->4kb页

从 32 位地址空间增加到 36 位地址空间是如何实现的,这 4 个额外位是从哪里来的?

0 投票
2 回答
4273 浏览

operating-system - 在上下文开关上刷新 TLB

这可能取决于操作系统,但总的来说,据我所知,当发生页面错误(所需页面不在主内存中)时,操作系统将指示 CPU 从磁盘读取页面,我想知道操作系统是否调度到另一个磁盘 I/O 的过程?如果确实如此,那么将在上下文切换时完全刷新 TLB,对吗?

0 投票
1 回答
896 浏览

memory - 64 位架构页表大小

我看过一些关于 32 位页表的例子,大多数都假设 4 字节的页表条目。我想知道 64 位架构是否以相同的方式工作?如果我想在 64 位中实现 2 级和 3 级页表,页表大小范围有什么区别?

0 投票
0 回答
49 浏览

memory - 我可以设置的最大帧大小是多少,它需要在具有 64 位寻址的页表中进行 3 级分页?

我正在做多级分页,我的地址空间是 64 位。我需要找到需要 3 级分页的最大帧大小。

我不明白有一个特定的框架大小会如何迫使我在我的页表中设置一定数量的级别。

0 投票
4 回答
54809 浏览

memory - 多级页表如何节省内存空间?

我试图了解多级页表如何节省内存。据我了解,多级页表总共比单级页表消耗更多的内存。

示例:考虑一个页面大小为 64KB 和 32 位处理器的内存系统。页表中的每个条目都是 4 个字节。

单级页表:需要 16 (2^16 = 64KB) 位来表示页偏移。所以其余 16 位用于索引页表。所以

*页表大小 = 2^16(页数)* 4 字节(每个页表条目的大小)= 2^18 字节*

多级页表:在两级页表的情况下,让我们使用前 10 个最高有效位来索引第一级页表。接下来的 10 位索引到二级页表中,该页表具有页号到帧号的映射。其余 12 位代表页面偏移量。

二级页表的大小 = 2^10(条目数)* 4 字节(每个条目的大小)= 4 KB

所有二级页表的总大小 = 2^10 (二级页表的数量) * 4KB (每个二级页表的大小) = 4 MB

一级页表大小 = 2^10(# of entries) * (10/8) Bytes (Size of each entry) = 1.25 KB

存储一级和二级页表所需的总内存 = 4 MB + 1.25 KB

所以我们需要更多的内存来存储多级页表。

如果是这样,多级页表如何节省内存空间?