首页 / 专利库 / 专利权 / 实施例 / 已中断事件的安全处置

已中断事件的安全处置

阅读:389发布:2021-06-15

专利汇可以提供已中断事件的安全处置专利检索,专利查询,专利分析的服务。并且本公开的各种 实施例 可描述用于减少通过在程序之间切换存储页面 许可 视图而引起的系统等待时间同时仍保护 存储器 的临界区域免受恶意 软件 的攻击的方法、设备和系统。其它实施例可被公开并要求权利。,下面是已中断事件的安全处置专利的具体信息内容。

1.一种用于处置被保证安全的中断处理程序的异步事件的方法,所述方法包括:
在过程的执行期间由计算装置的处理器接收所述异步事件的通知,其中所述异步事件与在所述计算装置的存储器的受保护存储页面中保证安全的所述中断处理程序关联,并且所述过程缺少访问所述存储页面以触发所述中断处理程序的执行的许可;以及响应于所述异步事件的所述通知由所述处理器执行虚拟中断描述表(VIDT)退出桩模,其中所述VIDT退出桩模块配置成使所述处理器执行包含如下操作的操作:
切换所述存储页面的许可以有效地允许所述过程触发所述中断处理程序的执行而不会引起访问违反;以及
触发所述中断处理程序的执行。
2.如权利要求1所述的方法,其中所述操作进一步包含:检索所述过程的访问许可,并将所述访问许可保存在与所述存储器关联的视图专属页面(VEP)中。
3.如权利要求2所述的方法,其中所述操作进一步包含:将所述过程的返回指令指针与所述过程的标识一起保存在所述VEP中。
4.如权利要求3所述的方法,其中所述操作进一步包含:用VIDT重进入桩模块的地址替换所述过程的所述返回指令指针。
5.如权利要求4所述的方法,进一步包括:
由所述处理器执行所述VIDT重进入桩模块,其包含:将所述存储页面的许可切换到保存在所述VEP中的访问许可。
6.如权利要求5所述的方法,其中所述VIDT重进入桩模块的所述执行进一步包括:将所述返回指令指针恢复到所述处理器的寄存器,并使所述处理器将执行控制权转移到所述返回指令指针。
7.如权利要求4-6中任一项所述的方法,其中所述操作进一步包含:
在所述切换之前,由所述处理器将所述处理器的寄存状态保存在所述过程的堆栈中;
以及
在所述切换之后并在所述中断处理程序的所述执行之前,由所述处理器从所述堆栈恢复保存的寄存状态。
8.如权利要求1-6中任一项所述的方法,进一步包括:
由所述计算装置的系统根代理和虚拟机监视器(VMM)初始化所述VIDT。
9.如权利要求8所述的方法,其中所述处理器包含多个处理器核,并且其中所述初始化包括:由所述处理器核之一初始化用于所述多个核中相应核的中断重定向表。
10.如权利要求1-6中任一项所述的方法,其中所述操作进一步包含:由所述处理器确定所述过程是否是受保护过程。
11.一种用于处置被保证安全的中断处理程序的异步事件的设备,所述设备包括:
用于支持虚拟机的构件,其包含处理器,其中所述虚拟机包含客操作系统(OS),所述客操作系统(OS)包含虚拟中断描述表(VIDT),并且所述VIDT包含VIDT退出桩模块;以及用于存储数据的构件,其包含存储器,
其中所述用于支持虚拟机的构件包含如下构件:所述构件用于支持所述客OS的过程响应于在所述过程的执行期间接收的中断的通知而触发所述VIDT退出桩模块的执行,以使所述VIDT退出桩模块能够实现到与所述存储器的受保护存储页面关联的访问许可的改变,
并且用于支持虚拟机的构件包含如下构件:所述构件用于触发在所述受保护存储页面中保证安全的并与所述中断关联的所述中断处理程序的执行而不会引起对所述受保护存储页面的访问违反。
12.如权利要求11所述的设备,其中所述用于支持虚拟机的构件包含用于支持扩展页面表的构件,其中所述扩展页面表配置成存储由所述处理器所执行的过程对各种存储页面的访问许可。
13.如权利要求11所述的设备,其中所述用于支持虚拟机的构件包含用于支持系统根代理的构件,所述系统根代理配置成在所述客OS中操作以分配所述VIDT;并且其中所述设备进一步包括用于初始化所述VIDT的构件。
14.如权利要求11所述的设备,其中所述VIDT进一步包含VIDT重进入桩模块。
15.如权利要求11-14中任一项所述的设备,其中所述用于支持虚拟机的构件包含多个处理器核,并且用于支持虚拟机的构件包含用于支持对应于所述多个处理器核的多个重定向表的构件,其中所述定向表中的相应定向表配置成存储所述中断处理程序的地址和对应处理器核的VIDT退出桩模块。
16.一种用于处置被保证安全的中断处理程序的异步事件的制品,所述制品包括:
有形存储介质;
存储在所述存储介质中的指令,所述指令响应于由计算装置的处理器对所述指令的执行而使所述计算装置执行包含如下操作的操作:
在过程的执行期间接收所述异步事件的通知,其中所述异步事件与在所述计算装置的存储器的受保护存储页面中保证安全的中断处理程序关联,并且所述过程缺少访问所述存储页面以触发所述中断处理程序的执行的许可;以及
响应于所述异步事件的所述通知而执行虚拟中断描述表(VIDT)退出桩模块,其中所述VIDT退出桩模块配置成使所述处理器执行包含如下操作的操作:
切换所述存储页面的许可以有效地允许所述过程触发所述中断处理程序的执行而不会引起访问违反;以及
触发所述中断处理程序的执行。
17.如权利要求16所述的制品,其中所述操作进一步包含:检索所述过程的所述访问许可,并将所述访问许可保存在与所述存储器关联的视图专属页面(VEP)中。
18.如权利要求17所述的制品,其中所述操作进一步包含:将所述过程的返回指令指针与所述过程的标识一起保存在所述VEP中。
19.如权利要求18所述的制品,其中所述操作进一步包含:用VIDT重进入桩模块的地址来替换所述过程的所述返回指令指针。
20.如权利要求16-19中任一项所述的制品,其中所述操作进一步包含:
在所述切换之前,将所述处理器的寄存状态保存在所述过程的堆栈中;以及在所述切换之后并在所述中断处理程序的所述执行之前,从所述堆栈恢复保存的寄存状态。

