4

我知道通常的内存访问将通过页表进行虚拟地址到物理地址的转换。但是 pte 修改呢?说操作系统要修改一个进程的页表项,是不是也要经过进程的页表呢?换句话说,页表中是否有指向自身的条目?

4

2 回答 2

2

这在很大程度上取决于 CPU/MMU/硬件。

在 x86 PTE 上,通常在已启用页面转换时修改(不要将其与页表的初始设置混淆,这可以在启用页面转换之前完成),因此内存访问必须涉及虚拟到物理地址的转换。

当然,您可以关闭页面翻译。或者您可以使用 DMA 或其他电路(或 CPU)从 CPU 外部更改内存内容。但这是非常不寻常的。

虽然我不知道很多不同的 CPU,但很有可能它们中的一些具有特殊功能,可以在访问 PTE 时直接操作 PTE,而无需地址转换。

在 x86 上,通常还设置页面目录(最顶层的页表),使其其中一个条目指向页面目录。这使您可以访问虚拟地址子范围中的所有 PDE 和 PTE。

于 2012-08-15T17:09:27.880 回答
0

这是正确的。通常有一个 PTE 指向页面目录本身的物理地址,以使其可以从虚拟地址空间访问。

于 2012-08-15T09:43:58.703 回答