【问题标题】:Do modern computer systems (x86 architecture) have virtual adressing independent of the OS?现代计算机系统(x86 架构)是否具有独立于操作系统的虚拟寻址?
【发布时间】:2019-06-29 20:34:34
【问题描述】:

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

我想知道的是,如果我要在 C/Assembly 中为“裸”计算机硬件编写内核,我可以使用虚拟寻址吗?我一直在查看内核的源代码,它似乎使用虚拟寻址,但这怎么可能呢?页表不是操作系统实现的吗?

感谢您的帮助

【问题讨论】:

  • 获取自 386 以来任何处理器的手册并阅读。他们有硬件分页。操作系统只是控制它

标签: kernel virtual-memory page-tables addressing


【解决方案1】:

“现代架构”有一个MMU,但是小型控制器,例如Arduino不要。 如果您查看 Linux 内核源代码,它具有 MMU 和 no-MMU 架构的实现。

有代码专门设置页表并解决由于页面位于交换区域中而引起的页面错误。这段代码可能不会被换出,IIRC Linux 也永远不会换出自己,因此它自己的内存始终保留在页表中,从而允许内核空间也可以在虚拟内存中运行。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      • 2015-03-10
      相关资源
      最近更新 更多