用户内核地址划分

时间:2010-05-11 08:25:21

标签: linux-kernel kernel paging arm mips

在ARM linux中,用户内核虚拟地址范围的比例为3:1。

但是在MIPS linux中,这通常是2:2

有人知道是什么促使这种设计差异?

我有一个微弱的想法,这与MIPS中的事实有关,TLB重新填充是用s / w管理的,内核TLB条目是硬连线的,确保它们永远不会遭受TLB错过

1 个答案:

答案 0 :(得分:3)

这是MIPS 32位架构的限制。大多数MIPS CPU上的用户模式限制为2GB。

在用户模式下只能访问较低的2GB虚拟地址(0x0000_00000 to 0x7fff_ffff)。这部分地址空间称为kusegKuseg地址由TLB翻译。 TLB补充是否在软件中完成是无关紧要的。

内核位于从0x8000_0000 to 9fff_ffff延伸的512MB虚拟空间中。这部分地址空间称为kseg0。 TLB不翻译Kseg0地址。通过删除MSB来转换这些地址(即虚拟地址范围0x8000_0000-9fff_ffff硬连线到物理地址范围0x0000_0000-0x1fff_0000

有关详细信息,请参阅MIPS手册。