现代计算机系统(x86 架构)是否具有独立于 OS 的虚拟地址?

Do modern computer systems (x86 architecture) have virtual adressing independent of the OS?

抱歉,如果这个问题听起来有点混乱或混乱,但我对这个概念感到很困惑。

我想知道的是,如果我用 C/Assembly 为 "bare" 计算机硬件编写内核,我是否可以使用虚拟寻址?我一直在查看内核的源代码,它似乎使用了虚拟寻址,但这怎么可能呢?页面 table 不是由 OS 实现的吗?

感谢您的帮助

虚拟内存完全由操作系统实现。逻辑地址转换,这是实现虚拟内存的先决条件,在硬件中实现。逻辑寻址取决于维护页表的操作系统。

"Modern architectures"有一个MMU, but small controllers e.g. Arduino没有。 如果您查看 Linux 内核源代码,它有 MMU 和 no-MMU 架构的实现。

有专门设置页表和解决因页面位于交换区中而引起的 page-faults 的代码。这段代码可能不会被换出,IIRC Linux 永远不会自己换出,所以它自己的内存总是保留在页表中,从而允许内核 space 到 运行 在虚拟内存也是。