2011-01-28 109 views
7

考虑到Linux和32位x86 arch,可访问的4GB地址空间有3:1的分隔。用户空间分配0-3Gb,而3-4Gb分配给内核。 大于3Gb并因此位于内核地址空间中的虚拟地址如何转换为物理地址?页表是否会出现?内核虚拟地址转换

回答

5

梅尔戈曼的书Understanding the Linux Virtual Memory Manager有一些信息。

简短回答:是的,内核设置页表以将物理地址0转换为虚拟地址3 GiB。 (3.7.1节)。这包括内核加载到的物理位置(通常为x86上的1MB)。

+0

感谢您的回答。做了一些Google搜索之后,我发现有一个#define PAGE_OFFSET,它是3GB(可配置),内核虚拟地址有一对一映射到物理地址,通过从内核虚拟地址中减去PAGE_OFFSET而得到,因此不需要使用页表。如果我错了,请纠正我。 – user593575 2011-01-31 05:33:42