说明书全文

已中断事件的安全处置

技术领域

[0001] 一般而言,本公开涉及数据处理领域,具体地说,涉及使用虚拟化中断描述符表(VIDT)来访问保证安全的中断处理程序,其具有对虚拟化的具体应用,例如减少系统等待时间同时防止恶意软件攻击。

背景技术

[0002] 除非在本文另有指出,否则在这部分中描述的资料对于本申请中的权利要求书而言不是现有技术,并且不准许通过包含在这部分中而成为现有技术。
[0003] 传统操作系统(OS)可在多个特权级下操作,这些特权级对于某一实现也被称为环级。在这些环级当中,受保护程序(诸如内核的部分)通常在最高特权级操作(环0),而未受保护程序(诸如用户级应用)通常在较低特权级操作(例如环3)。基于环的特权模型可掩蔽受保护程序免受未受保护程序的影响。然而,将所有受保护程序都指配到同一环中是一体化保护模型。像这样,这种操作环境对于来自能够赢得更高特权级的恶意软件(病毒/rootkit)的攻击可能仍是脆弱的。一旦恶意软件被升高到更高特权级(例如环0),它就可能具有拦截和改变系统信息的能,并且可移除其存在的所有痕迹,由此防止检测到该恶意软件。像这样,恶意软件(诸如rootkit)可能难以检测到。在某些情况下,即便检测到了,修复或移除这些恶意软件可能也是困难的。该暴露在具有多个虚拟机的虚拟化上下文中被进一步放大了,其中一个虚拟机中的损害可能将其它虚拟机置于险中。附图说明
[0004] 本公开的实施例将通过在附图中示出的示范例证(而非限制)进行描述,附图中相似的标记表示类似的要素,并且附图中:图1是例证根据本公开的各种实施例的存储器视图切换指令的示例用法的框图
图2是例证根据本公开的各种实施例减少异步事件期间系统等待时间的VIDT的示例用法的框图;
图3是例证根据本公开的各种实施例与建立客OS的VIDT关联的所选操作的流程图
图4是例证根据本公开的各种实施例的VIDT退出桩模的所选操作的流程图;
图5是例证根据本公开的各种实施例的VIDT重进入桩模块的所选操作的流程图;
图6例证了根据本公开的各种实施例具有VIDT支持的示例计算装置的框图;
图7是例证根据本公开的各种实施例与所描述的方法和/或设备的各种方面结合的示例计算机系统的框图。

