Linux kernel 用户内核地址划分

Linux kernel 用户内核地址划分,linux-kernel,kernel,paging,arm,mips,Linux Kernel,Kernel,Paging,Arm,Mips,在ARM linux中,用户内核虚拟地址范围按3:1的比例划分 但在MIPS linux中,这通常是2:2 有人知道这种设计差异的动机吗 我有一个模糊的想法,这与以下事实有关:在MIPS中,TLB重新填充是在s/w中管理的,内核TLB条目是某种硬连接的,以确保它们不会遭受TLB丢失。这是MIPS 32位体系结构的一个限制。在大多数MIPS CPU上,用户模式限制为2GB 在用户模式下,只有较低的2GB虚拟地址(0x0000_00000到0x7fff_ffff)可以访问。这部分地址空间称为kuse

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

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

有人知道这种设计差异的动机吗


我有一个模糊的想法,这与以下事实有关:在MIPS中,TLB重新填充是在s/w中管理的,内核TLB条目是某种硬连接的,以确保它们不会遭受TLB丢失。

这是MIPS 32位体系结构的一个限制。在大多数MIPS CPU上,用户模式限制为2GB

在用户模式下,只有较低的2GB虚拟地址(
0x0000_00000到0x7fff_ffff
)可以访问。这部分地址空间称为
kuseg
<代码>Kuseg地址由TLB翻译。TLB重新填充是否在软件中完成与此无关

内核位于512MB虚拟空间中,从
0x8000\u 0000扩展到9fff\u ffff
。这部分地址空间称为
kseg0
。Kseg0地址不会被TLB转换。通过移除MSB来转换这些地址(即,虚拟地址范围0x8000\u 0000-9fff\u ffff硬连线到物理地址范围
0x0000\u 0000-0x1fff\u 0000

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