虚拟化之指令的Trap和仿真

有时,虚拟机监控程序需要在虚拟机(VM)中模拟操作。例如,VM内的软件可能尝试配置与功耗管理或缓存一致性相关的低级处理器控件。通常,您不希望将VM直接访问这些控件,因为它们可能被用于突破隔离,或影响系统中的其他VM。

trap在执行给定操作(例如读取寄存器)时引发异常。虚拟机监控程序需要能够在VM中捕获并模拟此类操作,而不影响其他VM。

架构包括用于在VM中捕获操作并模拟它们的trap控件。设置trap时,执行通常允许的特定操作会导致exception到更高的异常级别。虚拟机监控程序可以使用这些trap来在VM内模拟操作。

例如,执行Wait For Interrupt(WFI)指令通常会将CPU置于低功耗状态。通过assert TWI 位(如果 HCR_EL2.TWI==1),然后在 EL0 或 EL1 执行 WFI 将导致异常到 EL2。

【注意】:trap不仅用于虚拟化。还有由EL3和EL1控制的trap。 然而,trap对于虚拟化软件尤其有用。本指南仅讨论通常与虚拟化相关的trap。

在我们的WFI示例中,操作系统通常会在空闲循环的一部分执行WFI。对于位于VM内的Guest OS,虚拟机监控程序可以捕获此操作并调度另一个vCPU,如下图所示:

显示寄存器的虚拟值

使用trap的另一个例子是

相关推荐

  1. 虚拟成本

    2023-12-08 20:34:05       39 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-08 20:34:05       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-08 20:34:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-08 20:34:05       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-08 20:34:05       20 阅读

热门阅读

  1. 解析 DNS 域名:了解其结构与解析过程

    2023-12-08 20:34:05       37 阅读
  2. unity连接php+mysql(超级简易游戏注册功能)

    2023-12-08 20:34:05       26 阅读
  3. Linux 统计命令Netstat详解

    2023-12-08 20:34:05       35 阅读
  4. 1380 一笔画问题

    2023-12-08 20:34:05       29 阅读
  5. Chromium包含的内容(引擎)

    2023-12-08 20:34:05       36 阅读
  6. LSKNet:大选择核网络在遥感目标检测中的应用

    2023-12-08 20:34:05       41 阅读
  7. 算法 | 每日一题 | 可获得的最大点数 | 滑动窗口

    2023-12-08 20:34:05       47 阅读
  8. 阿里云docker加速

    2023-12-08 20:34:05       35 阅读
  9. Android 9.0 Settings增加OTG开关

    2023-12-08 20:34:05       35 阅读
  10. SpringBoot使用自定义注解、AOP实现API接口日志记录

    2023-12-08 20:34:05       43 阅读