0

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

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

谢谢

4

1 回答 1

1

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

内核中必须有一些物理寻址。否则,将存在先有鸡还是先有蛋的问题,即如何在不知道要映射到的物理地址的情况下设置逻辑寻址。

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

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

内核模式地址转换非常依赖于硬件。一些系统使用户模式页表本身可分页。在这样的系统中,有两个级别的地址转换(页表的虚拟地址和使用页表的虚拟地址)。底层硬件将特定地址范围定义为内核地址。其他系统允许系统(内核)地址空间完全在软件中定义。在这样的系统中,内核和用户地址转换几乎是相同的。

于 2016-02-10T14:51:05.700 回答