CN101620547B - X86计算机虚拟化的物理中断处理方法 - Google Patents
X86计算机虚拟化的物理中断处理方法 Download PDFInfo
- Publication number
- CN101620547B CN101620547B CN2009100438299A CN200910043829A CN101620547B CN 101620547 B CN101620547 B CN 101620547B CN 2009100438299 A CN2009100438299 A CN 2009100438299A CN 200910043829 A CN200910043829 A CN 200910043829A CN 101620547 B CN101620547 B CN 101620547B
- Authority
- CN
- China
- Prior art keywords
- cpu
- operating system
- submodule
- ipi
- dom0
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种X86计算机虚拟化的物理中断处理方法,目的是解决同时运行多个虚拟化操作系统的X86计算机中物理中断处理方法实现复杂、代码庞大和中断处理开销大等问题。技术方案是首先构建虚拟机系统,主要是修改物理中断处理模块,然后由由虚拟机系统对物理中断进行处理,包括构建接收和处理NMI所需要的软件环境,初始化IPI发送与接收所需的软件环境、对LAPIC进行基本初始化,分别对dom0操作系统、domU操作系统和虚拟机监控器进行配置,监测和处理dom0操作系统对LAPIC的初始化、设备中断、NMI、IPI这五个步骤。采用本发明能简化中断处理逻辑、缩减虚拟机监控器的代码量,减小中断处理的开销,增强整个计算机系统的稳定性,具有优秀的硬件适配性。
Description
技术领域
本发明涉及X86计算机体系结构以及操作系统领域的中断处理方法,尤其是X86计算机虚拟化(virtualization)的物理中断处理方法。
背景技术
当前,计算机的处理能力不断快速提升,而根据相关统计,运行于其上的服务软件在系统空闲时段往往只用到了不到10%的处理能力,在忙时也往往用不到50%。与此同时,计算机的能耗不断加大,电能的消耗已经逐渐成为IT业的主要开销之一。另外,出于安全和可靠等方面的考虑,大量的服务提供商必须使用多台服务器以满足数据备份、冗余容错和服务的安全隔离等方面的需求,这样不仅大大增加了设备购置的资金投入、成倍提高了电能消耗,而且由于大量服务器的利用率较低,造成了性价比严重低下。 为了解决这个问题,人们提出了虚拟化的概念,即通过虚拟机监控器VMM(VirtualMachine Monitor),对真实计算机的CPU(Central Processing Unit,中央处理单元)、内存和硬件设备进行虚拟化,在一台真实的计算机上虚拟出多台“虚拟机VM(VirtualMachine)”,每台虚拟机都可运行一个操作系统。这样就能进行服务器整合(serverconsolidation),即将多台物理服务器整合为一台物理服务器,从而大大提高服务器利用率、降低能源消耗和提高安全性与可靠性。在桌面计算领域,虚拟化技术使得用户能够同时运行多个不同的操作系统,满足了用户对不同计算平台的需求。
中断是硬件设备与操作系统等系统软件之间通信的主要方式之一,虚拟机监控器需要处理两种类型的中断:一是物理中断(physical interrupt),指由X86计算机的真实硬件设备所产生的中断,包括设备产生的设备中断和特殊的不可屏蔽中断NMI(NonmaskableInterrupt);二是虚拟中断(virtual interrupt),指由虚拟的硬件设备所产生的中断。在X86计算机中,所有的物理中断都由可编程中断控制器PIC(Programmable InterruptController)统一管理,系统软件在处理物理中断时,需要与PIC进行交互,以确保中断的正确接收和处理,具体的交互方式和内容参见X86体系结构手册(http://www.intel.com和http://www.amd.com)。中断处理方法也必须对PIC进行初始化和控制管理。
当前虚拟机监控器有两大类体系结构:第一类体系结构的虚拟机监控器是应用程序或内核模块,实现于操作系统之中;第二类体系结构的虚拟机监控器是最底层的系统软件或固件,实现在操作系统之下。第一类虚拟机监控器无需处理物理中断,X86计算机的所有物理中断由其所在的操作系统进行处理,因此此类虚拟机监控器实现简单、硬件适配 性好。但是,作为内核模块实现在操作系统内核中的虚拟机监控器依赖于特定的操作系统,例如KVM只能运行于Linux内核,VirtualPC则只能运行于Windows内核,等等。某些操作系统如Linux的内核接口在版本升级时变化较大,增加了此类虚拟机监控器的升级维护开销。而作为操作系统的应用程序的虚拟机监控器虽然比较容易实现跨平台,例如VMware workstation、Qemu、VirtualBox等产品均能够在Linux和Windows等多平台上运行,但此类产品无法使用CPU等硬件提供的虚拟化支持功能,性能和功能都受到了较大的限制。
第二类虚拟机监控器运行在操作系统之下,自身实现了物理中断处理功能。此类虚拟机监控器是最底层的系统软件,能够对计算机资源进行更为底层和更为细腻的控制,并能够对运行于其上的操作系统进行管理和控制。此外,该类虚拟机监控器还能够对计算机系统的物理资源进行粗粒度的划分和管理,这在服务器领域是非常有用的功能,特别是对大规模服务器。作为代价,此类虚拟机监控器需要对与物理中断处理相关的X86计算机硬件进行初始化和控制、以及物理中断处理等工作,实现复杂度要比第一类产品高得多,同时必然导致整个系统硬件适配性的降低。此类虚拟机监控器产品主要有Xen和VMware ESX Server等。
上述第二类虚拟机监控器系统从下至上由三层组成:最底层是X86计算机硬件与中断层,包括本地高级可编程中断控制器LAPIC(Local Advanced Programmable InterruptController、输入/输出高级可编程中断控制器IOAPIC(Input/Output AdvancedProgrammable Interrupt Controller)、CPU、内存和除此之外的硬件设备,如网卡、磁盘等,X86计算机的中断包括设备中断和NMI;中间层是虚拟机监控器;最上层是同时运行的多个虚拟化操作系统,包括一个负责硬件设备驱动的dom0(domain 0,0号域)操作系统,以及一个或多个domU(domain user,用户域)操作系统。虚拟机监控器由物理中断处理模块和虚拟中断处理模块、CPU指令虚拟化模块、内存管理单元MMU(MemoryManagement Unit)虚拟化模块组成。物理中断处理模块由LAPIC初始化子模块、IOAPIC初始化子模块、CPU运行模式配置子模块、物理中断接收子模块、物理中断转发子模块、虚拟中断控制器VPIC(Virtual Programmable Interrupt Controller)子模块、处理器间中断IPI(Inter-Processor Interrupt)发送与接收子模块组成。
物理中断接收子模块在收到X86计算机的设备中断和NMI后,将其传递给物理中断转发子模块,物理中断转发子模块将中断转发到dom0操作系统。LAPIC初始化子模块与IOAPIC初始化子模块分别初始化X86计算机的LAPIC和IOAPIC,VPIC子模块向dom0操作系统提供虚拟的可编程中断控制器VPIC,并通过访问初始化后的LAPIC与IOAPIC实现dom0操作系统的对VPIC的请求和调用。IPI发送与接收子模块则通过访问LAPIC向虚拟中断处理模块和MMU虚拟化模块提供处理器间中断服务。CPU运行模式配置子模块按下述第三步给出的方法对CPU的运行模式进行配置。
虚拟中断处理模块接收来自dom0操作系统的虚拟中断,将其转发到domU操作系统, CPU指令虚拟化模块和MMU虚拟化模块则为dom0和domU操作系统提供CPU指令虚拟化和MMU虚拟化服务。
此类虚拟机监控器的物理中断处理模块通过如下步骤实现物理中断处理:
第一步,LAPIC初始化子模块与IOAPIC初始化子模块分别初始化LAPIC与IOAPIC。在当前主流的对称多处理SMP(Symmetric-Multiprocessing)计算机中,可编程中断控制器PIC主要由两组芯片组成,即IOAPIC和LAPIC。当X86计算机加电引导时,此类虚拟机监控器就接管了PIC,对PIC进行全面初始化,并始终保持对PIC进行独占式访问和管理。这些初始化工作包括:探测各个PIC芯片是否存在、为每个PIC芯片映射相应的寄存器器以访问该PIC芯片、启用上述每个PIC芯片、对SMP系统中的每个CPU进行编号、对每个PIC芯片按X86体系结构手册的硬件规范进行全面的设置和管理等,初始化过程非常复杂,详见Intel和AMD的CPU体系结构手册。上述PIC的每组芯片都有相应的技术规范,随着时间的推移,各种新功能和新特性不断地加入到规范中。为了利用这些新功能和新特性,此类虚拟机监控器必须不断地更新版本,改进其初始化和管理流程。
第二步,物理中断接收子模块构建接收和处理物理中断所需要的软件环境。按X86体系结构的规定,为了正确接收物理中断,必须初始化CPU的中断描述符表IDT(Interrupt Description Table),并为每个物理中断准备中断处理函数。IDT表中共有256项(第0项到第255项),即支持256个物理中断。初始化IDT表即初始化IDT表中的全部256项,方法是为每个物理中断指定一个中断处理函数(即准备256个物理中断处理函数),并将这些中断处理函数首地址填入IDT的相应表项中。
第三步,CPU运行模式配置子模块配置CPU的运行模式。Intel公司和AMD公司的CPU都对虚拟化提供了硬件支持,它们的CPU都增加了一种新的运行模式,即虚拟化模式,当CPU处于虚拟化模式时,如果产生了一个物理中断,则根据配置的不同,CPU采用如下两种方式之一对物理中断进行响应:
●CPU不通知虚拟机监控器,而是直接将中断传送给当前正在虚拟化模式中运行的操作系统处理;
●CPU停止运行当前处于虚拟化模式中的操作系统,通知虚拟机监控器有中断到达,由虚拟机监控器决定后续如何处理该中断。
此类虚拟机监控器之上能够同时运行多个操作系统,其中只有dom0操作系统能够访问真实的硬件。此类虚拟机监控器自身并不包含设备驱动程序,所有的硬件设备均在dom0操作系统中被驱动。此类虚拟机监控器通过配置CPU,使得虚拟机监控器自身和dom0操作系统运行于CPU的普通模式,而让domU操作系统运行于CPU的虚拟化模式。并且,当CPU处于普通模式和虚拟化模式时,均打开CPU的中断允许标志,使得到达的物理中断能够立即被触发。
第四步,VPIC子模块为上层操作系统提供虚拟可编程中断控制器VPIC(Virtual PIC), 保证上层操作系统对下面第六步中转发过去的物理中断的正确处理。按X86体系结构的规定,当操作系统接收到中断并处理完毕后,中断处理程序需要基于PIC接口对PIC进行“中断结束(End-Of-Interrupt,EOI)”操作。此外,在中断处理过程中,X86体系结构还允许中断服务程序或设备驱动程序根据需要对某个中断进行屏蔽和解除屏蔽,以及改变某个中断的优先级等等其它操作。由于X86计算机真实的PIC被虚拟机监控器独占访问,因此虚拟机监控器需要虚拟一套VPIC,供上层dom0使用。为了使用该VPIC,必须修改dom0操作系统的实现代码,让dom0操作系统不再访问真实的PIC,而通过虚拟机监控器指定的协议访问VPIC。当dom0操作系统对VPIC进行中断结束等操作时,此类虚拟机监控器再通过访问真实的PIC来最终实现相应的操作。
当上述四个步骤完成后,物理中断处理方法的初始化流程结束,此后物理中断处理方法转入第五步进入循环,以并行处理两个事件:
第五步,当物理中断到达时,转第六步;当虚拟机的其它模块或上层操作系统请求发送和接收处理器间中断IPI时,转第八步。
第六步,当有物理中断到达时,物理中断接收子模块根据当前CPU所处模式的不同,按不同的方法接收物理中断。根据上述配置,当CPU处于普通模式,即当前正在运行虚拟机监控器或dom0操作系统时,到达的物理中断将使得CPU中断当前的工作,然后根据物理中断号从IDT表中取出相应的中断处理程序的地址,并跳转到该地址进行中断处理。当CPU处于虚拟化模式,即当前正在运行domU操作系统时,如果有物理中断到达,CPU将中断当前操作系统的运行,并通知虚拟机监控器,虚拟机监控器再根据上述中断处理方法接收中断。
第七步,物理中断转发子模块将接收到的物理中断转发到dom0操作系统。当CPU接收到物理中断并转入运行在IDT表中指定的中断处理程序后,该中断处理程序就调用物理中断转发子模块,由该子模块将相应的物理中断转发到dom0操作系统,供dom0操作系统中的相应设备驱动程序进行真正的中断处理。物理中断转发的方法是模拟当物理中断产生时CPU的行为,包括构造中断现场、保存相关寄存器、设置相关软硬件标志等步骤,详见Intel和AMD的X86体系结构手册。该物理中断转发方法让dom0操作系统以为该中断直接来自于硬件设备,从而保证dom0操作系统正确接收物理中断。上述过程处理完成后,转第五步开始下一次循环。
第八步,IPI发送与接收子模块实现处理器间中断IPI的发送和接收。在对称多处理SMP系统中,存在着多个同构的CPU,CPU之间的通信是通过IPI实现的,虚拟机监控器自身以及其上运行的操作系统都需要通过IPI实现处理器之间的通信。此类虚拟机监控器与Linux等操作系统一样,选择空闲的物理中断号作为IPI中断的中断号。当虚拟机监控器的其它模块或上层操作系统需要进行IPI通信时,此类虚拟机监控器访问PIC提供的IPI发送接口,向SMP系统中的一个或多个CPU发送给定中断号的物理中断。发送IPI时,可以发送给某几个CPU,也可以发送给SMP系统中的全部CPU。当发送给系统中 的某几个CPU时,需要指定其CPU的编号,这些CPU的编号是在进行PIC初始化时分配好的。由于IPI的中断号是某个空闲的物理中断的中断号,因此接收IPI的方法与接收该空闲物理中断的方法完全相同,见第六步。IPI消息中包含一个IPI消息接收和处理函数的地址,当IPI被目标CPU接收到以后,该IPI消息接收和处理函数被调用,从而实现IPI通信。IPI发送或接收完毕后,转第五步进入下一次循环。
这种中断处理方法存在的主要问题是实现复杂、代码庞大,而且大大增加了中断处理的开销。
1.实现复杂、代码庞大
由于这种中断处理方法需要独占式地访问和管理PIC,因此与操作系统的中断处理模块一样,为了保证中断的正确处理,这种方法需要使用PIC的大量复杂功能,并实现对PIC的全面管理。X86计算机经过几十年的发展,其PIC的型号、接口和功能都有很大的发展和变化,使得这种方法的中断处理代码既庞大又复杂。
近年来,虚拟化领域的一个重要发展方向是将虚拟机监控器作为固件(firmware)集成到计算机中,为计算机提供虚拟化扩展功能,这要求虚拟机监控器的各项功能,包括中断处理方法,应该尽可能简单。采用这种中断处理方法的虚拟机监控器由于逻辑非常复杂、代码量大而难于作为固件集成到计算机中。
2.大大增加了中断处理的开销
当操作系统直接运行在X86计算机之上时,来自硬件设备的物理中断将直接被操作系统接收,操作系统将直接调用相应的设备驱动程序进行中断处理。当处理完成后,操作系统直接向PIC发送“中断结束”命令。而运行了此类虚拟机监控器之后,来自硬件设备的物理中断先被此类虚拟机监控器接收,它再通过大量的代码设置中断现场、保存相关寄存器和设置相关软硬件标志,才能将该物理中断转发给dom0操作系统。由于物理中断很多很密集,这些中断转发代码将增加大量的CPU处理开销,从而导致CPU利用率降低。
此外,在中断处理过程中和处理完毕后,dom0操作系统会向VPIC发送“中断结束”等命令,这些命令也必须通过VPIC和虚拟机监控器,才能最终发给真正的PIC,整个处理过程要比直接在X86计算机上运行操作系统复杂得多。由于每次物理中断至少需要一次中断结束命令,因此这种复杂度也导致了中断处理开销的大幅上升。
上述两个问题是现有物理中断处理方法所固有的,除此之外,当前实现物理中断处理方法的主流虚拟机监控器产品,例如Xen、VMware ESX Server等,还存在一个较大的问题,即它们都需要定制Linux以配合进行物理中断处理和硬件设备驱动。Xen需要定制dom0 Linux使其访问虚拟机的VPIC;VMware ESX Server则需要裁剪一个Linux内核以负责驱动所有硬件设备,这要求VMware公司维护所有硬件设备驱动程序,其难度和工作量都十分巨大。
发明内容
本发明要解决的技术问题是:针对同时运行多个虚拟化操作系统的X86计算机中物理中断处理方法实现复杂、代码庞大和导致中断处理开销大等问题,提供一种新的物理中断处理方法:不接收和处理任何物理中断,而是使物理中断直接在dom0操作系统中触发和处理,同时允许dom0操作系统直接访问真实的PIC,从而极大降低物理中断处理的实现复杂度,并大大降低物理中断处理的开销。此外,本发明不依赖于特定的操作系统,即所有操作系统都可不加修改地运用本发明接收和处理物理中断,以实现对硬件设备的驱动。
本发明的技术方案是:
首先构建虚拟机系统。与背景技术中的第二类虚拟机监控器系统一样,本发明所构建的虚拟机系统也由三部分组成:最底层是X86计算机硬件与中断;中间层是虚拟机监控器;最上层是同时运行的多个虚拟化操作系统,包括一个dom0操作系统,一个或多个domU操作系统。虚拟机监控器由物理中断处理模块和虚拟中断处理模块、CPU指令虚拟化模块、MMU虚拟化模块组成,其中后三个模块与背景技术中的虚拟机监控器系统中对应的模块完全相同。物理中断处理模块由LAPIC初始化子模块、CPU运行模式配置子模块、dom0 LAPIC初始化监视子模块、dom0设备中断接收辅助子模块、IPI发送与接收子模块、NMI接收和处理子模块这六个子模块组成。
物理中断包括设备中断和NMI两类。CPU运行模式配置子模块配置CPU的运行模式并接收从CPU发来的设备中断信息,再调用dom0设备中断接收辅助子模块,在dom0设备中断接收辅助子模块的控制下,设备中断直接传递给dom0操作系统。所有的NMI都传递给NMI接收和处理子模块,该子模块接收NMI后进行判断,如果NMI是IPI消息导致的,则将该NMI传送给IPI发送与接收子模块,否则将NMI转发至dom0操作系统。LAPIC初始化子模块在X86计算机系统加电引导时对LAPIC进行部分初始化,在dom0 LAPIC初始化监视子模块的监控下,dom0操作系统直接访问经初始化的LAPIC,当CPU指令虚拟化模块检测到dom0对LAPIC重新初始化时,CPU指令虚拟化模块通知dom0 LAPIC初始化监视子模块,由dom0 LAPIC初始化监视子模块调用LAPIC初始化子模块对LAPIC进行重配置。IPI发送与接收子模块直接访问LAPIC进行IPI消息的发送与接收。
构建好虚拟机系统后,由虚拟机系统对物理中断进行处理,方法是:
第一步,NMI接收和处理子模块构建接收和处理NMI所需要的软件环境,方法为:
构建NMI中断的中断处理函数,将该中断处理函数的地址放入IDT表的第2项中(这是因为NMI的中断号为2,NMI接收和处理子模块只接收NMI中断),当NMI中断到达时,该中断处理函数被调用。
第二步,IPI发送与接收子模块按如下方法初始化IPI发送与接收所需的软件环境:
2.1选用不可屏蔽中断NMI的中断号2作为IPI的中断号。在虚拟机监控器运行期间,虽然屏蔽了CPU的中断允许标志,但是根据X86体系结构手册,NMI即使在CPU的中断允许标志被屏蔽时仍然能够被触发和接收,使得虚拟机监控器能够立即接收到IPI消息;
2.2为每个CPU都设置一个先进先出的队列结构作为IPI消息队列,记录当前CPU接收的所有IPI消息,使得IPI消息不丢失,并能够按序进行处理。同时为每个IPI消息队列设置一个“消息队列锁”,保证对该IPI消息队列访问的原子性。
第三步,LAPIC初始化子模块对本地高级可编程中断控制器LAPIC进行基本初始化。如前所述,X86计算机中配备了多组PIC,包括输入/输出高级可编程中断控制器IOAPIC和本地高级可编程中断控制器LAPIC,LAPIC初始化子模块仅对LAPIC进行最基本的初始化,方法如下:
3.1探测X86系统中是否配备了LAPIC。探测方法是设置CPU的EAX寄存器为1,再执行CPUID这条CPU指令,最后检查EDX寄存器的第9位是否为1,如果为1则LAPIC存在。如果系统中不存在LAPIC,则转第四步,否则执行3.2;
3.2映射LAPIC的寄存器。按照X86体系结构手册的规定,SMP系统中每个CPU都有自己的LAPIC,而每个CPU的LAPIC的所有寄存器都被内存映射(memory mapping)到物理地址从0xFEE00000开始的4KB大小的物理内存中。为了访问当前CPU的LAPIC的寄存器,采用国际上通用的映射方法为这4KB的物理地址区间映射相应的虚拟地址;
3.3启用LAPIC,即向LAPIC的寄存器中写入数据。
第四步,dom0操作系统、domU操作系统和虚拟机监控器分别运行在三种不同的CPU运行模式中,CPU运行模式配置子模块按如下方法分别配置dom0操作系统、domU操作系统和虚拟机监控器的运行模式:
4.1对dom0操作系统,按如下方法配置CPU的运行模式:
●配置dom0操作系统的运行模式为CPU的虚拟化模式,而不是国际同类方法所配置的普通模式;
●配置dom0操作系统的中断触发模式为直接触发和处理模式,即当dom0操作系统运行时,到达的物理中断不通知物理中断处理模块,而直接在dom0操作系统中被触发和处理;
●当dom0操作系统运行时,打开CPU的中断允许标志。
4.2对domU操作系统,按如下方法配置CPU的运行模式:
●与国际同类方法一样,配置domU操作系统的运行模式为CPU的虚拟化模式;
●与国际同类方法一样,配置domU操作系统的中断触发模式为退出运行并通知物 理中断处理模块这种模式,即当domU操作系统运行时,到达的物理中断将中断domU操作系统的运行,并马上通知物理中断处理模块;
●与国际同类方法一样,当这些操作系统运行时,打开CPU的中断允许标志。
4.3对虚拟机监控器,按如下方法配置CPU的运行模式:
●与国际同类方法一样,配置虚拟机监控器的运行模式为CPU的普通模式;
●在虚拟机监控器运行期间,始终关闭CPU的中断允许标志。国际同类方法则恰好相反,始终打开CPU的中断允许标志。
上述四个步骤完成以后,初始化流程结束,进入第五步,分别由dom0LAPIC初始化监视子模块、dom0设备中断接收辅助子模块、IPI发送与接收子模块、NMI接收和处理子模块监测和处理四个事件:
第五步,当dom0LAPIC初始化监视子模块监测到dom0操作系统对LAPIC进行初始化操作时,转5.1;当dom0设备中断接收辅助子模块监测到设备中断到达时,转5.2;当NMI接收和处理子模块监测到不可屏蔽中断NMI到达时,转5.3;当IPI发送与接收子模块检测到虚拟机的其它模块或上层操作系统请求发送和接收处理器间中断IPI时,转5.4。
5.1由于dom0操作系统可以直接访问PIC,因而dom0操作系统会对LAPIC进行重新初始化,而X86体系结构的某些型号的CPU允许改变LAPIC寄存器的内存映射地址,即将默认的0xFEE00000改为其它的值,这种修改是通过访问编号为0x1B的型号相关寄存器(Model-Specific Registers,MSR)进行的。其它型号的CPU不允许改变LAPIC寄存器的内存映射地址,此时dom0LAPIC初始化监视子模块将监测不到dom0操作系统对LAPIC的初始化操作。CPU指令虚拟化模块截获dom0操作系统读写MSR的指令rdmsr/wrmsr,并将结果交给dom0LAPIC初始化监视子模块,dom0LAPIC初始化监视子模块判断dom0操作系统是否访问编号为0x1B的MSR,如果是则判断LAPIC寄存器的内存映射地址是否被改变,如果改变则将新地址记录下来,并按3.2所示的方法重新映射LAPIC的寄存器。如果不改变则转第五步,进入下一次循环。
5.2dom0设备中断接收辅助子模块分下列三种情况辅助dom0操作系统接收设备中断。与国际同类方法不同,物理中断处理模块自身并不接收设备中断,而仅仅辅助dom0操作系统接收设备中断,保证所有的设备中断都直接在dom0操作系统中触发从而被dom0操作系统直接接收和处理:
●当设备中断到达时,如果CPU正在运行domU操作系统,则CPU中断domU操作系统的运行,并将设备中断到达情况通知dom0设备中断接收辅助子模块,dom0设备中断接收辅助子模块马上请求虚拟机监控器转入运行dom0操作系统。等到dom0操作系统开始运行时,设备中断将立即被触发并被dom0操作系统接收。
●当设备中断到达时,如果CPU正在运行dom0操作系统,设备中断直接在dom0操作系统中被触发,dom0设备中断接收辅助子模块无需进行任何处理;
●当设备中断到达时,如果CPU正在运行虚拟机监控器自身,则由于CPU的中断允许标志被屏蔽,到达的设备中断不会被触发,dom0设备中断接收辅助子模块也无需进行任何处理;
上述处理完毕后,转第五步进入下一次循环。
5.3 NMI接收和处理子模块接收和处理不可屏蔽中断NMI,方法是判断IPI发送与接收子模块是否正在发送IPI消息,如果正在发送IPI消息,则该NMI是由于发送IPI消息引起的,则由IPI发送与接收子模块按5.4.2所述方法接收和处理IPI消息;否则,将NMI转发到dom0操作系统,dom0操作系统将异步处理该NMI。上述两种情况处理完成后,都转第五步进入下一次循环。
5.4如果IPI发送与接收子模块被请求发送IPI,转5.4.1;如果NMI接收和处理子模块接收到NMI后调用IPI发送与接收子模块,转5.4.2:
5.4.1按下述方法向一个或多个目标CPU发送一个IPI消息:
5.4.1.1获得目标CPU的消息队列锁,把IPI消息加入到该IPI消息的目标CPU的IPI消息队列中,再释放目标CPU的消息队列锁;
5.4.1.2通过访问LAPIC的寄存器,向SMP系统中的其它全部CPU发送该IPI消息,发送参数中设置的IPI中断号为NMI的中断号2。
5.4.1.3转第五步进入下一次循环。
5.4.2按下述方法接收和处理IPI消息:
5.4.2.1先获得本CPU的消息队列锁,再判断消息队列是否为空,如果为空则释放本CPU的消息队列锁,转5.4.2.3;如果消息队列不为空,执行5.4.2.2;
5.4.2.2从本CPU的IPI消息队列中取出一个IPI消息,释放本CPU的消息队列锁,调用IPI消息中包含的IPI接收和处理函数实现IPI通信,转5.4.2.1。
5.4.2.3转第五步进入下一次循环。
采用本发明能够达到如下的技术效果:
1.采用本发明能极大地简化中断处理逻辑、缩减虚拟机监控器的代码量,采用本发明实现的虚拟机监控器的二进制数据量不超过1兆字节(1MB),能够方便地作为固件集成到X86计算机的只读存储器ROM(Read-Only Memory)中。按本发明实现的物理中断处理模块本身不接收物理中断,而只是辅助dom0操作系统接收物理中断,使得到达的物理中断都在dom0操作系统中被触发和处理,不需要进行物理中 断转发,也不需要虚拟PIC,从而大大简化了物理中断处理逻辑、提高了物理中断处理效率
2.采用本发明能极大地减小中断处理的开销、增强整个计算机系统的稳定性,使得具有优秀的硬件适配性。首先,本发明仅初始化LAPIC,且只初始化LAPIC的最基本的部分,即LAPIC的探测、映射和启用。这部分信息早已成熟和稳定,已经保持了十多年没有变化,并且在将来的X86计算机平台上也必须向下兼容而保持不变。这保证了本发明具有良好的平台适配性,能够广泛适用于现在和将来的X86计算平台。
3.本发明不依赖于特定的操作系统,无需修改操作系统的内核,也无需维护任何硬件设备驱动,任何操作系统都能够不加修改地直接运行于按本发明实现的虚拟机监控器之上。
附图说明
图1为背景技术Xen等虚拟机的系统结构图;
图2为本发明第一步构建的虚拟机系统结构图;
图3为本发明第5.2步的中断处理时序图;
图4为本发明第5.3步的IPI消息发送与接收逻辑图。
具体实施方式
图1是背景技术Xen等虚拟机的系统结构图,从下至上由三层组成:最底层是X86计算机硬件与中断层,包括LAPIC、IOAPIC、CPU、内存和除此之外的硬件设备,如网卡、磁盘等,X86计算机的物理中断包括设备中断和NMI;中间层是虚拟机监控器;最上层是同时运行的多个虚拟化操作系统,包括dom0操作系统和一个或多个domU操作系统。虚拟机监控器由物理中断处理模块和虚拟中断处理模块、CPU指令虚拟化模块、MMU虚拟化模块组成。物理中断处理模块由LAPIC初始化子模块、IOAPIC初始化子模块、CPU运行模式配置子模块、物理中断接收子模块、物理中断转发子模块、虚拟中断控制器VPIC子模块、IPI发送与接收子模块组成。
物理中断接收子模块将接收到的设备中断和NMI传递给物理中断转发子模块,物理中断转发子模块将设备中断和NMI转发到dom0操作系统。LAPIC初始化子模块与IOAPIC初始化子模块分别初始化LAPIC和IOAPIC,VPIC子模块向dom0操作系统提供虚拟的可编程中断控制器VPIC,通过访问初始化后的LAPIC与IOAPIC实现dom0操作系统的对VPIC的请求和调用。IPI发送与接收子模块通过访问LAPIC向虚拟中断处理模块和MMU虚拟化模块提供处理器间中断服务。
虚拟中断处理模块将从dom0操作系统接收的虚拟中断转发到domU操作系统,CPU指 令虚拟化模块和MMU虚拟化模块则为dom0和domU操作系统分别提供CPU指令虚拟化和MMU虚拟化服务。
图2是本发明第一步构建的虚拟机系统结构图,整个虚拟机系统从下至上也被分成三个部分:最底层是X86计算机硬件与中断;中间层是虚拟机监控器;最上层是同时运行的多个虚拟化操作系统。虚拟机监控器由物理中断处理模块和虚拟中断处理模块、指令虚拟化模块、MMU虚拟化模块组成,其中后三个模块与背景技术中的虚拟机监控器系统中对应的模块完全相同,唯一不同的是物理中断处理模块。物理中断处理模块由LAPIC初始化子模块、CPU运行模式配置子模块、dom0 LAPIC初始化监视子模块、dom0设备中断接收辅助子模块、IPI发送与接收子模块、NMI接收和处理子模块这六个子模块组成。
LAPIC初始化子模块对LAPIC进行部分初始化:先判断系统中是否存在LAPIC,如果存在则映射LAPIC的寄存器,即将从0xFEE00000开始的4KB物理内存映射到CPU可访问的虚拟地址空间中,最后通过访问LAPIC的寄存器激活LAPIC。
dom0 LAPIC初始化监视子模块在CPU指令虚拟化模块的辅助下,截获dom0操作系统读写MSR的指令rdmsr/wrmsr,判断是否访问编号为0x1B的MSR,如果是则判断LAPIC寄存器的内存映射地址是否被改变:如果改变则将新地址记录下来,并调用LAPIC初始化子模块,以重新映射LAPIC的寄存器;如果不改变则无需任何操作。
CPU运行模式配置子模块对CPU的运行模式进行配置,使得dom0操作系统运行在CPU的虚拟化模式,且使得到达的物理中断不通知物理中断处理模块而直接被dom0操作系统接收和处理。配置domU操作系统也运行于CPU的虚拟化模式,当设备中断到达时,CPU将退出虚拟化模式,并通知dom0设备中断接收辅助子模块。
当CPU正在运行domU操作系统时,如果物理中断到达,则根据CPU运行模式配置子模块的配置,CPU立即中断domU操作系统的运行,并退出虚拟化模式,CPU运行模式配置子模块调用dom0设备中断接收辅助子模块进行处理。dom0设备中断接收辅助子模块需要做的唯一工作是让CPU转入运行dom0操作系统,当dom0操作系统开始运行时,物理中断将立即触发,从而被dom0操作系统接收和处理。
NMI接收和处理子模块首先为接收不可屏蔽中断NMI准备软件环境,包括初始化CPU的中断描述符表IDT,以及准备NMI的中断处理程序,并将该NMI的中断处理程序的地址填入到IDT的第2个表项中。当接收到NMI后,先判断该NMI是否是由IPI发送与接收子模块导致的,如果是,则通知IPI发送与接收子模块接收IPI消息;否则,直接将NMI转发给dom0操作系统。
当虚拟机监控器的其它模块(即虚拟中断处理模块、指令虚拟化模块、MMU虚拟化模块)请求IPI发送与接收子模块发送IPI消息时,IPI发送与接收子模块访问LAPIC实现真正的IPI消息发送。
图3是本发明第5.2步的物理中断处理时序图,分为三种情况,分别用子图3(A)、 3(B)、3(C)描述,图中的横向虚线箭头表示时间,实心小长方块指出了当前CPU正在运行什么。CPU在某一时刻只能运行dom0操作系统(以下简称“dom0 OS”)、domU操作系统(以下简称“domU OS”)或虚拟机监控器(以下简称“VMM”)中的一种,空心和实心的三角形分别表示设备中断的到达和触发。
子图3(A)描述了当设备中断到达时domU OS正在运行的情况,即第5.2步的第一种情况:通过配置CPU的运行模式,使得到达的中断并不被立即触发,CPU立即停止运行domU OS,并通知CPU运行模式配置子模块,CPU运行模式配置子模块调用dom0设备中断接收辅助子模块,dom0设备中断接收辅助子模块强制CPU立即运行dom0 OS,同时触发该设备中断,从而该设备中断被dom0操作系统处理。中断处理完后,CPU返回到VMM的dom0设备中断接收辅助子模块,该子模块再调度CPU继续运行被中断的domU OS。
子图3(B)描述了当设备中断到达时dom0操作系统正在运行的情况,即第5.2步的第二种情况:此时设备中断将直接在dom0 OS中被触发,从而转入到dom0 OS正常的中断处理流程,当中断处理完毕后,dom0操作系统直接恢复运行。在这种情况下,物理中断处理模块无需介入中断处理过程,从而提高了中断处理效率。
子图3(C)描述了当设备中断到达时虚拟机监控器VMM正在运行的情况,即第5.2步的第三种情况:按照CPU运行模式配置子模块的配置,CPU在运行VMM时其中断允许标志被屏蔽,因此到达的设备中断无法被触发。等到CPU执行完VMM中的代码转而执行dom0 OS或domU OS的代码后,中断才被触发和处理。如果CPU返回到domU OS中执行,则中断处理逻辑如子图3(A)所示。如果CPU返回到dom0 OS中执行,则中断处理逻辑如子图3(B)所示。
图4是本发明第5.4步的IPI消息发送与接收流程图。子图4(A)描述的是发送流程,对应5.4.1步的内容。为保证对目标CPU的消息队列操作的原子性,先获得目标CPU的消息队列锁,向目标CPU的消息队列添加要发送的IPI消息,然后释放目标CPU的消息队列锁,最后向SMP系统中除自身外的所有其它CPU发送IPI消息,该IPI消息是一个不可屏蔽中断NMI,提醒所有其它CPU处理新的IPI消息。
子图4(B)描述了IPI消息的接收流程,对应5.4.2步的内容。当CPU接收到来自其它CPU的IPI中断后,先获得本CPU的消息列队锁,判断本CPU的IPI消息队列是否为空,如果不为空就从消息队列中取出一个IPI消息,在释放了消息队列锁后执行IPI消息中指定的IPI消息处理函数,实现IPI通信。如此反复,直到所有的IPI消息都被处理完毕(即IPI消息队列为空),IPI消息接收处理结束。
Claims (2)
1.一种X86计算机虚拟化的物理中断处理方法,首先构建虚拟机系统,虚拟机系统由三部分组成:最底层是X86计算机硬件与中断;中间层是虚拟机监控器;最上层是同时运行的多个虚拟化操作系统,包括一个dom0即0号域操作系统,一个或多个domU即用户域操作系统,虚拟机监控器由物理中断处理模块和虚拟中断处理模块、中央处理单元CPU指令虚拟化模块、内存管理单元MMU虚拟化模块组成;其特征在于所述物理中断处理模块由本地高级可编程中断控制器LAPIC初始化子模块、CPU运行模式配置子模块、dom0LAPIC初始化监视子模块、dom0设备中断接收辅助子模块、处理器间中断IPI发送与接收子模块、不可屏蔽中断NMI接收和处理子模块这六个子模块组成;CPU运行模式配置子模块配置CPU的运行模式并接收从CPU发来的设备中断信息,再调用dom0设备中断接收辅助子模块,在dom0设备中断接收辅助子模块的控制下,设备中断直接传递给dom0操作系统;所有的NMI都传递给NMI接收和处理子模块,该子模块接收NMI后进行判断,如果NMI是IPI消息导致的,则将该NMI传送给IPI发送与接收子模块,否则将NMI转发至dom0操作系统;LAPIC初始化子模块在X86计算机系统加电引导时对LAPIC进行部分初始化,在dom0LAPIC初始化监视子模块的监控下,dom0操作系统直接访问经初始化的LAPIC,当CPU指令虚拟化模块检测到dom0对LAPIC重新初始化时,CPU指令虚拟化模块通知dom0LAPIC初始化监视子模块,由dom0LAPIC初始化监视子模块调用LAPIC初始化子模块对LAPIC进行重配置;IPI发送与接收子模块直接访问LAPIC进行IPI消息的发送与接收;构建好虚拟机系统后,由虚拟机系统对物理中断进行处理,方法是:
第一步,NMI接收和处理子模块构建接收和处理NMI所需要的软件环境:构建NMI中断的中断处理函数,将该中断处理函数的地址放入中断描述符表即IDT表的第2项中;
第二步,IPI发送与接收子模块按如下方法初始化IPI发送与接收所需的软件环境:
2.1选用不可屏蔽中断NMI的中断号2作为IPI的中断号;
2.2为每个CPU都设置一个先进先出的队列结构作为IPI消息队列,同时为每个IPI消息队列设置一个消息队列锁;
第三步,LAPIC初始化子模块对本地高级可编程中断控制器LAPIC进行基本初始化,方法如下:
3.1探测X86系统中是否配备了LAPIC,如果系统中不存在LAPIC,则转第四步,否则执行3.2;
3.2映射LAPIC的寄存器,为每个CPU的LAPIC的所有寄存器的物理地址区间映射相应的虚拟地址;
3.3启用LAPIC,即向LAPIC的寄存器中写入数据;
第四步,CPU运行模式配置子模块按如下方法分别配置dom0操作系统、domU操作系统和虚拟机监控器的运行模式:
4.1对dom0操作系统,按如下方法配置CPU的运行模式:
●配置dom0操作系统的运行模式为CPU的虚拟化模式;
●配置dom0操作系统的中断触发模式为直接触发和处理模式,即当dom0操作系统运行时,到达的物理中断不通知物理中断处理模块,而直接在dom0操作系统中被触发和处理;
●当dom0操作系统运行时,打开CPU的中断允许标志;
4.2对domU操作系统,按如下方法配置CPU的运行模式:
●配置domU操作系统的运行模式为CPU的虚拟化模式;
●配置domU操作系统的中断触发模式为退出运行并通知物理中断处理模块这种模式,即当domU操作系统运行时,到达的物理中断将中断domU操作系统的运行,并马上通知物理中断处理模块;
●当这些操作系统运行时,打开CPU的中断允许标志;
4.3对虚拟机监控器,按如下方法配置CPU的运行模式:
●配置虚拟机监控器的运行模式为CPU的普通模式;
●在虚拟机监控器运行期间,始终关闭CPU的中断允许标志;
第五步,当dom0LAPIC初始化监视子模块监测到dom0操作系统对LAPIC进行初始化操作时,转5.1;当dom0设备中断接收辅助子模块监测到设备中断到达时,转5.2;当NMI接收和处理子模块监测到不可屏蔽中断NMI到达时,转5.3;当IPI发送与接收子模块检测到虚拟机的其它模块或上层操作系统请求发送和接收处理器间中断IPI时,转5.4:
5.1CPU指令虚拟化模块截获dom0操作系统读写型号相关寄存器MSR的指令rdmsr/wrmsr,并将结果交给dom0LAPIC初始化监视子模块,dom0LAPIC初始化监视子模块判断dom0操作系统是否访问编号为0x1B的MSR,如果是则判断LAPIC寄存器的内存映射地址是否被改变,如果改变则将新地址记录下来,并按3.2所示的方法重新映射LAPIC的寄存器;如果不改变则转第五步,进入下一次循环;
5.2dom0设备中断接收辅助子模块分下列三种情况辅助dom0操作系统接收设备中断:
●当设备中断到达时,如果CPU正在运行domU操作系统,则CPU中断domU操作系统的运行,并将设备中断到达情况通知dom0设备中断接收辅助子模块,dom0设备中断接收辅助子模块马上请求虚拟机监控器转入运行dom0操作系统,等到dom0操作系统开始运行时,设备中断将立即被触发并被dom0操作系统接收;
●当设备中断到达时,如果CPU正在运行dom0操作系统,设备中断直接在dom0操作系统中被触发;
●当设备中断到达时,如果CPU正在运行虚拟机监控器自身,到达的设备中断不会被触发;
上述处理完毕后,转第五步进入下一次循环;
5.3NMI接收和处理子模块接收和处理不可屏蔽中断NMI,方法是判断IPI发送与接收子模块是否正在发送IPI消息,如果正在发送IPI消息,则由IPI发送与接收子模块接收和处理IPI消息;否则,将NMI转发到dom0操作系统,dom0操作系统异步处理该NMI;上述两种情况处理完成后,都转第五步进入下一次循环;
5.4如果IPI发送与接收子模块被请求发送IPI,转5.4.1;如果NMI接收和处理子模块接收到NMI后调用IPI发送与接收子模块,转5.4.2:
5.4.1按下述方法向一个或多个目标CPU发送一个IPI消息:
5.4.1.1获得目标CPU的消息队列锁,把IPI消息加入到该IPI消息的目标CPU的IPI消息队列中,再释放目标CPU的消息队列锁;
5.4.1.2通过访问LAPIC的寄存器,向对称多处理SMP系统中的其它全部CPU发送该IPI消息,发送参数中设置的IPI中断号为NMI的中断号2;
5.4.1.3转第五步进入下一次循环;
5.4.2按下述方法接收和处理IPI消息:
5.4.2.1先获得本CPU的消息队列锁,再判断消息队列是否为空,如果为空则释放本CPU的消息队列锁,转5.4.2.3;如果消息队列不为空,执行5.4.2.2;
5.4.2.2从本CPU的IPI消息队列中取出一个IPI消息,释放本CPU的消息队列锁,调用IPI消息中包含的IPI接收和处理函数实现IPI通信,转5.4.2.1。
5.4.2.3转第五步进入下一次循环。
2.如权利要求1所述的X86计算机虚拟化的物理中断处理方法,其特征在于探测X86系统中是否配备LAPIC的方法是设置CPU的EAX寄存器为1,再执行CPUID这条CPU指令,最后检查EDX寄存器的第9位是否为1,如果为1则LAPIC存在。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100438299A CN101620547B (zh) | 2009-07-03 | 2009-07-03 | X86计算机虚拟化的物理中断处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100438299A CN101620547B (zh) | 2009-07-03 | 2009-07-03 | X86计算机虚拟化的物理中断处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101620547A CN101620547A (zh) | 2010-01-06 |
CN101620547B true CN101620547B (zh) | 2012-05-30 |
Family
ID=41513795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100438299A Expired - Fee Related CN101620547B (zh) | 2009-07-03 | 2009-07-03 | X86计算机虚拟化的物理中断处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101620547B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120167082A1 (en) * | 2010-12-23 | 2012-06-28 | Sanjay Kumar | Direct sharing of smart devices through virtualization |
CN102609324B (zh) * | 2012-01-09 | 2015-11-25 | 华为技术有限公司 | 一种虚拟机死锁后的恢复方法、装置及系统 |
US9594703B2 (en) * | 2012-03-29 | 2017-03-14 | Intel Corporation | Architecture and method for managing interrupts in a virtualized environment |
CN102799480B (zh) * | 2012-06-21 | 2015-06-17 | 华为技术有限公司 | 虚拟化系统中关闭中断的方法和装置 |
CN102799465B (zh) * | 2012-06-30 | 2015-05-27 | 华为技术有限公司 | 分布式虚拟化系统的虚拟中断管理方法及装置 |
US8959482B2 (en) * | 2012-08-21 | 2015-02-17 | International Business Machines Corporation | Enabling multi-tenancy for a commerce server |
CN103294958B (zh) * | 2013-05-21 | 2015-07-22 | 中国人民解放军国防科学技术大学 | 面向类Linux系统的内核级虚拟聚合并行加密方法 |
CN104714843B (zh) * | 2013-12-17 | 2018-06-15 | 华为技术有限公司 | 多内核操作系统实例支持多处理器的方法及装置 |
US9792448B2 (en) * | 2014-02-28 | 2017-10-17 | Advanced Micro Devices, Inc. | Cryptographic protection of information in a processing system |
CN108196934B (zh) * | 2016-12-08 | 2022-04-26 | 阿里巴巴集团控股有限公司 | 一种定时器的定时设置方法、装置和虚拟化设备 |
CN110162328B (zh) * | 2019-05-28 | 2023-11-03 | 东信和平科技股份有限公司 | 一种智能卡操作系统升级方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1607503A (zh) * | 2003-10-14 | 2005-04-20 | 微软公司 | 在虚拟机器中使用合成指令的系统和方法 |
CN1716203A (zh) * | 2004-06-30 | 2006-01-04 | 微软公司 | 用于在64位x86处理器上运行传统32位x86虚拟机的系统和方法 |
-
2009
- 2009-07-03 CN CN2009100438299A patent/CN101620547B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1607503A (zh) * | 2003-10-14 | 2005-04-20 | 微软公司 | 在虚拟机器中使用合成指令的系统和方法 |
CN1716203A (zh) * | 2004-06-30 | 2006-01-04 | 微软公司 | 用于在64位x86处理器上运行传统32位x86虚拟机的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101620547A (zh) | 2010-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101620547B (zh) | X86计算机虚拟化的物理中断处理方法 | |
CN101557420B (zh) | 虚拟机监控器高效网络通信的实现方法 | |
CN101271401B (zh) | 一种具备单一系统映像的服务器机群系统 | |
US9336165B2 (en) | Interrupt coalescing for outstanding input/output completions | |
CN101751284B (zh) | 一种分布式虚拟机监控器的i/o资源调度方法 | |
US8402462B2 (en) | Detection and management of dynamic migration of virtual environments | |
US7478180B1 (en) | Virtualizing a communications channel in which blocks of data are divided into multiple sub-blocks for conveyance | |
CN102053873B (zh) | 一种缓存感知的多核处理器虚拟机故障隔离保证方法 | |
CN102591715B (zh) | 一种使用多队列技术的虚拟机网络性能优化的实现方法 | |
CN101398768A (zh) | 一种分布式虚拟机监视器系统的构建方法 | |
CN102713847A (zh) | 处理器内核的监管程序隔离 | |
CN102141928A (zh) | 虚拟环境下的数据处理方法、系统以及系统的部署方法 | |
CN104321749A (zh) | 用于管理虚拟化环境中的中断的体系结构和方法 | |
KR20080014083A (ko) | 가상 머신 모니터와 acpi추종 게스트 운영 시스템 간의양방향 통신을 위한 방법, 가상 머신 호스트 및 머신액세스가능한 매체를 포함한 제품 | |
Nussbaum et al. | Linux-based virtualization for HPC clusters | |
CN102103517A (zh) | 高效嵌套虚拟化 | |
US8793688B1 (en) | Systems and methods for double hulled virtualization operations | |
CN103744716A (zh) | 一种基于当前vcpu调度状态的动态中断均衡映射方法 | |
EP3265911A1 (en) | Methods and apparatus to select virtualization environments during deployment | |
CN104598294A (zh) | 用于移动设备的高效安全的虚拟化方法及其设备 | |
EP3602290B1 (en) | Cooperative virtual processor scheduling | |
US20200192692A1 (en) | Containerized workload scheduling | |
US20200341789A1 (en) | Containerized workload scheduling | |
JP2017518589A (ja) | 仮想化プラットホームによって割込みを処理する方法および関連デバイス | |
WO2018040845A1 (zh) | 一种计算资源调度方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120530 Termination date: 20150703 |
|
EXPY | Termination of patent right or utility model |