gpt4 book ai didi

x86 - x86 架构中的 "non-virtualizable"指令是什么?

转载 作者:行者123 更新时间:2023-12-03 14:35:10 27 4
gpt4 key购买 nike

在硬件辅助虚拟化出现之前,由于各种原因,存在无法虚拟化的指令。有人可以解释这些指令是什么以及为什么它们不能被虚拟化吗?

最佳答案

要虚拟化 ISA,必须满足某些要求。 Popek and Goldberg使用如下内容:

一台机器至少有两种模式 (a) 用户模式 ​​ (b) 系统模式 .通常,应用程序在 中运行。用户模式 ​​操作系统在 中运行系统模式 .在 系统模式 ,代码/程序可以不受限制地查看和操作机器。在 用户模式 ​​ ,代码/程序在它可以做什么方面有一些限制,例如未经许可,它不能访问机器的所有内存。

说明是 (a) 特权 或 (b) 没有特权 . 特权 中执行时的指令陷阱用户模式 ​​ .陷印意味着机器被迫进入系统模式它执行操作系统的一些代码来处理这种情况。从某种意义上说,它们在执行时会提醒操作系统。

说明也可以是 (a) 敏感或 (b) 不敏感 . 敏感 指令修改部分机器资源,或者根据它们是否在 中执行而表现出不同的行为。用户模式 ​​系统模式 .

虚拟化 ISA 时,重要的是虚拟机监视器 (VMM) 可以检测并顺利处理程序或客户操作系统修改机器资源的任何尝试。一定能看到敏感正在执行指令。为此,所有 敏感指令必须是 特权 因此在执行时会陷入陷阱。被困时可以输入系统模式并从 VMM 调用代码来处理资源修改。

问题是并非所有 X86 的 敏感说明是 特权 指示。这意味着资源修改可以在 VMM 没有看到和处理的情况下发生,这可能很危险。或者,它可能意味着在 guest 操作系统中执行 中的指令。用户模式 ​​并看到与在 中执行它不同的效果系统模式 .根据this paper x86 中有 17 条指令是 敏感但是是 没有特权 .一个例子是 POPF when 具有不同的语义,具体取决于机器的模式。

关于x86 - x86 架构中的 "non-virtualizable"指令是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32794361/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com