【问题标题】:What's the difference between Virtual-8086 Mode and Real-Address Mode in x86 processorx86处理器中的Virtual-8086 Mode和Real-Address Mode有什么区别
【发布时间】:2017-08-24 00:44:15
【问题描述】:

在维基百科中,对虚拟8086模式的解释是这样说的

在 80386 微处理器及更高版本中,虚拟 8086 模式(也称为 virtual real mode, V86-mode or VM86) 允许执行实模式 不能直接在保护模式下运行的应用程序,而 处理器正在运行保护模式操作系统

我认为这意味着虚拟8086模式可以访问系统内存和硬件设备。

以及实地址模式的解释

实模式,也叫实地址模式,是所有的操作模式 x86 兼容的 CPU。实模式的特点是 20 位分段 内存地址空间(正好提供 1 MiB 的可寻址内存)和 对所有可寻址存储器、I/O 地址的无限制直接软件访问 和外围硬件。实模式不支持内存 保护、多任务处理或代码特权级别

我认为它们之间没有区别。 有人知道吗?

【问题讨论】:

  • 一个简单的解释是,在实模式下,一切都在环 0(监督模式)中运行,任何中断或异常发生都使用实模式语义。运行虚拟 8086 模式的代码在 ring 3(用户模式)中运行,任何中断或异常都使用保护模式语义发生。

标签: assembly x86 real-mode


【解决方案1】:

我认为这意味着虚拟8086模式可以访问系统内存和硬件设备。

不,不是真的。在虚拟 8086 模式下,还有一个保护模式操作系统(设置虚拟部分的操作系统)在后台运行并决定您可以访问哪些内存和设备。一些设备也可能是虚拟的,并由系统模拟。例如,旧显卡。

在实模式下,程序直接在真正的硬件上运行——就像它在原始 8086 中所做的那样(这是唯一的模式)。即使有操作系统,如 PC-DOS,应用程序仍然可以无限制地访问所有硬件和所有内存。当然也可以很容易地让一切崩溃。

【讨论】:

  • 如果我的记忆正确,处理器不可能在不进行重置的情况下从保护模式切换到实模式。
  • 在 286 上确实如此,@Jeremy,所以你的记忆力并没有完全让你失望。 :-) 386 使退出保护模式和返回实模式变得更加容易。基本上,您更改段寄存器,禁用 A20 线,并清除 CR0 寄存器中的 PE 位。不需要丑陋的 CPU 重置解决方法。
  • 我相信 CPU-reset 变通方法流行的原因在于它的速度(快到足以在上下文切换中使用)。 Dave 在 Dave's Garage 的一段视频中谈到了这一点,他指出当时的差异大约是 15 毫秒,而大约是 800 微秒。引用:youtube.com/watch?v=E8gOW0hFoJ0
【解决方案2】:

Virtual-x86 是在保护模式下工作的实地址模式。

【讨论】:

    猜你喜欢
    • 2013-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 1970-01-01
    • 2018-06-05
    • 2022-12-18
    相关资源
    最近更新 更多