内核模式 - 物理地址或虚拟地址?

时间:2016-02-09 12:01:58

标签: linux linux-kernel virtual-memory kernel-mode

在内核模式下运行的代码是否使用物理地址或虚拟地址?

如果是虚拟的,它会使用哪些转换表?与用户模式表相比,它们的更新方式不同吗?

由于

1 个答案:

答案 0 :(得分:1)

答案是内核模式代码使用虚拟,逻辑和物理寻址的混合。每种方法的使用量取决于底层硬件和操作系统。

内核中必须有一些物理寻址。否则,如果不知道要映射的物理地址,就会出现鸡和鸡蛋如何设置逻辑寻址的问题。

理想情况是系统只使用系统寄存器的物理地址。

逻辑/虚拟地址的区别也很重要。内核地址空间的某些部分可以是可分页的(虚拟内存)。其他部分可能是不可分页的(仅限逻辑内存)。

内核模式地址转换与硬件有很大关系。某些系统使用户模式页表可以自行分页。在这样的系统中,存在两级地址转换(页表的虚拟地址和使用页表的虚拟地址)。底层硬件将特定地址范围定义为内核地址。其他系统允许系统(内核)地址空间完全由软件定义。在这样的系统中,内核和用户地址转换几乎是一样的。