《已中断事件的安全处置.pdf》由会员分享,可在线阅读,更多相关《已中断事件的安全处置.pdf(18页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103620614 A (43)申请公布日 2014.03.05 CN 103620614 A (21)申请号 201280032822.7 (22)申请日 2012.06.29 13/175544 2011.07.01 US G06F 21/56(2013.01) G06F 9/48(2006.01) G06F 12/14(2006.01) (71)申请人 英特尔公司 地址 美国加利福尼亚州 (72)发明人 R.L. 萨希塔 X. 李 M.R. 卡斯特利诺 (74)专利代理机构 中国专利代理(香港)有限公 司 72001 代理人 柯广华 汤春龙 (54) 发明名称 。
2、已中断事件的安全处置 (57) 摘要 本公开的各种实施例可描述用于减少通过在 程序之间切换存储页面许可视图而引起的系统等 待时间同时仍保护存储器的临界区域免受恶意软 件的攻击的方法、 设备和系统。 其它实施例可被公 开并要求权利。 (30)优先权数据 (85)PCT国际申请进入国家阶段日 2013.12.31 (86)PCT国际申请的申请数据 PCT/US2012/045131 2012.06.29 (87)PCT国际申请的公布数据 WO2013/006500 EN 2013.01.10 (51)Int.Cl. 权利要求书 2 页 说明书 8 页 附图 7 页 (19)中华人民共和国国家知识产。
3、权局 (12)发明专利申请 权利要求书2页 说明书8页 附图7页 (10)申请公布号 CN 103620614 A CN 103620614 A 1/2 页 2 1. 一种用于处置被保证安全的中断处理程序的异步事件的方法, 所述方法包括 : 在过程的执行期间由计算装置的处理器接收所述异步事件的通知, 其中所述异步事件 与在所述计算装置的存储器的受保护存储页面中保证安全的所述中断处理程序关联, 并且 所述过程缺少访问所述存储页面以触发所述中断处理程序的执行的许可 ; 以及 响应于所述异步事件的所述通知由所述处理器执行虚拟中断描述表 (VIDT) 退出桩模 块, 其中所述 VIDT 退出桩模块配置。
4、成使所述处理器执行包含如下操作的操作 : 切换所述存储页面的许可以有效地允许所述过程触发所述中断处理程序的执行而不 会引起访问违反 ; 以及 触发所述中断处理程序的执行。 2. 如权利要求 1 所述的方法, 其中所述操作进一步包含 : 检索所述过程的访问许可, 并 将所述访问许可保存在与所述存储器关联的视图专属页面 (VEP) 中。 3. 如权利要求 2 所述的方法, 其中所述操作进一步包含 : 将所述过程的返回指令指针 与所述过程的标识一起保存在所述 VEP 中。 4. 如权利要求 3 所述的方法, 其中所述操作进一步包含 : 用 VIDT 重进入桩模块的地址 替换所述过程的所述返回指令指针。
5、。 5. 如权利要求 4 所述的方法, 进一步包括 : 由所述处理器执行所述 VIDT 重进入桩模块, 其包含 : 将所述存储页面的许可切换到保 存在所述 VEP 中的访问许可。 6. 如权利要求 5 所述的方法, 其中所述 VIDT 重进入桩模块的所述执行进一步包括 : 将 所述返回指令指针恢复到所述处理器的寄存器, 并使所述处理器将执行控制权转移到所述 返回指令指针。 7. 如权利要求 4-6 中任一项所述的方法, 其中所述操作进一步包含 : 在所述切换之前, 由所述处理器将所述处理器的寄存状态保存在所述过程的堆栈中 ; 以及 在所述切换之后并在所述中断处理程序的所述执行之前, 由所述处理。
6、器从所述堆栈恢 复保存的寄存状态。 8. 如权利要求 1-6 中任一项所述的方法, 进一步包括 : 由所述计算装置的系统根代理和虚拟机监视器 (VMM) 初始化所述 VIDT。 9. 如权利要求 8 所述的方法, 其中所述处理器包含多个处理器核, 并且其中所述初始 化包括 : 由所述处理器核之一初始化用于所述多个核中相应核的中断重定向表。 10. 如权利要求 1-6 中任一项所述的方法, 其中所述操作进一步包含 : 由所述处理器确 定所述过程是否是受保护过程。 11. 一种用于处置被保证安全的中断处理程序的异步事件的设备, 所述设备包括 : 用于支持虚拟机的构件, 其包含处理器, 其中所述虚拟。
7、机包含客操作系统 (OS), 所述客 操作系统 (OS) 包含虚拟中断描述表 (VIDT), 并且所述 VIDT 包含 VIDT 退出桩模块 ; 以及 用于存储数据的构件, 其包含存储器, 其中所述用于支持虚拟机的构件包含如下构件 : 所述构件用于支持所述客 OS 的过程 响应于在所述过程的执行期间接收的中断的通知而触发所述 VIDT 退出桩模块的执行, 以 使所述 VIDT 退出桩模块能够实现到与所述存储器的受保护存储页面关联的访问许可的改 权 利 要 求 书 CN 103620614 A 2 2/2 页 3 变, 并且用于支持虚拟机的构件包含如下构件 : 所述构件用于触发在所述受保护存储页。
8、面 中保证安全的并与所述中断关联的所述中断处理程序的执行而不会引起对所述受保护存 储页面的访问违反。 12. 如权利要求 11 所述的设备, 其中所述用于支持虚拟机的构件包含用于支持扩展页 面表的构件, 其中所述扩展页面表配置成存储由所述处理器所执行的过程对各种存储页面 的访问许可。 13. 如权利要求 11 所述的设备, 其中所述用于支持虚拟机的构件包含用于支持系统根 代理的构件, 所述系统根代理配置成在所述客 OS 中操作以分配所述 VIDT ; 并且其中所述设 备进一步包括用于初始化所述 VIDT 的构件。 14. 如权利要求 11 所述的设备, 其中所述 VIDT 进一步包含 VIDT。
9、 重进入桩模块。 15. 如权利要求 11-14 中任一项所述的设备, 其中所述用于支持虚拟机的构件包含多 个处理器核, 并且用于支持虚拟机的构件包含用于支持对应于所述多个处理器核的多个重 定向表的构件, 其中所述定向表中的相应定向表配置成存储所述中断处理程序的地址和对 应处理器核的 VIDT 退出桩模块。 16. 一种用于处置被保证安全的中断处理程序的异步事件的制品, 所述制品包括 : 有形存储介质 ; 存储在所述存储介质中的指令, 所述指令响应于由计算装置的处理器对所述指令的执 行而使所述计算装置执行包含如下操作的操作 : 在过程的执行期间接收所述异步事件的通知, 其中所述异步事件与在所述。
10、计算装置的 存储器的受保护存储页面中保证安全的中断处理程序关联, 并且所述过程缺少访问所述存 储页面以触发所述中断处理程序的执行的许可 ; 以及 响应于所述异步事件的所述通知而执行虚拟中断描述表 (VIDT) 退出桩模块, 其中所 述 VIDT 退出桩模块配置成使所述处理器执行包含如下操作的操作 : 切换所述存储页面的许可以有效地允许所述过程触发所述中断处理程序的执行而不 会引起访问违反 ; 以及 触发所述中断处理程序的执行。 17. 如权利要求 16 所述的制品, 其中所述操作进一步包含 : 检索所述过程的所述访问 许可, 并将所述访问许可保存在与所述存储器关联的视图专属页面 (VEP) 中。
11、。 18. 如权利要求 17 所述的制品, 其中所述操作进一步包含 : 将所述过程的返回指令指 针与所述过程的标识一起保存在所述 VEP 中。 19. 如权利要求 18 所述的制品, 其中所述操作进一步包含 : 用 VIDT 重进入桩模块的地 址来替换所述过程的所述返回指令指针。 20. 如权利要求 16-19 中任一项所述的制品, 其中所述操作进一步包含 : 在所述切换之前, 将所述处理器的寄存状态保存在所述过程的堆栈中 ; 以及 在所述切换之后并在所述中断处理程序的所述执行之前, 从所述堆栈恢复保存的寄存 状态。 权 利 要 求 书 CN 103620614 A 3 1/8 页 4 已中断。
12、事件的安全处置 技术领域 0001 一般而言, 本公开涉及数据处理领域, 具体地说, 涉及使用虚拟化中断描述符表 (VIDT) 来访问保证安全的中断处理程序, 其具有对虚拟化的具体应用, 例如减少系统等待 时间同时防止恶意软件攻击。 背景技术 0002 除非在本文另有指出, 否则在这部分中描述的资料对于本申请中的权利要求书而 言不是现有技术, 并且不准许通过包含在这部分中而成为现有技术。 0003 传统操作系统 (OS) 可在多个特权级下操作, 这些特权级对于某一实现也被称为 环级。在这些环级当中, 受保护程序 ( 诸如内核的部分 ) 通常在最高特权级操作 ( 环 0), 而 未受保护程序 (。
13、 诸如用户级应用 ) 通常在较低特权级操作 ( 例如环 3)。基于环的特权模型 可掩蔽受保护程序免受未受保护程序的影响。然而, 将所有受保护程序都指配到同一环中 是一体化保护模型。像这样, 这种操作环境对于来自能够赢得更高特权级的恶意软件 ( 病 毒 /rootkit) 的攻击可能仍是脆弱的。一旦恶意软件被升高到更高特权级 ( 例如环 0), 它 就可能具有拦截和改变系统信息的能力, 并且可移除其存在的所有痕迹, 由此防止检测到 该恶意软件。像这样, 恶意软件 ( 诸如 rootkit) 可能难以检测到。在某些情况下, 即便检 测到了, 修复或移除这些恶意软件可能也是困难的。该暴露在具有多个虚。
14、拟机的虚拟化上 下文中被进一步放大了, 其中一个虚拟机中的损害可能将其它虚拟机置于风险中。 附图说明 0004 本公开的实施例将通过在附图中示出的示范例证 ( 而非限制 ) 进行描述, 附图中 相似的标记表示类似的要素, 并且附图中 : 图 1 是例证根据本公开的各种实施例的存储器视图切换指令的示例用法的框图 ; 图 2 是例证根据本公开的各种实施例减少异步事件期间系统等待时间的 VIDT 的示例 用法的框图 ; 图 3 是例证根据本公开的各种实施例与建立客 OS 的 VIDT 关联的所选操作的流程图 ; 图 4 是例证根据本公开的各种实施例的 VIDT 退出桩模块的所选操作的流程图 ; 图 。
15、5 是例证根据本公开的各种实施例的 VIDT 重进入桩模块的所选操作的流程图 ; 图 6 例证了根据本公开的各种实施例具有 VIDT 支持的示例计算装置的框图 ; 图7是例证根据本公开的各种实施例与所描述的方法和/或设备的各种方面结合的示 例计算机系统的框图。 具体实施方式 0005 在如下详细描述中, 参考了形成其一部分的附图, 并且其中借助于可在其中实施 本公开的例证实施例示出了。要理解, 可利用其它实施例, 并且可进行结构或逻辑改变, 而 没有脱离本公开的范围。 因此, 如下详细描述不被视为限制性意义, 并且根据本公开的实施 说 明 书 CN 103620614 A 4 2/8 页 5 。
16、例范围由所附权利要求书以及它们的等效方案来定义。 0006 各种操作可以用可有助于理解本公开实施例的方式来依次描述为多个分立操作 ; 然而, 描述的次序不应该被视为暗示这些操作是次序相关的。 0007 为了描述的目的, 以 “A/B” 形式或以 “A 和 / 或 B” 形式的短语意味着 (A)、 (B) 或 (A 和 B)。为了描述的目的, 以 “A、 B 和 C 中至少一个” 形式的短语意味着 (A)、 (B)、 (C)、 (A 和 B)、 (A 和 C)、 (B 和 C) 或 (A、 B 和 C)。为了描述的目的, 以 “(A)B” 形式的短语意味着 (B) 或 (AB), 也就是说, A。
17、 是可选要素。 0008 该描述可使用短语 “在一个实施例中” 或 “在实施例中” , 它们各指的是相同或不 同实施例中的一个或多个实施例。而且, 相对于本公开的实施例所使用的术语 “包括” 、“包 含” 、“具有” 等是同义的。 0009 除非在本公开中另有规定, 否则术语 “处理器” 指的是物理计算机芯片和集成电 路, 它们可使用半导体材料和导体材料制作。处理器的示例是由英特尔公司制造的中央处 理单元(CPU)。 另外, 除非在本公开中另有规定, 否则处理器可包含一个或多个处理单元, 这 些单元可被称为处理器的 “核” 。 0010 除非在本公开中另有规定, 否则诸如 “程序” 、“过程”。
18、 、“线程” 、“桩模块” 、“代码” 等 术语指的是处理器或处理器核的执行路径, 并且可被视为同义的。 0011 本公开的各种实施例可描述与使用 VIDT 来访问被保证安全的中断处理程序关联 的方法、 设备和系统, 所述方法、 设备和系统可减少当在程序之间切换存储页面许可视图时 的系统等待时间, 以保护存储器的临界区域免受恶意软件的攻击。 0012 随着虚拟化技术的进步, 管理计算机系统上操作的多个虚拟机的虚拟机管理器 (VMM) 可为计算系统提供细粒化保护, 同时保持与传统操作系统以及基于它们特权的保护 方案的兼容性。这种虚拟化系统中的程序除了传统的特权级之外还可在虚拟机扩展 (VMX) 。
19、根模式或 VMX 非根模式下操作。VMM 可允许运行在 VMX 根模式的程序监视和保护由在 VMX 非根模式操作的程序所访问的资源。VMM 还可管理基于硬件的页面表, 该页面表便于将计 算机系统的存储器的客物理存储地址转变成主物理存储地址。 这个基于硬件的页面表的示 例可包含由在加利福尼亚圣克拉拉的英特尔公司制造的某些处理器中可用的扩展页面表 (EPT)。 0013 在各种实施例中, VMM 可配置成通过约束对存储器的一个或多个物理存储页面的 访问来保护这些存储页面。在 VMM 根模式下操作的系统根代理可由 VMM 设立, 使得向系统 根代理驻留在其中的任何受保护主存储页面进行写入的任何尝试都。
20、可被处理器捕获, 并作 为违反来报告给 VMM。除非在本公开中另有规定, 否则术语 “主存储页面” 或简称为 “存储 页面” 指的是映射到由 VMM 和 / 或 EPT 来管理的计算系统的物理存储器的存储页面, 而非由 具体虚拟机 (VM) 和 / 或其页面表来管理的虚拟存储页面。 0014 在各种实施例中, 一旦系统根代理运行良好, 它就可为系统的其它存储区域建立 附加保护。例如, 该系统根代理可约束过程读、 写和 / 或执行存储在主存储页面中的内容的 能力。对访问主存储页面的这些约束可被称为许可视图。一个或多个存储页面的许可视图 可在 EPT 中编码, 并且受 VMM 控制。因此, VMM。
21、 可实施这些视图 ( 即许可 ), 而不管赋予客 OS 内过程的许可如何。例如, 客 OS 可授予内核驱动器 A 和内核驱动器 B 对具体存储页面的 完全访问权。然而, 由系统根代理建立、 在 EPT 中编码并由 VMM 实施的许可视图可仅允许内 说 明 书 CN 103620614 A 5 3/8 页 6 核驱动器 A 具有对主存储页面的完全访问权, 而允许内核驱动器 B 具有只读访问权。结果, VMM 可进一步约束由客 OS 授予的特权。 0015 在各种实施例中, 基于许可视图对存储页面的访问违反可引发异常, 并且可使控 制权转移到 VMM。例如, 当执行的线程进入受保护客 OS 程序中。
22、时, 访问违反可触发故障或 陷阱 ( 例如 EPT 故障 ), 这可使执行控制权转移到 VMM。在各种实施例中, 执行控制权可由 于vmexit调用而从客 OS 转移到 VMM, 这可由于 EPT 故障而被触发。VMM 中的许可视图处理 程序然后可分析访问违反以确定该访问可被拒绝还是准许。 不是所有许可违反都可指示恶 意软件感染。例如, 许可视图处理程序可验证与触发执行控制权转移的访问事件关联的目 的地客线性地址是否是合法目的地。在验证后, 许可视图处理程序可将活动 EPT 或它的一 部分切换到允许在目的地客线性地址的过程执行的 EPT。在各种实施例中, VMM 的许可视图 处理程序可通过修改。
23、活动 EPT 来改变与存储页面关联的许可视图, 从而允许存储器访问通 过。在各种实施例中, 在存储器访问完成之后, VMM 例如可利用vmentry调用而将控制权转 移回到客 OS。 0016 在各种实施例中, EPT 中的编码许可视图可通过过程方式来定义过程中的临界系 统区域的保护, 并减少恶意软件攻击的可能性。然而, 在每个访问违反上都生成异常 ( 例如 EPT 故障 ) 可使合法许可视图切换通过两个 VM 退出往返程 ( 例如vmexit调用和vmentry 调用 ), 这可引起执行中的附加延迟。 0017 在各种实施例中, 计算系统的处理器可配置成支持显式许可视图切换指令 ( 视图 切。
24、换指令 ), 其可用于减少开销, 并且因此可减少切换许可视图的等待时间。 0018 图 1 是例证根据本公开的各种实施例的视图切换指令的示例用法的框图。在各种 实施例中, 第一代码堆栈 110 可包含未受保护程序 112 以及与受保护程序 121 关联的已寄 存回调 111。受保护程序 121 可驻留在第二代码堆栈 120 中。未受保护程序 112 可利用已 寄存回调 111 来访问受保护程序 121 及其服务。未受保护程序 112 默认可具有用于含有受 保护程序 121 的主存储页面 ( 未示出 ) 的只读许可视图。未受保护程序 112 因此在它自己 的许可视图下可能没有直接执行受保护程序 。
25、121 的许可。 0019 在各种实施例中, 回调例程 111 可调用一个或多个视图切换指令 131 以允许未受 保护程序 112 切换到受保护程序 121 的许可视图, 由此取消了对例如vmexit调用的需要 以及例如vmexit调用的开销。类似地, 受保护程序 121 也可调用一个或多个视图切换指 令 131, 以允许受保护程序 121 安全退出并切换回到未受保护程序 112, 由此取消了对例如 vmentry调用的需要以及例如vmentry调用的开销。 在各种实施例中, 含有一个或多个视图 切换指令 131 的存储页面的至少一部分可共享用于受保护程序 121 和未受保护程序 112 二 。
26、者的读 / 执行许可视图。 0020 在各种实施例中, 如图 1 中所例证的, 视图切换指令 131 可减少系统等待时间, 只 要对进入或退出受保护程序 121 的需要可先验预测即可, 诸如当在已寄存回调 111 中调用 时。然而, 异步事件 ( 诸如中断 ) 可发生在执行受保护程序或未受保护程序期间的任何时 间。 当处理器接收到中断发生的通知时, 处理器可跳到与该中断关联的中断处理程序例程, 或触发所述中断处理程序例程的执行。中断处理程序例程的地址可在由客 OS 保存的中断 描述表 (IDT) 中找到。该处理器可尝试执行中断处理程序以服务于该中断。然而, 如果中 断处理程序以及被中断的程序 。
27、(“被中断程序” ) 的许可视图是不同的, 则访问违反仍可发 说 明 书 CN 103620614 A 6 4/8 页 7 生, 使得引发异常, 并且执行控制权利用vmexit调用和 / 或vmentry调用向 / 从 VMM 转移, 这可导致额外延迟。 0021 为了进一步减少与异步事件的处置关联的延迟, 在各种实施例中, 可使用虚拟化 IDT(VIDT)。在各种实施例中, VIDT 可包含一个或多个退出桩模块和一个或多个重进入桩 模块。在各种实施例中, VIDT 可包含单个退出桩模块。在各种实施例中, 重进入桩模块的 数量可对应于客 OS 的受保护程序的数量。VIDT 退出桩模块可配置成使。
28、用视图切换指令来 将被中断程序的许可视图切换到在IDT中寄存的中断处理程序的许可视图。 VIDT重进入桩 模块可配置成使用视图切换指令来将中断处理程序的许可视图切换回到被中断程序的许 可视图。与 VIDT 及其用法关联的这些方面和其它方面将在下面的公开中进一步描述。 0022 图 2 是例证根据本公开的各种实施例使用 VIDT 来减少异步事件期间系统等待时 间的示例的框图。如所例证的, 在客 OS 中操作的程序 226( 其可能是受保护的或者未受保 护的 ) 可具有程序堆栈 220。中断可发生在程序 226 的执行期间。该中断可对应于驻留在 受保护存储页面中的中断处理程序。程序 226 可能缺。
29、少关于如下的许可 : 在它自己的许可 视图下访问该存储页面以直接执行中断处理程序, 而不会引起访问违反。 0023 在各种实施例中, 在接收到中断的通知后, 该处理器可跳到位于 VIDT 221 中的 VIDT 退出桩模块 224, 并且可执行 VIDT 退出桩模块 224。在各种实施例中, 除了系统根代 理, VIDT 221 可驻留在主存储页面中, 该主存储页面具有对所有其它程序只读的许可视图, 以便不允许篡改 VIDT 221。 0024 在各种实施例中, VIDT 退出桩模块 224 可配置成检查程序 226 的当前许可视图。 在各种实施例中, 当前视图可通过读已预留存储页面来获取, 。
30、其可被称为当前视图页面 (CVP)。在各种实施例中, CVP 可具有对客 OS 的所有程序只读的许可视图。在各种实施例 中, 程序 226 的当前视图可在原子操作中从 CVP 中获取, 例如, 在程序 226 的当前视图正被 获取的同时, 该处理器可不接收另一中断。 0025 在各种实施例中, VIDT 退出桩模块 224 可配置成获得该处理器的寄存器 ( 例如在 基于 x86 的处理器中可用的 CS 寄存器 ) 中的中断帧的返回指令指针 (RIP)。在各种实施例 中, 程序 226 可以是受保护程序, 并且可对应于 VIDT 重进入桩模块 215。VIDT 退出桩模块 224 可以用 VID。
31、T 重进入桩模块 215 的位置来替换 RIP, 并且可将原始 RIP 的地址与当前线 程 / 过程标识号一起保存在视图专属页面 (VEP)223 中。VIDT 退出桩模块 224 也可将程序 226 的当前许可视图保存在 VEP 223 中。VEP 223 可携带用于程序 226 的读 / 写许可, 然而 可具有用于其它程序的只读许可。 0026 在各种实施例中, VIDT 退出桩模块 224 可配置成查找与从 IDT 接收的中断对应的 原始中断处理程序 212。可在如下受保护存储页面中保证中断处理程序 212 的安全 : 程序 226 在程序 226 的许可视图下可缺乏访问所述受保护存储页。
32、面或触发中断处理程序 212 的 执行的许可。 0027 在各种实施例中, VIDT 退出桩模块 224 可配置成执行等待时间减少的视图切换, 以将许可视图切换到与中断处理程序212关联的视图。 VIDT退出桩模块224可切换许可视 图以允许执行中断处理程序 212, 而不会引起例如与vmexit调用关联的延迟和访问违反。 VIDT退出桩模块224可通过使用之前所公开的显式视图切换指令来这样做。 在视图切换之 后, 在中断处理程序 212 的许可视图下, VIDT 退出桩模块 224 可配置成使处理器跳到中断 说 明 书 CN 103620614 A 7 5/8 页 8 处理程序 212 的地。
33、址, 并触发中断处理程序 212 的执行。由于 VIDT 退出桩模块 224 已经被 视图切换到该中断处理程序的许可视图, 因此中断处理程序212的执行不会引起EPT故障。 0028 在各种实施例中, 在该处理器完成中断处理程序 212 的执行之后, 该处理器可跳 到当前帧的 RIP, 其可对应于 VIDT 重进入桩模块 215。VIDT 重进入桩模块 215 可配置成从 VEP 223 中读所需的许可视图。在各种实施例中, 在中断处理程序 212 的许可视图下, VEP 223 可对 VIDT 重进入桩模块 215 而言是只读的。 0029 在各种实施例中, VIDT 重进入桩模块 215 。
34、可配置成执行等待时间减少的视图切 换, 以将中断处理程序 212 的许可视图切换到程序 226 的许可视图。在视图切换之后, 在程 序 226 的许可视图下, VIDT 重进入桩模块 215 可以读 VEP 223, 以定位程序 226 的所保存 RIP 返回地址, 并使处理器跳到程序 226 的被中断地址点。 0030 在各种实施例中, 客 OS 的一个或多个受保护程序的地址范围可被寄存在称为全 局线性地址 (GLA) 范围表的受保护数据结构中。在各种实施例中, VIDT 退出桩模块 224 可 基于程序 226 的被中断位置的地址来找到对应于受保护程序 226 的特定 VIDT 重进入桩模。
35、 块 215。 0031 在各种实施例中, 为了保护 VIDT, VIDT 可具有仅允许由系统根代理读 / 写的许可 视图。对于在客 OS 中操作的所有其它程序, VIDT 可具有只读的许可视图。在各种实施例 中, VIDT 可由系统根代理建立。在各种实施例中, VIDT 可与系统根代理的初始化一起建立。 0032 图 3 是例证根据本公开的各种实施例与建立客 OS 的 VIDT 关联的所选操作的流程 图。在块 310 中, 系统根代理可为 VIDT 221 分配存储页面。在各种实施例中, 该系统根代 理也可为一个或多个重定向表分配存储页面。 所述一个或多个重定向表中的每个重定向表 都可包含原。
36、始中断处理程序的地址以及 VIDT 退出桩模块的地址 /VIDT 重进入桩模块的地 址。在各种实施例中, 系统根代理可建立数量与可在处理器中可用的物理处理单元 ( 例如 处理核 ) 的数量对应的重定向表。例如, 如果计算装置的处理器包含 8 个处理核, 则该系统 根代理给存储器分配 8 个重定向表, 处理器的每个核一个重定向表。在各种实施例中, 该系 统根代理还可建立错误代码以及其它进入特定代码。 0033 在块 320 中, 该系统根代理可建立 VIDT 221。在各种实施例中, 该系统根代理可 通过对 VMM 进行特定系统调用来建立 VIDT 221。在各种实施例中, 该特定系统调用可以是。
37、 vmcall指令。 0034 在块 330 中, 在从该系统根代理接收到vmcall之后, 该 VMM 可从该系统根代理取 得控制权, 并验证该系统根代理的身份。VMM 可通过针对 GLA 范围表检查进行过vmcall的 系统根代理的指令指针的地址来验证该系统根代理的身份。在各种实施例中, VMM 也可将 该处理器的所有核带入到会合状态中。 0035 在块 340 中, VMM 可为一个或多个重定向表预配置客 OS 的原始中断处理程序的地 址。在各种实施例中, VMM 可执行为该处理器的每个核预配置一个或多个重定向表。 0036 在块 350 中, VMM 可执行各种初始化以保持兼容性。例如。
38、, 在各种实施例中, VMM 可 初始化客 OS 存储 / 加载中断描述符表处理程序 ( 例如sidt处理程序和lidt处理程序 ), 使得程序兼容性可得以保持。之后, 所有中断处置都可通过 VIDT 221, 而不是通过原始 IDT 211。 0037 图4是例证根据本公开的各种实施例的VIDT退出桩模块的所选操作的流程图。 在 说 明 书 CN 103620614 A 8 6/8 页 9 块 410, VIDT 退出桩模块 224 可配置成将处理器的各种寄存器的状态保存到该过程的堆栈 上。在块 420 中, VIDT 退出桩模块 224 可配置成从 CVP 中检索程序 226 的当前许可视。
39、图。 在块 430 中, VIDT 退出桩模块 224 可配置成将被中断程序 226 的许可视图与中断处理程序 212 的视图相比较。如果 VIDT 退出桩模块 224 确定被中断程序 226 的许可视图等于中断处 理程序 212 的许可视图, 则在块 470 中 VIDT 退出桩模块 224 可配置成直接得到中断处理程 序 212 的地址。在各种实施例中, VIDT 退出桩模块 224 可从 OS 堆栈中恢复处理器寄存状 态, 并在块490中使处理器跳到中断处理程序212的地址并执行中断处理程序212。 由于被 中断程序和中断处理程序的许可视图是相同的, 因此, 执行中断处理程序 212 将。
40、不会引起 对许可视图的违反。 0038 在各种实施例中, 为了处置其中 VIDT 退出桩模块 224 确定被中断程序 226 的许可 视图不等于中断处理程序212的许可视图的情形, 在块440中, VIDT退出桩模块224可配置 成进一步确定被中断程序 226 是否是受保护程序。这可包含 : 比较被中断程序的地址指针 与 GLA 范围表。如果 VIDT 退出桩模块 224 确定被中断程序 226 是受保护程序, 则在块 450 中, 在被中断程序 226 的线程 / 过程 ID 下, VIDT 退出桩模块 224 可将被中断程序 226 的许 可视图以及各种寄存器的当前状态(包含指令指针)高速。
41、缓存到VEP中。 在各种实施例中, 在块 460 中, VIDT 退出桩模块 224 可将客 OS 中断堆栈帧返回地址 (RIP) 更新到与被中断 程序 226 对应的 VIDT 重进入桩模块 215 的地址。在块 470 中 VIDT 退出桩模块 224 可配置 成得到中断处理程序 212 的地址。在块 480 中 VIDT 退出桩模块 224 可配置成调用视图切 换指令以切换到中断处理程序 212 的许可视图。在块 490 中在中断处理程序 121 的许可视 图下, VIDT 退出桩模块 224 可配置成从该堆栈中恢复处理器寄存状态, 并使处理器跳到中 断处理程序 212 的地址。由于许可。
42、视图已经改变, 因此中断处理程序 212 的执行可不引起 违反, 并且例如与vmexit/vmentry调用关联的延迟可得以避免。 0039 在各种实施例中, 为了处置其中 VIDT 退出桩模块 224 确定被中断程序 226 不是受 保护程序的情形, 在块 470 中, VIDT 退出桩模块 224 可配置成得到中断处理程序 212 的地 址, 并在块 490 中可配置成使处理器跳到中断处理程序 212 的地址。由于被中断程序 226 和中断处理程序212具有不同的许可视图, 因此执行中断处理程序212可引起访问违反, 这 可造成由于例如与vmexit/vmentry调用关联的长等待时间而引。
43、起的延迟。不过, 允许中断 在未受保护程序 226 的执行期间继续进行可确保与已经不适合于新保护方案的传统程序 的兼容性。 0040 图5是例证根据本公开的各种实施例的VIDT重进入桩模块的所选操作的流程图。 为了在中断处理程序 212 完成其执行并返回到 VIDT 重进入桩模块 215 之后进行处理, 在块 510 中, VIDT 重进入桩模块 215 可配置成将处理器寄存状态保存在客 OS 的堆栈上。在块 520 中, VIDT 重进入桩模块 215 可配置成从 CVP 中检索中断处理程序 212 的许可视图。在 块 530 中, VIDT 重进入桩模块 215 可配置成从 VEP 中检索。
44、被中断程序 226 的许可视图。如 果从 CVP 中检索的许可视图不等于从 VEP 中检索的许可视图, 则 VIDT 重进入桩模块 215 可 调用视图切换指令, 以切换到被中断程序 226 的许可视图。 0041 在各种实施例中, 为了在视图切换之后进行处理, 在被中断程序的许可视图下, 在 块 540 中, VIDT 重进入桩模块 215 可配置成重获取被中断程序 226 的许可视图。在块 550 中, VIDT 重进入桩模块 215 可配置成比较当前许可视图 ( 在视图切换之后 ) 与重获取的许 说 明 书 CN 103620614 A 9 7/8 页 10 可视图。如果 VIDT 重进。
45、入桩模块 215 确定这两个许可视图不相等, 则 VIDT 重进入桩模块 215 可对 VMM 引发错误。在各种实施例中, VIDT 重进入桩模块 215 可通过调用vmcall指令 来引发该错误。 0042 在各种实施例中, 如果 VIDT 重进入桩模块 215 确定当前许可视图 ( 在视图切换之 后 ) 和从 VEP 中重获取的许可视图相等, 则在块 560 中, VIDT 重进入桩模块 215 可从该 VEP 中读被中断程序 226 的 RIP。在块 570 中, VIDT 重进入桩模块 215 可更新处理器的线程上 下文寄存器以移除最后状态。在各种实施例中, 线程上下文寄存器的更新可以。
46、是原子操作 以防止线程上下文寄存器由于其它异步事件或中断的发生而被更新。在各种实施例中, 在 块 580 中, VIDT 重进入桩模块 215 可从堆栈中恢复寄存状态, 并使处理器跳到被中断程序 226 的地址, 并继续它的执行。 0043 图 6 例证了根据本公开的各种实施例具有 VIDT 支持的计算装置的组件视图。在 各种实施例中, 计算装置600可配置成使用所描述的VIDT以及关联的方法来减少用于处置 异步事件的系统等待时间, 如较早所描述的。计算装置 600 可包含配置成操作 VMM 620 的 处理器 610。处理器 610 可包含多个处理核, 并且还可包含对于 EPT 630 的支。
47、持。在各种 实施例中, VMM 620 可配置成管理 EPT 630。在各种实施例中, 处理器 610 可配置成支持在 VMM 620管理下的多个虚拟机(VM), 其包含图6中所例证的VM 650。 在各种实施例中, 在操 作期间, 客 OS 660 可在 VM 650 内操作。客 OS 660 可配置成操作多个受保护程序和未受保 护程序。受保护程序之一可以是系统根代理 664。系统根代理 664 可配置成为 VIDT 661 分 配存储器, 并且调用 VMM 620 以建立 VIDT 661。VIDT 661 可包含如较早所描述的 VIDT 退 出桩模块和 VIDT 重进入桩模块。 0044。
48、 在各种实施例中, 客OS 660可配置成支持IDT 662以及一个或多个重定向表663。 IDT 662 可包含分别对应于处理器 610 在客 OS 660 的执行期间可接收的各种中断的多个 中断处理程序。重定向表 663 可配置成存储 VIDT 退出桩模块和各种中断处理程序的地址。 在各种实施例中, 在客 OS 660 中支持的重定向表 663 的数量可对应于在处理器 610 中可用 的处理核的数量。 0045 在各种实施例中, 处理器 610 可配置成接收中断, 同时执行客 OS 660 内的过程 665。处理器 610 可配置成执行 VIDT 退出桩模块, 而不是为所接收中断调用在 I。
49、DT 662 中 定义的中断处理程序。在各种实施例中, 在检测到过程 665 在它自己的许可视图下可能没 有执行对应于该中断的中断处理程序的访问许可后, VIDT 退出桩模块可切换持有中断处理 程序的存储页面的许可视图, 以允许执行该中断处理程序, 而不会引起访问违反, 如之前公 开的。 0046 图 7 例证根据本公开的各种实施例与较早描述的方法和设备的各种方面结合的 计算机系统的另一组件视图。 如所示, 计算机系统700可包含电源单元701、 耦合到VMM 708 的若干处理器 702、 若干有形非暂态存储介质 ( 诸如系统存储器 704 和海量存储装置 706)、 通信接口 710。在各种实施例中, 处理器 702 和 VMM 708 可配置成支持视图切换指令, 并且 可配置成操作并管理一个或多个 VM 和客 OS。一个或多个客 OS 可配置成支持包含 VIDT 退 出桩模块和一个或多个 VIDT 重进入桩模块的 VIDT。该过程可配置成在接收到中断后触发 VIDT 退出桩模块的执行。 0047 另外, 计算系统 700 可包含基于诸如 PCI、 USB 等标准的一个或多个有形非暂态计 说 。