现代计算机是以实模式还是虚拟实模式启动的?

Do modern computers boot in real mode or virtual real mode?

所以我阅读了有关处理器模式的信息,并了解到虚拟实模式允许实模式应用程序,例如DOS 应用程序如 BIOS 程序到 运行 保护模式操作系统内。

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

do the current systems load in real mode first and then protected more or directly into virtual real mode because otherwise, we'll have to create a multiboot bootloader starting with real mode then jumping to virtual. Doesn't virtual real mode make it easy?

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

  • 切换到保护模式并使用虚拟8086模式(访问BIOS功能),and/or
  • 加载内容时在保护模式和实模式之间切换,and/or
  • 使用"unreal mode"

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

Doesn't virtual real mode make it easy?

虚拟 8086 模式 ("virtual real mode") 支持起来有点痛苦。使其正常工作;您必须具有模拟各种特权指令的异常处理程序(例如 "general protection fault" 处理程序)。本质上;您从异常处理程序的堆栈中获取 "CS:IP",然后进行一些健全性检查(问题是违反段限制还是...?),然后解码 "CS:IP" 处的原始字节以找出代码内容尝试做,然后模拟每个可能的案例,同时确保每个不同案例的“100% 正确”行为。

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