如何在Linux中实现PAE?


3

只有36个物理地址行,但页表项长度为64位。CPU如何检查地址是否有效?Linux OS如何将不同进程中的相同虚拟地址映射到不同的物理地址?

这是关于物理地址扩展(PAE)的维基百科文章。 http://en.wikipedia.org/wiki/Physical_Address_Extension


通过为它们添加不同的偏移量,也许?
H2CO3 2013年

2
PT条目是64位,因为它们只能是32或64位宽。没有像CPU一样可以访问的36位整数(无论如何都不是真正的 CPU,没有移位和屏蔽)。然而,没关系。操作系统会将64位大小的36位整数写入PT,并且应用程序使用32位整数作为指针,PT转换为相应条目所指向的任何内容。包括指向相同物理地址的几个虚拟地址。没有人关心,硬件只是将你告诉它的内容映射到你告诉它的内容。
Damon 2013年

Answers:


1

只有36个物理地址行,但页表项长度为64位。CPU如何检查地址是否有效?

这实际上是由一个称为内存管理单元(MMU)的硬件完成的,它处理虚拟到物理地址转换。就地址“有效”而言,每个进程都有自己唯一的地址空间(从而实现虚拟内存方案),因此任何地址在技术上都是有效的。请记住,进程可以分配比实际可用内存更多的内存。

MMU使用转换后备缓冲区(TLB)将虚拟地址快速解码为保存在页表中的物理地址。

Linux OS如何将不同进程中的相同虚拟地址映射到不同的物理地址?

这又是由于每个进程都具有唯一的虚拟地址空间,这是实现虚拟内存的基础。给定进程的虚拟地址映射到某些物理存储硬件(RAM,磁盘等),但映射是在运行时由操作系统和MMU完成的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.