具体实施方式

[0005] 在如下详细描述中,参考了形成其一部分的附图,并且其中借助于可在其中实施本公开的例证实施例示出了。要理解,可利用其它实施例,并且可进行结构或逻辑改变,而没有脱离本公开的范围。因此,如下详细描述不被视为限制性意义,并且根据本公开的实施例范围由所附权利要求书以及它们的等效方案来定义。
[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是可选要素。
[0008] 该描述可使用短语“在一个实施例中”或“在实施例中”,它们各指的是相同或不同实施例中的一个或多个实施例。而且,相对于本公开的实施例所使用的术语“包括”、“包含”、“具有”等是同义的。
[0009] 除非在本公开中另有规定,否则术语“处理器”指的是物理计算机芯片和集成电路,它们可使用半导体材料和导体材料制作。处理器的示例是由英特尔公司制造的中央处理单元(CPU)。另外,除非在本公开中另有规定,否则处理器可包含一个或多个处理单元,这些单元可被称为处理器的“核”。
[0010] 除非在本公开中另有规定,否则诸如“程序”、“过程”、“线程”、“桩模块”、“代码”等术语指的是处理器或处理器核的执行路径,并且可被视为同义的。
[0011] 本公开的各种实施例可描述与使用VIDT来访问被保证安全的中断处理程序关联的方法、设备和系统,所述方法、设备和系统可减少当在程序之间切换存储页面许可视图时的系统等待时间,以保护存储器的临界区域免受恶意软件的攻击。
[0012] 随着虚拟化技术的进步,管理计算机系统上操作的多个虚拟机的虚拟机管理器(VMM)可为计算系统提供细粒化保护,同时保持与传统操作系统以及基于它们特权的保护方案的兼容性。这种虚拟化系统中的程序除了传统的特权级之外还可在虚拟机扩展(VMX)根模式或VMX非根模式下操作。VMM可允许运行在VMX根模式的程序监视和保护由在VMX非根模式操作的程序所访问的资源。VMM还可管理基于硬件的页面表,该页面表便于将计算机系统的存储器的客物理存储地址转变成主物理存储地址。这个基于硬件的页面表的示例可包含由在加利福尼亚圣克拉拉的英特尔公司制造的某些处理器中可用的扩展页面表(EPT)。
[0013] 在各种实施例中,VMM可配置成通过约束对存储器的一个或多个物理存储页面的访问来保护这些存储页面。在VMM根模式下操作的系统根代理可由VMM设立,使得向系统根代理驻留在其中的任何受保护主存储页面进行写入的任何尝试都可被处理器捕获,并作为违反来报告给VMM。除非在本公开中另有规定,否则术语“主存储页面”或简称为“存储页面”指的是映射到由VMM和/或EPT来管理的计算系统的物理存储器的存储页面,而非由具体虚拟机(VM)和/或其页面表来管理的虚拟存储页面。
[0014] 在各种实施例中,一旦系统根代理运行良好,它就可为系统的其它存储区域建立附加保护。例如,该系统根代理可约束过程读、写和/或执行存储在主存储页面中的内容的能力。对访问主存储页面的这些约束可被称为许可视图。一个或多个存储页面的许可视图可在EPT中编码,并且受VMM控制。因此,VMM可实施这些视图(即许可),而不管赋予客OS内过程的许可如何。例如,客OS可授予内核驱动器A和内核驱动器B对具体存储页面的完全访问权。然而,由系统根代理建立、在EPT中编码并由VMM实施的许可视图可仅允许内核驱动器A具有对主存储页面的完全访问权,而允许内核驱动器B具有只读访问权。结果,VMM可进一步约束由客OS授予的特权。
[0015] 在各种实施例中,基于许可视图对存储页面的访问违反可引发异常,并且可使控制权转移到VMM。例如,当执行的线程进入受保护客OS程序中时,访问违反可触发故障或陷阱(例如EPT故障),这可使执行控制权转移到VMM。在各种实施例中,执行控制权可由于vmexit调用而从客OS转移到VMM,这可由于EPT故障而被触发。VMM中的许可视图处理程序然后可分析访问违反以确定该访问可被拒绝还是准许。不是所有许可违反都可指示恶意软件感染。例如,许可视图处理程序可验证与触发执行控制权转移的访问事件关联的目的地客线性地址是否是合法目的地。在验证后,许可视图处理程序可将活动EPT或它的一部分切换到允许在目的地客线性地址的过程执行的EPT。在各种实施例中,VMM的许可视图处理程序可通过修改活动EPT来改变与存储页面关联的许可视图,从而允许存储器访问通过。在各种实施例中,在存储器访问完成之后,VMM例如可利用vmentry 调用而将控制权转移回到客OS。
[0016] 在各种实施例中,EPT中的编码许可视图可通过过程方式来定义过程中的临界系统区域的保护,并减少恶意软件攻击的可能性。然而,在每个访问违反上都生成异常(例如EPT故障)可使合法许可视图切换通过两个VM退出往返程(例如vmexit调用和vmentry调用),这可引起执行中的附加延迟。
[0017] 在各种实施例中,计算系统的处理器可配置成支持显式许可视图切换指令(视图切换指令),其可用于减少开销,并且因此可减少切换许可视图的等待时间。
[0018] 图1是例证根据本公开的各种实施例的视图切换指令的示例用法的框图。在各种实施例中,第一代码堆栈110可包含未受保护程序112以及与受保护程序121关联的已寄存回调111。受保护程序121可驻留在第二代码堆栈120中。未受保护程序112可利用已寄存回调111来访问受保护程序121及其服务。未受保护程序112默认可具有用于含有受保护程序121的主存储页面(未示出)的只读许可视图。未受保护程序112因此在它自己的许可视图下可能没有直接执行受保护程序121的许可。
[0019] 在各种实施例中,回调例程111可调用一个或多个视图切换指令131以允许未受保护程序112切换到受保护程序121的许可视图,由此取消了对例如vmexit调用的需要以及例如vmexit 调用的开销。类似地,受保护程序121也可调用一个或多个视图切换指令131,以允许受保护程序121安全退出并切换回到未受保护程序112,由此取消了对例如vmentry调用的需要以及例如vmentry调用的开销。在各种实施例中,含有一个或多个视图切换指令131的存储页面的至少一部分可共享用于受保护程序121和未受保护程序112二者的读/执行许可视图。
[0020] 在各种实施例中,如图1中所例证的,视图切换指令131可减少系统等待时间,只要对进入或退出受保护程序121的需要可先验预测即可,诸如当在已寄存回调111中调用时。然而,异步事件(诸如中断)可发生在执行受保护程序或未受保护程序期间的任何时间。当处理器接收到中断发生的通知时,处理器可跳到与该中断关联的中断处理程序例程,或触发所述中断处理程序例程的执行。中断处理程序例程的地址可在由客OS保存的中断描述表(IDT)中找到。该处理器可尝试执行中断处理程序以服务于该中断。然而,如果中断处理程序以及被中断的程序(“被中断程序”)的许可视图是不同的,则访问违反仍可发生,使得引发异常,并且执行控制权利用vmexit调用和/或vmentry调用向/从VMM转移,这可导致额外延迟。
[0021] 为了进一步减少与异步事件的处置关联的延迟,在各种实施例中,可使用虚拟化IDT(VIDT)。在各种实施例中,VIDT可包含一个或多个退出桩模块和一个或多个重进入桩模块。在各种实施例中,VIDT可包含单个退出桩模块。在各种实施例中,重进入桩模块的数量可对应于客OS的受保护程序的数量。VIDT退出桩模块可配置成使用视图切换指令来将被中断程序的许可视图切换到在IDT中寄存的中断处理程序的许可视图。VIDT重进入桩模块可配置成使用视图切换指令来将中断处理程序的许可视图切换回到被中断程序的许可视图。与VIDT及其用法关联的这些方面和其它方面将在下面的公开中进一步描述。
[0022] 图2是例证根据本公开的各种实施例使用VIDT来减少异步事件期间系统等待时间的示例的框图。如所例证的,在客OS中操作的程序226(其可能是受保护的或者未受保护的)可具有程序堆栈220。中断可发生在程序226的执行期间。该中断可对应于驻留在受保护存储页面中的中断处理程序。程序226可能缺少关于如下的许可:在它自己的许可视图下访问该存储页面以直接执行中断处理程序,而不会引起访问违反。
[0023] 在各种实施例中,在接收到中断的通知后,该处理器可跳到位于VIDT 221中的VIDT退出桩模块224,并且可执行VIDT退出桩模块224。在各种实施例中,除了系统根代理,VIDT 221可驻留在主存储页面中,该主存储页面具有对所有其它程序只读的许可视图,以便不允许篡改VIDT 221。
[0024] 在各种实施例中,VIDT退出桩模块224可配置成检查程序226的当前许可视图。在各种实施例中,当前视图可通过读已预留存储页面来获取,其可被称为当前视图页面(CVP)。在各种实施例中,CVP可具有对客OS的所有程序只读的许可视图。在各种实施例中,程序226的当前视图可在原子操作中从CVP中获取,例如,在程序226的当前视图正被获取的同时,该处理器可不接收另一中断。
[0025] 在各种实施例中,VIDT退出桩模块224可配置成获得该处理器的寄存器(例如在基于x86的处理器中可用的CS寄存器)中的中断的返回指令指针(RIP)。在各种实施例中,程序226可以是受保护程序,并且可对应于VIDT重进入桩模块215。VIDT退出桩模块224可以用VIDT重进入桩模块215的位置来替换RIP,并且可将原始RIP的地址与当前线程/过程标识号一起保存在视图专属页面(VEP)223中。VIDT退出桩模块224也可将程序
226的当前许可视图保存在VEP 223中。VEP 223可携带用于程序226的读/写许可,然而可具有用于其它程序的只读许可。
[0026] 在各种实施例中,VIDT退出桩模块224可配置成查找与从IDT接收的中断对应的原始中断处理程序212。可在如下受保护存储页面中保证中断处理程序212的安全:程序226在程序226的许可视图下可缺乏访问所述受保护存储页面或触发中断处理程序212的执行的许可。
[0027] 在各种实施例中,VIDT退出桩模块224可配置成执行等待时间减少的视图切换,以将许可视图切换到与中断处理程序212关联的视图。VIDT退出桩模块224可切换许可视图以允许执行中断处理程序212,而不会引起例如与vmexit调用关联的延迟和访问违反。VIDT退出桩模块224可通过使用之前所公开的显式视图切换指令来这样做。在视图切换之后,在中断处理程序212的许可视图下,VIDT退出桩模块224可配置成使处理器跳到中断处理程序212的地址,并触发中断处理程序212的执行。由于VIDT退出桩模块224已经被视图切换到该中断处理程序的许可视图,因此中断处理程序212的执行不会引起EPT故障。
[0028] 在各种实施例中,在该处理器完成中断处理程序212的执行之后,该处理器可跳到当前帧的RIP,其可对应于VIDT重进入桩模块215。VIDT重进入桩模块215可配置成从VEP 223中读所需的许可视图。在各种实施例中,在中断处理程序212的许可视图下,VEP223可对VIDT重进入桩模块215而言是只读的。
[0029] 在各种实施例中,VIDT重进入桩模块215可配置成执行等待时间减少的视图切换,以将中断处理程序212的许可视图切换到程序226的许可视图。在视图切换之后,在程序226的许可视图下,VIDT重进入桩模块215可以读VEP 223,以定位程序226的所保存RIP返回地址,并使处理器跳到程序226的被中断地址点。
[0030] 在各种实施例中,客OS的一个或多个受保护程序的地址范围可被寄存在称为全局线性地址(GLA)范围表的受保护数据结构中。在各种实施例中,VIDT退出桩模块224可基于程序226的被中断位置的地址来找到对应于受保护程序226的特定VIDT重进入桩模块215。
[0031] 在各种实施例中,为了保护VIDT,VIDT可具有仅允许由系统根代理读/写的许可视图。对于在客OS中操作的所有其它程序,VIDT可具有只读的许可视图。在各种实施例中,VIDT可由系统根代理建立。在各种实施例中,VIDT可与系统根代理的初始化一起建立。
[0032] 图3是例证根据本公开的各种实施例与建立客OS的VIDT关联的所选操作的流程图。在块310中,系统根代理可为VIDT 221分配存储页面。在各种实施例中,该系统根代理也可为一个或多个重定向表分配存储页面。所述一个或多个重定向表中的每个重定向表都可包含原始中断处理程序的地址以及VIDT退出桩模块的地址/VIDT重进入桩模块的地址。在各种实施例中,系统根代理可建立数量与可在处理器中可用的物理处理单元(例如处理核)的数量对应的重定向表。例如,如果计算装置的处理器包含8个处理核,则该系统根代理给存储器分配8个重定向表,处理器的每个核一个重定向表。在各种实施例中,该系统根代理还可建立错误代码以及其它进入特定代码。
[0033] 在块320中,该系统根代理可建立VIDT 221。在各种实施例中,该系统根代理可通过对VMM进行特定系统调用来建立VIDT 221。在各种实施例中,该特定系统调用可以是vmcall 指令。
[0034] 在块330中,在从该系统根代理接收到vmcall之后,该VMM可从该系统根代理取得控制权,并验证该系统根代理的身份。VMM可通过针对GLA范围表检查进行过vmcall 的系统根代理的指令指针的地址来验证该系统根代理的身份。在各种实施例中,VMM也可将该处理器的所有核带入到会合状态中。
[0035] 在块340中,VMM可为一个或多个重定向表预配置客OS的原始中断处理程序的地址。在各种实施例中,VMM可执行为该处理器的每个核预配置一个或多个重定向表。
[0036] 在块350中,VMM可执行各种初始化以保持兼容性。例如,在各种实施例中,VMM可初始化客OS存储/加载中断描述符表处理程序(例如sidt 处理程序和lidt 处理程序),使得程序兼容性可得以保持。之后,所有中断处置都可通过VIDT 221,而不是通过原始IDT211。
[0037] 图4是例证根据本公开的各种实施例的VIDT退出桩模块的所选操作的流程图。在块410,VIDT退出桩模块224可配置成将处理器的各种寄存器的状态保存到该过程的堆栈上。在块420中,VIDT退出桩模块224可配置成从CVP中检索程序226的当前许可视图。在块430中,VIDT退出桩模块224可配置成将被中断程序226的许可视图与中断处理程序
212的视图相比较。如果VIDT退出桩模块224确定被中断程序226的许可视图等于中断处理程序212的许可视图,则在块470中VIDT退出桩模块224可配置成直接得到中断处理程序212的地址。在各种实施例中,VIDT退出桩模块224可从OS堆栈中恢复处理器寄存状态,并在块490中使处理器跳到中断处理程序212的地址并执行中断处理程序212。由于被中断程序和中断处理程序的许可视图是相同的,因此,执行中断处理程序212将不会引起对许可视图的违反。
[0038] 在各种实施例中,为了处置其中VIDT退出桩模块224确定被中断程序226的许可视图不等于中断处理程序212的许可视图的情形,在块440中,VIDT退出桩模块224可配置成进一步确定被中断程序226是否是受保护程序。这可包含:比较被中断程序的地址指针与GLA范围表。如果VIDT退出桩模块224确定被中断程序226是受保护程序,则在块450中,在被中断程序226的线程/过程ID下,VIDT退出桩模块224可将被中断程序226的许可视图以及各种寄存器的当前状态(包含指令指针)高速缓存到VEP中。在各种实施例中,在块460中,VIDT退出桩模块224可将客OS中断堆栈帧返回地址(RIP)更新到与被中断程序226对应的VIDT重进入桩模块215的地址。在块470中VIDT退出桩模块224可配置成得到中断处理程序212的地址。在块480中VIDT退出桩模块224可配置成调用视图切换指令以切换到中断处理程序212的许可视图。在块490中在中断处理程序121的许可视图下,VIDT退出桩模块224可配置成从该堆栈中恢复处理器寄存状态,并使处理器跳到中断处理程序212的地址。由于许可视图已经改变,因此中断处理程序212的执行可不引起违反,并且例如与vmexit/vmentry 调用关联的延迟可得以避免。
[0039] 在各种实施例中,为了处置其中VIDT退出桩模块224确定被中断程序226不是受保护程序的情形,在块470中,VIDT退出桩模块224可配置成得到中断处理程序212的地址,并在块490中可配置成使处理器跳到中断处理程序212的地址。由于被中断程序226和中断处理程序212具有不同的许可视图,因此执行中断处理程序212可引起访问违反,这可造成由于例如与vmexit/vmentry调用关联的长等待时间而引起的延迟。不过,允许中断在未受保护程序226的执行期间继续进行可确保与已经不适合于新保护方案的传统程序的兼容性。
[0040] 图5是例证根据本公开的各种实施例的VIDT重进入桩模块的所选操作的流程图。为了在中断处理程序212完成其执行并返回到VIDT重进入桩模块215之后进行处理,在块
510中,VIDT重进入桩模块215可配置成将处理器寄存状态保存在客OS的堆栈上。在块
520中,VIDT重进入桩模块215可配置成从CVP中检索中断处理程序212的许可视图。在块530中,VIDT重进入桩模块215可配置成从VEP中检索被中断程序226的许可视图。如果从CVP中检索的许可视图不等于从VEP中检索的许可视图,则VIDT重进入桩模块215可调用视图切换指令,以切换到被中断程序226的许可视图。
[0041] 在各种实施例中,为了在视图切换之后进行处理,在被中断程序的许可视图下,在块540中,VIDT重进入桩模块215可配置成重获取被中断程序226的许可视图。在块550中,VIDT重进入桩模块215可配置成比较当前许可视图(在视图切换之后)与重获取的许可视图。如果VIDT重进入桩模块215确定这两个许可视图不相等,则VIDT重进入桩模块215可对VMM引发错误。在各种实施例中,VIDT重进入桩模块215可通过调用vmcall 指令来引发该错误。
[0042] 在各种实施例中,如果VIDT重进入桩模块215确定当前许可视图(在视图切换之后)和从VEP中重获取的许可视图相等,则在块560中,VIDT重进入桩模块215可从该VEP中读被中断程序226的RIP。在块570中,VIDT重进入桩模块215可更新处理器的线程上下文寄存器以移除最后状态。在各种实施例中,线程上下文寄存器的更新可以是原子操作以防止线程上下文寄存器由于其它异步事件或中断的发生而被更新。在各种实施例中,在块580中,VIDT重进入桩模块215可从堆栈中恢复寄存状态,并使处理器跳到被中断程序226的地址,并继续它的执行。
[0043] 图6例证了根据本公开的各种实施例具有VIDT支持的计算装置的组件视图。在各种实施例中,计算装置600可配置成使用所描述的VIDT以及关联的方法来减少用于处置异步事件的系统等待时间,如较早所描述的。计算装置600可包含配置成操作VMM 620的处理器610。处理器610可包含多个处理核,并且还可包含对于EPT 630的支持。在各种实施例中,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] 在各种实施例中,客OS 660可配置成支持IDT 662以及一个或多个重定向表663。IDT 662可包含分别对应于处理器610在客OS 660的执行期间可接收的各种中断的多个中断处理程序。重定向表663可配置成存储VIDT退出桩模块和各种中断处理程序的地址。
在各种实施例中,在客OS 660中支持的重定向表663的数量可对应于在处理器610中可用的处理核的数量。
[0045] 在各种实施例中,处理器610可配置成接收中断,同时执行客OS 660内的过程665。处理器610可配置成执行VIDT退出桩模块,而不是为所接收中断调用在IDT 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等标准的一个或多个有形非暂态计算机可读海量存储装置706(诸如盘、硬驱动器、压缩盘只读存储器(CDROM)等等)。在各种实施例中,海量存储装置706可利用I/O互连714耦合到系统总线712。
[0048] 系统存储器704和海量存储装置706可用于存储实现一个或多个操作系统、固件模块或驱动器、应用等等(包含较早描述的VIDT以及关联的方法的所选方面)的编程指令的工作拷贝和永久拷贝,在本文统称为722。编程指令的永久拷贝可在工厂或在现场被放入到永久存储装置706中,例如通过分布介质(未示出)(诸如压缩盘(CD))或通过通信接口710(从分布服务器(未示出))。也就是说,具有代理程序的实现的一个或多个分布介质可用于分布该代理并对各种计算装置编程。
[0049] 这些要素701-722的其余构成是已知的,并且因而将不进一步描述。
[0050] 尽管在本文已经例证和描述了特定实施例,但本领域技术人员要认识到,可以用各种各样的替换和/或等效实现来替代所示出和描述的特定实施例,而没有脱离本公开实施例的范围。本申请意图涵盖在本文讨论的实施例的任何改编或变型。因此,显然意图是,本公开的实施例仅由权利要求及其等效方案来限制。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