CN108073451B - 一种多核cpu上异构操作系统间中断处理方法及装置 - Google Patents
一种多核cpu上异构操作系统间中断处理方法及装置 Download PDFInfo
- Publication number
- CN108073451B CN108073451B CN201711384396.4A CN201711384396A CN108073451B CN 108073451 B CN108073451 B CN 108073451B CN 201711384396 A CN201711384396 A CN 201711384396A CN 108073451 B CN108073451 B CN 108073451B
- Authority
- CN
- China
- Prior art keywords
- apic
- rte
- virtual
- ept
- operating system
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及虚拟化和云计算技术领域,尤其涉及一种多核CPU上异构操作系统间中断处理方法及装置,在VMM初始化阶段,客户操作系统的EPT中不映射I/O APIC的物理地址,通过客户操作系统初始化I/O APIC时触发EPT异常,进入VMM的异常处理程序,并通过虚拟APIC的写接口,修改I/O APIC的RTE,实现对RTE的修改,进而外部设备产生中断时,根据修改后的RTE,I/O APIC可以将中断消息直接投递给相应的客户操作系统的CPU,而不通过VMM进行管理投递,减少了每次中断处理过程带来的多次VM‑exit操作,减少中断处理时延,从而可以提高实时操作系统的实时性,提高I/O设备的访问效率。
Description
技术领域
本发明涉及虚拟化和云计算技术领域,尤其涉及一种多核CPU上异构操作系统间中断处理方法及装置。
背景技术
目前针对多核中央处理器(Central Processing Unit,CPU),通常是采用多台虚拟机,对重要工作内容进行安全分区,部分虚拟化分区内运行实时操作系统,其上运行实时应用程序,部分虚拟机分区内运行非实时操作系统,其上运行非实时应用程序,其体系结构参阅图1所示。其中,中断延时是影响实时操作系统实时性的一个重要因素,因此,在运行实时操作系统和非实时操作系统的工业控制虚拟化异构操作系统环境中,高效的中断资源处理就非常重要。
现有技术中,异构操作系统间的中断处理方法为,通过虚拟机管理器(VirtualMachine Monitor,VMM)虚拟一套独立于实际硬件的虚拟硬件环境,例如,包括虚拟网卡、虚拟硬盘等,供虚拟机(Virtual Machine,VM)使用,利用VT-x技术提供中断退出和中断注入两种中断事件机制,所有的外部设备中断由VMM统一管理,当产生外部中断时VMM截获并导致运行该虚拟机的CPU产生虚拟机退出(VM-exit)操作。VMM通过修改虚拟机维护的虚拟中断控制寄存器的值在下次虚拟机进入(VM-entry)时将虚拟中断注入到该虚拟机中。当虚拟机处理完中断后又通知虚拟中断控制器中断结束(End Of Interrupt)信息,该特权操作会引起第二次VM-exit操作。
可知,现有技术中的中断处理方法,发生中断时,由VMM统一管理,每次发生中断时,都会产生两次VM-exit操作,这样,由于每次VM-exit涉及的控制流的转移都会带来巨大的上下文切换开销,从而造成中断处理效率的下降和延迟的增加。因此,也就导致从外部设备产生中断到最终的中断处理函数被触发需要经过很长一段时间,增加了中断响应时间,影响了实时操作系统的实时性。
发明内容
本发明实施例提供一种多核CPU上异构操作系统间中断处理方法及装置,以解决现有技术中的中断处理时延较长,降低了实时操作系统的实时性的问题。
本发明实施例提供的具体技术方案如下:
一种多核中央处理器CPU上异构操作系统间中断处理方法,所述方法包括:
根据输入/输出高级可编程中断控制器I/O APIC的物理地址,分别为每个虚拟机建立相应的扩展页表EPT,并通过虚拟机中的客户操作系统访问I/O APIC,触发虚拟机管理器VMM进入EPT异常处理程序,其中,所述EPT中虚拟机中的客户操作系统的逻辑地址不映射I/O APIC的物理地址;
通过所述EPT异常处理程序,查找所述发生EPT异常的地址对应的虚拟高级可编程中断控制器APIC,并通过所述对应的虚拟APIC修改I/O APIC和/或虚拟APIC的重定向表条目RTE;
若检测到外部设备中断,则基于修改后的RTE,生成中断消息,并通过所述I/OAPIC将所述中断消息发送给对应的客户操作系统的CPU。
较佳的,进一步包括:
通过所述EPT异常处理程序,至少获取发生EPT异常的地址,异常操作的I/O APIC表项索引和数据;其中,所述数据表示需要写入RTE的数据。
较佳的,通过所述EPT异常处理程序,查找所述发生EPT异常的地址对应的虚拟高级可编程中断控制器APIC,并通过所述对应的虚拟APIC修改I/O APIC和/或虚拟APIC的重定向表条目RTE,具体包括:
根据所述发生EPT异常的地址,查找所述发生EPT异常的地址对应的虚拟APIC,并调用所述对应的虚拟APIC的写接口;
判断所述异常操作的I/O APIC表项索引对应的RTE是否分配给所述虚拟机,若是,则通过所述对应的虚拟APIC的写接口,根据所述数据,修改I/O APIC和虚拟APIC的所述对应的RTE,若否,则通过所述对应的虚拟APIC的写接口,根据所述数据,修改虚拟APIC的所述对应的RTE。
较佳的,根据所述数据,修改I/O APIC的所述对应的RTE,具体包括:
若所述对应的RTE为多个PCI设备共享,则修改RTE中的中断投递模式为固定投递模式,目的域模式为逻辑模式,并在目的域中增加所述虚拟机中的客户操作系统的APICID。
较佳的,通过所述I/O APIC将所述中断消息发送给对应的客户操作系统的CPU,具体包括:
若所述外部设备为非PCI设备,并所述外部设备独占I/O APIC的一个RTE,则通过I/O APIC直接将所述中断消息发送给对应的客户操作系统的CPU;
若所述外部设备为PCI设备,并所述外部设备与其它外部设备共享I/O APIC的一个RTE,则通过I/O APIC将所述中断消息广播给对应的客户操作系统的CPU。
一种多核中央处理器CPU上异构操作系统间中断处理装置,包括:
异常触发单元,用于根据输入/输出高级可编程中断控制器I/O APIC的物理地址,分别为每个虚拟机建立相应的扩展页表EPT,并通过虚拟机中的客户操作系统访问I/OAPIC,触发虚拟机管理器VMM进入EPT异常处理程序,其中,所述EPT中虚拟机中的客户操作系统的逻辑地址不映射I/O APIC的物理地址;
修改单元,用于通过所述EPT异常处理程序,查找所述发生EPT异常的地址对应的虚拟高级可编程中断控制器APIC,并通过所述对应的虚拟APIC修改I/O APIC和/或虚拟APIC的重定向表条目RTE;
中断处理单元,用于若检测到外部设备中断,则基于修改后的RTE,生成中断消息,并通过所述I/O APIC将所述中断消息发送给对应的客户操作系统的CPU。
较佳的,异常触发单元进一步用于:
通过所述EPT异常处理程序,至少获取发生EPT异常的地址,异常操作的I/O APIC表项索引和数据;其中,所述数据表示需要写入RTE的数据。
较佳的,通过所述EPT异常处理程序,查找所述发生EPT异常的地址对应的虚拟高级可编程中断控制器APIC,并通过所述对应的虚拟APIC修改I/O APIC和/或虚拟APIC的重定向表条目RTE,修改单元具体用于:
根据所述发生EPT异常的地址,查找所述发生EPT异常的地址对应的虚拟APIC,并调用所述对应的虚拟APIC的写接口;
判断所述异常操作的I/O APIC表项索引对应的RTE是否分配给所述虚拟机,若是,则通过所述对应的虚拟APIC的写接口,根据所述数据,修改I/O APIC和虚拟APIC的所述对应的RTE,若否,则通过所述对应的虚拟APIC的写接口,根据所述数据,修改虚拟APIC的所述对应的RTE。
较佳的,根据所述数据,修改I/O APIC的所述对应的RTE,修改单元具体用于:
若所述对应的RTE为多个PCI设备共享,则修改RTE中的中断投递模式为固定投递模式,目的域模式为逻辑模式,并在目的域中增加所述虚拟机中的客户操作系统的APICID。
较佳的,通过所述I/O APIC将所述中断消息发送给对应的客户操作系统的CPU,中断处理单元具体用于:
若所述外部设备为非PCI设备,并所述外部设备独占I/O APIC的一个RTE,则通过I/O APIC直接将所述中断消息发送给对应的客户操作系统的CPU;
若所述外部设备为PCI设备,并所述外部设备与其它外部设备共享I/O APIC的一个RTE,则通过I/O APIC将所述中断消息广播给对应的客户操作系统的CPU。
一种计算机装置,所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如上述任一种多核CPU上异构操作系统间中断处理方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一种多核CPU上异构操作系统间中断处理方法的步骤。
本发明实施例中,根据I/O APIC的物理地址,分别为每个虚拟机建立相应的EPT,并通过虚拟机中的客户操作系统访问I/O APIC,触发VMM进入EPT异常处理程序,其中,所述EPT中虚拟机中的客户操作系统的逻辑地址不映射I/O APIC的物理地址;通过所述EPT异常处理程序,查找所述发生EPT异常的地址对应的虚拟APIC,并通过所述对应的虚拟APIC修改I/O APIC和/或虚拟APIC的RTE;若检测到外部设备中断,则基于修改后的RTE,生成中断消息,并通过所述I/O APIC将所述中断消息发送给对应的客户操作系统的CPU,这样,利用EPT机制,触发EPT异常,进入VMM的异常处理程序,通过虚拟APIC,修改I/O APIC的RTE,实现监控客户操作系统对I/O APIC的RTE的读写的目的,并可以实现对客户操作系统对应的RTE的修改,进而外部设备产生中断时,根据修改后的RTE,I/O APIC可以将中断消息直接投递给相应的客户操作系统的CPU,而不通过VMM进行管理投递,减少了现有技术中每次中断处理过程带来的多次VM-exit操作,减少了从中断产生到中断处理函数被调用之间的时延,从而可以提高实时操作系统的实时性,并提高I/O设备的访问效率。
附图说明
图1为现有技术中虚拟多核CPU运行体系结构示意图;
图2为本发明实施例中多核CPU中断体系结构示意图;
图3为本发明实施例中多核CPU上异构操作系统间中断处理方法概述流程图;
图4为本发明实施例中多核CPU上异构操作系统间中断处理方法详细流程图;
图5为本发明实施例中多核CPU上异构操作系统间中断处理方法的流程框图;
图6为本发明实施例中多核CPU上异构操作系统间中断处理装置结构示意图;
图7为本发明实施例中一种计算机装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中,主要针对基于虚拟化技术的多核CPU上异构操作系统的中断处理,为便于理解,下面先对多核CPU中断体系进行介绍,参阅图2所示,为多核CPU中断体系结构示意图。
在x86平台的对称多处理器(Symmetrical Multi-Processing,SMP)架构中,外部设备的中断线连接到输入/输出高级可编程中断控制器(Input/Output AdvancedProgrammable Interrupt Controller,I/O APIC)上,并且每个CPU都有一个本地高级可编程中断控制器(Local Advanced Programmable Interrupt Controller,Local APIC),所有的Local APIC都连接到I/O APIC,这样,多个Local APIC和I/O APIC能够作为一个整体通过APIC总线互相操作,形成一个多APIC的系统。
通常I/O APIC上有24个中断线,即24个中断引脚,每一个中断引脚都对应一个重定向表条目(Redirection Table Entry,RTE),RTE中包含中断屏蔽码、触发方式、中断管脚极性、中断投递模式、传送状态、目的域模式、目的域和中断向量。外部设备产生中断时,I/OAPIC根据内部的RTE格式化成中断消息,并将该中断消息发送给目标CPU的Local APIC,再由Local APIC通知CPU进行处理。
但是,在实际硬件环境中通常只有一个I/O APIC,多个客户操作系统同时操作I/OAPIC的重定向表条目,会导致真实I/O APIC数据的混乱。所以一般由VMM对中断进行管理投递,这样会产生多次VM-exit操作,对于实时操作系统,降低了实时操作系统的实时性,因此,本发明实施例中,主要为了提高实时操作系统的实时性,VMM通过截取客户操作系统对I/O APIC的重定向表条目的操作,通过VMM来强制修改RTE,来达到将中断消息直接投递给实时操作系统的目的。
基于上述实施例,参阅图3所示,本发明实施例中,多核CPU上异构操作系统间中断处理方法的具体流程如下:
步骤300:根据I/O APIC的物理地址,分别为每个虚拟机建立相应的EPT,并通过虚拟机中的客户操作系统访问I/O APIC,触发VMM进入EPT异常处理程序,其中,所述EPT中虚拟机中的客户操作系统的逻辑地址不映射I/O APIC的物理地址。
本发明实施例中,在初始化过程中,通过VMM初始化虚拟高级可编程中断控制器(Advanced Programmable Interrupt Controller,APIC),通过虚拟机初始化I/O APIC,实现在初始化过程中,强制修改I/O APIC的RTE,进而在之后检测到外部设备发生中断时,根据修改后的RTE,可以通过真实的I/O APIC将中断消息直接投递给实时操作系统。
执行步骤300时,具体包括:
首先,根据I/O APIC的物理地址,分别为每个虚拟机建立相应的扩展页表(extended page-table,EPT)。
其中,所述EPT中虚拟机中的客户操作系统的逻辑地址不映射I/O APIC的物理地址。
本发明实施例中,利用EPT机制,该EPT机制提供了客户操作系统(guestoperating syste,GOS)物理地址空间的虚拟化,通过EPT机制实现了GOS物理地址空间的隔离,当EPT使能后,GOS使用的地址并不是真实的物理地址,而需要通过EPT转换后才能访问真实的物理地址。因此,可以根据I/O APIC的物理地址,分别为每一个虚拟机建立相应的EPT,使得EPT中不映射I/O APIC的物理地址,目的是为了在GOS初始化I/O APIC时,能够触发EPT异常处理程序。
然后,通过虚拟机中的客户操作系统访问I/O APIC,触发VMM进入EPT异常处理程序。
进一步地,还包括:通过所述EPT异常处理程序,至少获取发生EPT异常的地址,异常操作的I/O APIC表项索引和数据;其中,所述数据表示需要写入RTE的数据。
具体为:获取发生EPT异常的地址,并调用相应的异常指令模拟函数,根据所述发生EPT异常的地址,至少获取异常操作的I/O API表项索引和数据。
这样,发生EPT异常时,通过调用异常模式函数,对发生的EPT异常的异常指令进行解析,进而获取异常操作的I/O APIC表项索引和数据,还可以获取指令码等。
进一步地,触发VMM进入EPT异常处理程序时,还包括:触发运行所述虚拟机的CPU产生VM-exit操作。
本发明实施例中,通过虚拟机中的客户操作系统访问I/O APIC时,由于EPT中没有映射I/O APIC的物理地址,因此会产生EPT异常,产生EPT异常后,会导致运行该虚拟机的CPU产生VM-exit操作,进入VMM的EPT异常处理程序。
进一步地,执行步骤300之前还包括:
通过VMM初始化虚拟APIC,并将所述虚拟APIC的读写接口地址注册到管理总线。
步骤310:通过所述EPT异常处理程序,查找所述发生EPT异常的地址对应的虚拟APIC,并通过所述对应的虚拟APIC修改I/O APIC和/或虚拟APIC的RTE。
执行步骤310时,具体包括:
首先,通过所述EPT异常处理程序,查找所述发生EPT异常的地址对应的虚拟APIC。
具体为:根据所述发生EPT异常的地址,查找所述发生EPT异常的地址对应的虚拟APIC,并调用所述对应的虚拟APIC的写接口。
本发明实施例中,可以根据该发生EPT异常的地址,从管理总线,例如I/O BUS总线中查找对应的虚拟APIC,进而调用虚拟APIC的写接口,实现对I/O APIC的RTE的写操作。
然后,通过所述对应的虚拟APIC修改I/O APIC和/或虚拟APIC的RTE。
具体为:判断所述异常操作的I/O APIC表项索引对应的RTE是否分配给所述虚拟机,若是,则通过所述对应的虚拟APIC的写接口,根据所述数据,修改I/O APIC和虚拟APIC的所述对应的RTE,若否,则通过所述对应的虚拟APIC的写接口,根据所述数据,修改虚拟APIC的所述对应的RTE。
本发明实施例中,判断发生异常操作的I/O APIC表项索引对应的RTE是否分配给该虚拟机,根据判断结果,执行不同的操作,具体可以分为以下两种情况:
第一种情况:若是,则通过所述对应的虚拟APIC的写接口,根据所述数据,修改I/OAPIC和虚拟APIC的所述对应的RTE。
其中,根据所述数据,修改I/O APIC的所述对应的RTE,具体包括:
若所述对应的RTE为多个PCI设备共享,则修改RTE中的中断投递模式为固定投递模式,目的域模式为逻辑模式,并在目的域中增加所述虚拟机中的客户操作系统的APICID。
这样,由于非PCI设备是独占一个I/O APIC中断线,因此独占一个RTE,因此这时将获取到的数据直接写入到RTE,使得相应的客户操作系统可以独占使用非PCI设备的I/OAPIC的中断线。但对于PCI设备,可能存在多个PCI设备使用同一个I/O APIC中断线,因此,需要修改数据中的中断投递模式、目的域模式,并在目的域中增加相应的实时客户操作系统的APIC ID,这样,由于实时操作系统容易获得其源码,并且实时操作系统的实时性要求较高,因此,本发明实施例中,可以主要针对是实时操作系统情况,修改RTE,使得实时操作系统的PCI设备中断时,可以通过I/O APIC直接将中断消息投递给相应的实时操作系统的CPU。
第二种情况:若否,则通过所述对应的虚拟APIC的写接口,根据所述数据,修改虚拟APIC的所述对应的RTE。
本发明实施例中,在虚拟APIC的写接口中判断I/O APIC表项索引对应的RTE是否分配给该虚拟机,即发生VM-exit操作的虚拟机,若是,则需要同时在I/O APIC和虚拟APIC写入数据,即修改对应的RTE,这样,若之后发生外部设备中断时,真实的I/O APIC可以基于该修改后的RTE,直接将中断消息发送给相应的客户操作系统的CPU,若否,即I/O APIC表项索引对应的RTE不是分配给该虚拟机,则只需要写入虚拟APIC中进行管理,而不写入真实的I/O APIC,这样,只是实现了一个虚拟的映射,发生外部设备中断时,由于真实的I/O APIC的RTE中并没有分配给该虚拟机,因此,也就不会将中断消息发送给该虚拟机,提高中断处理效率。
步骤320:若检测到外部设备中断,则基于修改后的RTE,生成中断消息,并通过所述I/O APIC将所述中断消息发送给对应的客户操作系统的CPU。
执行步骤320时,具体包括:
首先,若检测到外部设备中断,则基于修改后的RTE,生成中断消息。
然后,通过I/O APIC将所述中断消息发送给对应的客户操作系统的CPU。
具体地可以分为以下两种情况:
第一种情况:若所述外部设备为非PCI设备,并所述外部设备独占I/O APIC的一个RTE,则通过I/O APIC直接将所述中断消息发送给对应的客户操作系统的CPU。
第二种情况:若所述外部设备为PCI设备,并所述外部设备与其它外部设备共享I/O APIC的一个RTE,则通过I/O APIC将所述中断消息广播给对应的客户操作系统的CPU。
本发明实施例中,利用EPT机制,触发EPT异常,进入VMM的异常处理程序,并通过虚拟APIC的写接口,修改I/O APIC的RTE,实现监控客户操作系统对I/O APIC的RTE的读写的目的,并可以实现对客户操作系统对应的RTE的修改,进而外部设备产生中断时,根据修改后的RTE,I/O APIC可以将中断消息直接投递给相应的客户操作系统的CPU,而不通过VMM进行管理投递,减少了现有技术中每次中断处理过程带来的多次VM-exit操作,减少了从中断产生到中断处理函数被调用之间的时延,从而可以提高实时操作系统的实时性,并提高I/O设备的访问效率。
基于上述实施例,下面采用一个具体的应用场景对上述实施例作出进一步详细说明。具体参阅图4所示,本发明实施例中,多核CPU上异构操作系统间中断处理方法执行过程具体如下:
步骤400:VMM初始化虚拟APIC,并将该虚拟APIC对应的读写驱动接口注册到I/OBUS总线。
步骤401:设置每个虚拟机的EPT中的客户操作系统的逻辑地址不映射I/O APIC的物理地址。
例如I/O APIC的物理地址为0xFE000000-0xFE001000,在虚拟机的EPT中不映射该物理地址。
这样,是为了在虚拟机上的客户操作系统访问I/O APIC时,能够触发EPT异常,进入EPT异常处理程序,本发明实施例中,正是利用EPT机制达到监控客户操作系统对I/OAPIC的RTE读写的目的,进而修改对应的RTE。
步骤402:虚拟机中的客户操作系统初始化I/O APIC时产生EPT异常,并导致运行该虚拟机的CPU产生VM-exit操作,触发VMM进入EPT异常处理程序。
本发明实施例中,通过设置EPT,在每个客户操作系统初始化I/O APIC时访问该I/O APIC,由于没有映射到该I/O APIC的物理地址,因此,会触发EPT异常,进入EPT异常处理程序。
步骤403:通过EPT异常处理程序,获取发生EPT异常的地址,调用模拟函数模拟该异常指令的执行,模拟函数根据发生EPT异常的地址解析异常指令,获取指令码、异常操作的I/OAPIC表项索引及数据。
其中,所述数据表示需要写入EPT的数据。
步骤404:根据发生EPT异常的地址从I/O BUS总线中查找注册的虚拟APIC设备驱动,调用注册的I/O APIC的写接口。
步骤405:在虚拟APIC的写接口中判断I/O APIC表项索引对应的RTE是否分配给产生VM-exit操作的虚拟机,若分配给该虚拟机,则把数据写入真实的I/O APIC和虚拟APIC的数据结构中。
步骤406:若未分配给该虚拟机,则只写入虚拟APIC的数据结构中,而不写入真实的I/O APIC中。
这样,截取VMM的操作,使用客户操作系统来强制篡改RTE,最终使得外部设备发生中断后,可以通过I/O APIC直接将中断消息发送给客户操作系统的CPU,而不通过VMM,减少了VM-exit操作,提高中断处理效率。
步骤407:若RTE为多个PCI设备共享,则真实的I/O APIC的RTE只由非实时操作系统进行写操作,并修改其数据中的中断投递模式为固定投递模式,目的域模式为逻辑模式,并且目的域增加实时操作系统的APIC ID。
本发明实施例中,在初始化时,修改RTE,只在初始化时发生VM-exit操作,这样使得之后如果外部设备发生中断,只需根据修改后的RTE,由真实的I/O APIC直接将中断消息发送给相应的客户操作系统的CPU,不需要通过VMM,减少了虚拟机的VM-exit操作,进而提高了中断处理效率,降低了对实时操作系统的是实时性的影响。
基于上述实施例,下面采用一个具体的应用场景对上述实施例作出进一步详细说明。具体参阅图5所示,为多核CPU上异构操作系统间中断处理方法的流程框图,对本发明实施例中多核CPU上异构操作系统间中断处理方法进行说明。
1)通过实时操作系统和非实时操作系统初始化I/O APIC,产生EPT异常,并导致运行该虚拟机的CPU产生了VM-exit操作。
其中,非实时操作系统和实时操作系统运行在虚拟机中。
2)触发VMM进入EPT异常处理程序。
并且,通过EPT异常处理程序,至少获取发生EPT异常的地址,异常操作的I/O APIC表项索引和数据。
3)查找注册的虚拟APIC设备驱动,调用注册的I/O APIC的写接口,从而修改I/OAPIC的RTE。
4)当外部设备发生中断时,I/O APIC就可以根据修改后的RTE,将中断消息发送给对应的客户操作系统的CPU的Local APIC,再由Local APIC通知CPU进行处理,实现了将中断消息直接投递给实时操作系统。
基于上述实施例,参阅图6所示,本发明实施例中,多核CPU上异构操作系统间中断处理装置,具体包括:
异常触发单元60,用于根据输入/输出高级可编程中断控制器I/O APIC的物理地址,分别为每个虚拟机建立相应的扩展页表EPT,并通过虚拟机中的客户操作系统访问I/OAPIC,触发虚拟机管理器VMM进入EPT异常处理程序,其中,所述EPT中虚拟机中的客户操作系统的逻辑地址不映射I/O APIC的物理地址;
修改单元61,用于通过所述EPT异常处理程序,查找所述发生EPT异常的地址对应的虚拟高级可编程中断控制器APIC,并通过所述对应的虚拟APIC修改I/O APIC和/或虚拟APIC的重定向表条目RTE;
中断处理单元62,用于若检测到外部设备中断,则基于修改后的RTE,生成中断消息,并通过所述I/O APIC将所述中断消息发送给对应的客户操作系统的CPU。
较佳的,异常触发单元60进一步用于:
通过所述EPT异常处理程序,至少获取发生EPT异常的地址,异常操作的I/O APIC表项索引和数据;其中,所述数据表示需要写入RTE的数据。
较佳的,通过所述EPT异常处理程序,查找所述发生EPT异常的地址对应的虚拟高级可编程中断控制器APIC,并通过所述对应的虚拟APIC修改I/O APIC和/或虚拟APIC的重定向表条目RTE,修改单元61具体用于:
根据所述发生EPT异常的地址,查找所述发生EPT异常的地址对应的虚拟APIC,并调用所述对应的虚拟APIC的写接口;
判断所述异常操作的I/O APIC表项索引对应的RTE是否分配给所述虚拟机,若是,则通过所述对应的虚拟APIC的写接口,根据所述数据,修改I/O APIC和虚拟APIC的所述对应的RTE,若否,则通过所述对应的虚拟APIC的写接口,根据所述数据,修改虚拟APIC的所述对应的RTE。
较佳的,根据所述数据,修改I/O APIC的所述对应的RTE,修改单元61具体用于:
若所述对应的RTE为多个PCI设备共享,则修改RTE中的中断投递模式为固定投递模式,目的域模式为逻辑模式,并在目的域中增加所述虚拟机中的客户操作系统的APICID。
较佳的,通过所述I/O APIC将所述中断消息发送给对应的客户操作系统的CPU,中断处理单元62具体用于:
若所述外部设备为非PCI设备,并所述外部设备独占I/O APIC的一个RTE,则通过I/O APIC直接将所述中断消息发送给对应的客户操作系统的CPU;
若所述外部设备为PCI设备,并所述外部设备与其它外部设备共享I/O APIC的一个RTE,则通过I/O APIC将所述中断消息广播给对应的客户操作系统的CPU。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意方法实施例中的多核CPU上异构操作系统间中断处理方法。
基于上述实施例,参阅图7所示,本发明实施例中,一种计算机装置的结构示意图。
本发明实施例提供了一种计算机装置,该计算机装置可以包括处理器710(CenterProcessing Unit,CPU)、存储器720、输入设备730和输出设备740等,输入设备730可以包括键盘、鼠标、触摸屏等,输出设备740可以包括显示设备,如液晶显示器(Liquid CrystalDisplay,LCD)、阴极射线管(Cathode Ray Tube,CRT)等。
存储器720可以包括只读存储器(ROM)和随机存取存储器(RAM),并向处理器710提供存储器720中存储的程序指令和数据。在本发明实施例中,存储器720可以用于存储上述多核CPU上异构操作系统间中断处理方法的程序。
处理器710通过调用存储器720存储的程序指令,处理器710用于按照获得的程序指令执行:
根据输入/输出高级可编程中断控制器I/O APIC的物理地址,分别为每个虚拟机建立相应的扩展页表EPT,并通过虚拟机中的客户操作系统访问I/O APIC,触发虚拟机管理器VMM进入EPT异常处理程序,其中,所述EPT中虚拟机中的客户操作系统的逻辑地址不映射I/O APIC的物理地址;
通过所述EPT异常处理程序,查找所述发生EPT异常的地址对应的虚拟高级可编程中断控制器APIC,并通过所述对应的虚拟APIC修改I/O APIC和/或虚拟APIC的重定向表条目RTE;
若检测到外部设备中断,则基于修改后的RTE,生成中断消息,并通过所述I/OAPIC将所述中断消息发送给对应的客户操作系统的CPU。
较佳的,处理器710进一步用于:
通过所述EPT异常处理程序,至少获取发生EPT异常的地址,异常操作的I/O APIC表项索引和数据;其中,所述数据表示需要写入RTE的数据;
通过所述EPT异常处理程序,查找所述发生EPT异常的地址对应的虚拟高级可编程中断控制器APIC,并通过所述对应的虚拟APIC修改I/O APIC和/或虚拟APIC的重定向表条目RTE,处理器710具体用于:
根据所述发生EPT异常的地址,查找所述发生EPT异常的地址对应的虚拟APIC,并调用所述对应的虚拟APIC的写接口;
判断所述异常操作的I/O APIC表项索引对应的RTE是否分配给所述虚拟机,若是,则通过所述对应的虚拟APIC的写接口,根据所述数据,修改I/O APIC和虚拟APIC的所述对应的RTE,若否,则通过所述对应的虚拟APIC的写接口,根据所述数据,修改虚拟APIC的所述对应的RTE。
较佳的,根据所述数据,修改I/O APIC的所述对应的RTE,处理器710具体用于:
若所述对应的RTE为多个PCI设备共享,则修改RTE中的中断投递模式为固定投递模式,目的域模式为逻辑模式,并在目的域中增加所述虚拟机中的客户操作系统的APICID。
较佳的,通过所述I/O APIC将所述中断消息发送给对应的客户操作系统的CPU,处理器710具体用于:
若所述外部设备为非PCI设备,并所述外部设备独占I/O APIC的一个RTE,则通过I/O APIC直接将所述中断消息发送给对应的客户操作系统的CPU;
若所述外部设备为PCI设备,并所述外部设备与其它外部设备共享I/O APIC的一个RTE,则通过I/O APIC将所述中断消息广播给对应的客户操作系统的CPU。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种多核中央处理器CPU上异构操作系统间中断处理方法,其特征在于,所述方法包括:
根据输入/输出高级可编程中断控制器I/O APIC的物理地址,分别为每个虚拟机建立相应的扩展页表EPT,并通过虚拟机中的客户操作系统访问I/O APIC,触发虚拟机管理器VMM进入EPT异常处理程序,其中,所述虚拟机中的客户操作系统的逻辑地址不映射I/OAPIC的物理地址;
通过所述EPT异常处理程序,查找发生EPT异常的地址对应的虚拟高级可编程中断控制器APIC,并通过所述对应的虚拟APIC修改I/O APIC和虚拟APIC的重定向表条目RTE,或通过所述对应的虚拟APIC修改虚拟AIPC的RTE;
若检测到外部设备中断,则基于修改后的RTE,生成中断消息,并通过所述I/O APIC将所述中断消息发送给对应的客户操作系统的CPU。
2.如权利要求1所述的方法,其特征在于,进一步包括:
通过所述EPT异常处理程序,至少获取发生EPT异常的地址,异常操作的I/O APIC表项索引和数据;其中,所述数据表示需要写入RTE的数据;
通过所述EPT异常处理程序,查找所述发生EPT异常的地址对应的虚拟高级可编程中断控制器APIC,并通过所述对应的虚拟APIC修改I/O APIC和/或虚拟APIC的重定向表条目RTE,具体包括:
根据所述发生EPT异常的地址,查找所述发生EPT异常的地址对应的虚拟APIC,并调用所述对应的虚拟APIC的写接口;
判断所述异常操作的I/O APIC表项索引对应的RTE是否分配给所述虚拟机,若是,则通过所述对应的虚拟APIC的写接口,根据所述数据,修改I/O APIC和虚拟APIC的所述对应的RTE,若否,则通过所述对应的虚拟APIC的写接口,根据所述数据,修改虚拟APIC的所述对应的RTE。
3.如权利要求2所述的方法,其特征在于,根据所述数据,修改I/O APIC的所述对应的RTE,具体包括:
若所述对应的RTE为多个PCI设备共享,则修改RTE中的中断投递模式为固定投递模式,目的域模式为逻辑模式,并在目的域中增加所述虚拟机中的客户操作系统的APIC ID。
4.如权利要求1、2或3所述的方法,其特征在于,通过所述I/O APIC将所述中断消息发送给对应的客户操作系统的CPU,具体包括:
若所述外部设备为非PCI设备,并所述外部设备独占I/O APIC的一个RTE,则通过I/OAPIC直接将所述中断消息发送给对应的客户操作系统的CPU;
若所述外部设备为PCI设备,并所述外部设备与其它外部设备共享I/O APIC的一个RTE,则通过I/O APIC将所述中断消息广播给对应的客户操作系统的CPU。
5.一种多核中央处理器CPU上异构操作系统间中断处理装置,其特征在于,包括:
异常触发单元,用于根据输入/输出高级可编程中断控制器I/O APIC的物理地址,分别为每个虚拟机建立相应的扩展页表EPT,并通过虚拟机中的客户操作系统访问I/O APIC,触发虚拟机管理器VMM进入EPT异常处理程序,其中,所述虚拟机中的客户操作系统的逻辑地址不映射I/O APIC的物理地址;
修改单元,用于通过所述EPT异常处理程序,查找发生EPT异常的地址对应的虚拟高级可编程中断控制器APIC,并通过所述对应的虚拟APIC修改I/O APIC和虚拟APIC的重定向表条目RTE,或通过所述对应的虚拟APIC修改虚拟AIPC的RTE;
中断处理单元,用于若检测到外部设备中断,则基于修改后的RTE,生成中断消息,并通过所述I/O APIC将所述中断消息发送给对应的客户操作系统的CPU。
6.如权利要求5所述的装置,其特征在于,异常触发单元进一步用于:
通过所述EPT异常处理程序,至少获取发生EPT异常的地址,异常操作的I/O APIC表项索引和数据;其中,所述数据表示需要写入RTE的数据;
通过所述EPT异常处理程序,查找所述发生EPT异常的地址对应的虚拟高级可编程中断控制器APIC,并通过所述对应的虚拟APIC修改I/O APIC和/或虚拟APIC的重定向表条目RTE,修改单元具体用于:
根据所述发生EPT异常的地址,查找所述发生EPT异常的地址对应的虚拟APIC,并调用所述对应的虚拟APIC的写接口;
判断所述异常操作的I/O APIC表项索引对应的RTE是否分配给所述虚拟机,若是,则通过所述对应的虚拟APIC的写接口,根据所述数据,修改I/O APIC和虚拟APIC的所述对应的RTE,若否,则通过所述对应的虚拟APIC的写接口,根据所述数据,修改虚拟APIC的所述对应的RTE。
7.如权利要求6所述的装置,其特征在于,根据所述数据,修改I/O APIC的所述对应的RTE,修改单元具体用于:
若所述对应的RTE为多个PCI设备共享,则修改RTE中的中断投递模式为固定投递模式,目的域模式为逻辑模式,并在目的域中增加所述虚拟机中的客户操作系统的APIC ID。
8.如权利要求5、6或7所述的装置,其特征在于,通过所述I/O APIC将所述中断消息发送给对应的客户操作系统的CPU,中断处理单元具体用于:
若所述外部设备为非PCI设备,并所述外部设备独占I/O APIC的一个RTE,则通过I/OAPIC直接将所述中断消息发送给对应的客户操作系统的CPU;
若所述外部设备为PCI设备,并所述外部设备与其它外部设备共享I/O APIC的一个RTE,则通过I/O APIC将所述中断消息广播给对应的客户操作系统的CPU。
9.一种计算机装置,其特征在于,所述计算机装置包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如权利要求1-4中任意一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-4中任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711384396.4A CN108073451B (zh) | 2017-12-20 | 2017-12-20 | 一种多核cpu上异构操作系统间中断处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711384396.4A CN108073451B (zh) | 2017-12-20 | 2017-12-20 | 一种多核cpu上异构操作系统间中断处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108073451A CN108073451A (zh) | 2018-05-25 |
CN108073451B true CN108073451B (zh) | 2020-09-22 |
Family
ID=62158651
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711384396.4A Active CN108073451B (zh) | 2017-12-20 | 2017-12-20 | 一种多核cpu上异构操作系统间中断处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108073451B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407298A (zh) * | 2020-03-17 | 2021-09-17 | 阿里巴巴集团控股有限公司 | 实现消息信号中断的方法、装置和设备 |
CN112579514B (zh) * | 2020-12-10 | 2022-07-26 | 海光信息技术股份有限公司 | 多核处理器堆栈初始化的方法及装置 |
CN112783601A (zh) * | 2020-12-30 | 2021-05-11 | 科东(广州)软件科技有限公司 | 一种异构系统的中断处理方法、装置、设备及存储介质 |
CN113157624B (zh) * | 2021-04-21 | 2021-12-07 | 科东(广州)软件科技有限公司 | 一种串口通信方法、装置、设备及存储介质 |
CN116302303B (zh) * | 2022-09-09 | 2024-02-13 | 科东(广州)软件科技有限公司 | 一种基于type1虚拟化系统的实时性增强方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1664802A (zh) * | 2005-03-30 | 2005-09-07 | 中国人民解放军国防科学技术大学 | 面向大规模并行系统的可程控中断控制方法 |
CN101751284A (zh) * | 2009-12-25 | 2010-06-23 | 北京航空航天大学 | 一种分布式虚拟机监控器的i/o资源调度方法 |
CN107273199A (zh) * | 2012-03-29 | 2017-10-20 | 英特尔公司 | 用于管理虚拟化环境中的中断的体系结构和方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7447820B2 (en) * | 2005-09-30 | 2008-11-04 | Intel Corporation | Retargeting of platform interrupts |
US7934121B2 (en) * | 2006-11-21 | 2011-04-26 | Microsoft Corporation | Transparent replacement of a system processor |
-
2017
- 2017-12-20 CN CN201711384396.4A patent/CN108073451B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1664802A (zh) * | 2005-03-30 | 2005-09-07 | 中国人民解放军国防科学技术大学 | 面向大规模并行系统的可程控中断控制方法 |
CN101751284A (zh) * | 2009-12-25 | 2010-06-23 | 北京航空航天大学 | 一种分布式虚拟机监控器的i/o资源调度方法 |
CN107273199A (zh) * | 2012-03-29 | 2017-10-20 | 英特尔公司 | 用于管理虚拟化环境中的中断的体系结构和方法 |
Non-Patent Citations (1)
Title |
---|
多CPU系统的中断机制;沈雪峰;《中国优秀硕士学位论文全文数据库信息科技辑》;20091115(第11期);I137-23 * |
Also Published As
Publication number | Publication date |
---|---|
CN108073451A (zh) | 2018-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108073451B (zh) | 一种多核cpu上异构操作系统间中断处理方法及装置 | |
US9772870B2 (en) | Delivering interrupts to virtual machines executing privileged virtual machine functions | |
US20240330199A1 (en) | Secure memory access in a virtualized computing environment | |
US10049064B2 (en) | Transmitting inter-processor interrupt messages by privileged virtual machine functions | |
US9697031B2 (en) | Method for implementing inter-virtual processor interrupt by writing register data in a single write operation to a virtual register | |
CN107924325B (zh) | 用于多级虚拟化的设备和方法 | |
EP2881860B1 (en) | Method for implementing an interrupt between virtual processors, related device, and system | |
US12014199B1 (en) | Virtualization extension modules | |
US10055136B2 (en) | Maintaining guest input/output tables in swappable memory | |
US11036666B2 (en) | Asynchronous mapping of hot-plugged device associated with virtual machine | |
US10977191B2 (en) | TLB shootdowns for low overhead | |
US10564889B2 (en) | Method and apparatus for processing data based on physical host | |
US10853259B2 (en) | Exitless extended page table switching for nested hypervisors | |
US20160342543A1 (en) | Sharing message-signaled interrupt vectors in multi-processor computer systems | |
US11960924B2 (en) | Inter-thread interrupt signal sending based on interrupt configuration information of a PCI device and thread status information | |
US10248785B2 (en) | Application memory protection using a host page table switching virtual machine function | |
CN111857943A (zh) | 数据处理的方法、装置与设备 | |
KR20130131812A (ko) | 가상화 장치 | |
US9753861B2 (en) | Exit-less movement of guest memory assigned to a device in a virtualized environment | |
US20220335109A1 (en) | On-demand paging support for confidential computing | |
EP3502906B1 (en) | Tlb shootdown for low overhead | |
US11755512B2 (en) | Managing inter-processor interrupts in virtualized computer systems | |
Zhou et al. | AVMM: Virtualize network client with a bare-metal and asymmetric partitioning approach |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20180525 Assignee: Kedong (Guangzhou) Software Technology Co., Ltd Assignor: Beijing Dongtu Technology Co., Ltd.|Beijing keyin Jingcheng Technology Co., Ltd Contract record no.: X2020980000255 Denomination of invention: Method and device for interrupt handling between heterogeneous operating systems on multi-core CPU License type: Exclusive License Record date: 20200218 |
|
EE01 | Entry into force of recordation of patent licensing contract | ||
GR01 | Patent grant | ||
GR01 | Patent grant |