2

因此,我在阅读有关处理器模式的信息并了解到虚拟实模式允许实模式应用程序(例如 BIOS 程序等 DOS 应用程序)在受保护模式的操作系统中运行。

所以我的问题是先在实模式下加载当前系统,然后再保护更多或直接进入虚拟实模式,否则,我们将不得不创建一个从实模式开始的多重引导引导加载程序,然后跳转到虚拟模式。虚拟现实模式不是很容易吗?

4

1 回答 1

5

首先在实模式下加载当前系统,然后进行更多保护或直接进入虚拟实模式,否则,我们将不得不创建一个从实模式开始的多重引导引导加载程序,然后跳转到虚拟模式。虚拟现实模式不是很容易吗?

对于过时的系统(仍然使用 BIOS 而不是 UEFI);固件必须假设引导加载程序可以:

  • 切换到保护模式并使用虚拟 8086 模式(访问 BIOS 功能),和/或
  • 在加载内容时在保护模式和实模式之间切换,和/或
  • 使用“虚幻模式”

因此,BIOS 本身不能/不得使用保护模式(或虚拟 8086 模式),因为这可能会阻止引导加载程序正常工作。

虚拟现实模式不是很容易吗?

支持虚拟 8086 模式(“虚拟实模式”)有点痛苦。使其正常工作;您必须有模拟各种特权指令的异常处理程序(例如“一般保护故障”处理程序)。本质上; 您从异常处理程序的堆栈中获取“CS:IP”,然后进行一些完整性检查(问题是违反段限制还是......?),然后解码“CS:IP”处的原始字节以找出代码试图做,然后模拟每个可能的情况,同时确保每个不同情况的“100%正确”行为。

使用虚拟 8086 模式的唯一合理理由是,当您想要在古老的多任务 32 位操作系统(例如 Windows 95)下运行为古老的实模式操作系统(例如 MS-DOS)设计的应用程序时;与模拟所有其他硬件(虚拟 PIT 芯片、虚拟键盘控制器、虚拟显卡等)的巨大麻烦相比,模拟所有特权指令的麻烦相对较小。

于 2019-11-01T00:49:10.757 回答