专利名称:虚拟机系统及其客户操作系统的中断处理方法
技术领域:
本发明涉及虚拟机系统中客户操作系统的中断处理,特别是一种虚拟机系 统及其客户才喿作系统的中断处理方法。
背景技术:
在现有的虚拟机系统中,系统性能是影响虚拟机系统发展的瓶颈之一,其 中中断性能和网络性能的有效提高对系统整体性能的提高有重要意义。
在现有的虛拟机系统中,中断需要被虛拟机监视器(Virtual Machine Monitor, VMM)截获再转发,并且客户操作系统(Guest Operation System, GOS)中的中断处理函数与虛拟机系统处于不同的地址空间,不能并发的处理 中断,导致目前基于虚拟机的系统中中断处理的效率不高,尤其是在有大量数 据需要传输并频繁产生中断(如网卡)的时候,中断处理的效率会严重影响系 统的性能。
目前的虛拟机系统进行中断处理的方法包括如下步骤
真实物理设备在接到数据后产生中断;
虚拟机监^L器截获该中断后设置虛拟CPU中的中断标志位;
GOS陷入虚拟机监视器,检查中断标志位的状态,中断标示位表明有中 断时,向虚拟CPU的中断相关寄存器写入相应的值,让虛拟CPU模拟产生硬 件中断;
GOS获取该模拟产生的中断后调用中断处理函数。 然而,上述的断处理的方法具有以下缺点 中断相应的时间和路径过长,中断效率低。
GOS以每秒几万次的频率陷入虚拟机监视器,^r查中断并对中断进行模 拟,当大量中断产生时,系统整体性能下降明显。
发明内容
本发明的目的是提供一种虚拟机系统及其客户操作系统的中断处理方法, 提高中断处理的效率,进而提高系统性能。
为了实现上述目的,本发明提供了一种虚拟机系统中客户操作系统的中断
处理方法,包括
步骤A,虛拟机监视器在截获真实物理设备产生的中断后,设置虚拟CPU 中的中断标志位;
步骤B,客户操作系统陷入虛拟机监视器后,根据虛拟CPU的模拟硬件 中断调用驱动的中断处理函数; 其中,还包括
步骤C,中断处理函数屏蔽中断标志位;
步骤D,中断处理函数通过虚拟机监视器从设备的数据緩冲区获取数据, 直至设备的数据緩沖区没有数据为止。 上述的方法,其中,还包括
步骤E,中断处理函数取消对虛拟CPU中的中断标志位的屏蔽。 上述的方法,其中,所述步骤D具体包括
步骤D1,中断处理函数被调用后,判断真实物理设备对应的数据緩沖区 是否有数据,如果是进入步骤D2,否则进入步骤E;
步骤D2,获取真实物理设备对应的数据緩冲区中的数据,将中断处理函 数再次放入队列后返回步骤Dl。
上述的方法,其中,所述步骤D1中,中断处理函数具体才艮据生产者指针 和消费者指针判断真实物理设备对应的数据緩冲区是否有数据。
为了更好地实现上述目的,本发明还提供了一种虚拟机系统,包括
中断标示设置模块,用于在截获真实物理设备产生的中断后,设置虛拟 CPU中的中断标志位;
模拟硬件中断模块,用于在根据虛拟CPU中的中断标志位判断出有中断 后,向虛拟CPU的中断相关寄存器写入相应的值,模拟产生硬件中断;
其中,还包括
中断标示屏蔽模块,用于在获取模拟硬件中断后屏蔽虚拟CPU中的中断
标志位;
数据获取模块,用于从真实物理设备对应的数据緩沖区获取数据,直至真 实物理设备对应的数据緩冲区没有数据为止。 上述的虚拟机系统,其中,还包括
中断标示屏蔽取消模块,用于在数据获取模块判断出真实物理设备对应的 数据緩沖区没有数据时,取消对虚拟CPU中的中断标志位的屏蔽。
上述的虛拟机系统,其中,数据获取模块具体根据生产者指针和消费者指 针判断真实物理设备对应的数据緩沖区是否有数据。
本发明具有以下有益效果
1、 在真实物理设备连续得到数据时,除了第一次的中断模拟处理之外, 后续的数据获取过程中,中断标示位被屏蔽,所以不会有相应的中断的模拟过 程,所以数据接收过程加快;
2、 客户操作系统可以连续从数据緩沖区取得数据,系统性能提高。 上述的有益效果,对所有大量产生中断的网络或其他类似特性的1/0设备
尤为明显。
图1为本发明虚拟机系统中客户操作系统的中断处理方法的流程示意图。
具体实施例方式
本发明的虚拟机系统中客户操作系统的中断处理方法,针对虚拟机监视器 能够截获中断的特点,直接将中断屏蔽,进而直接读取真实物理设备对应的緩 冲区数据,减少中断次数,提高设备性能。
本发明的虚拟机系统中客户操作系统的中断处理方法如图l所示,包括
步骤11,虚拟机监^L器截获真实物理设备在接到数据后产生的中断,并 设置虚拟CPU中的中断标志位;
在该步骤中,真实物理设备的管脚产生中断后,该中断为虚拟机监视器截 获,虚拟机监视器根据该中断号设置虚拟CPU中对应的中断标志,如
显卡中断会设置虛拟CPU中与显卡中断对应的中断标志;
网卡中断会设置虚拟CPU中与网卡中断对应的中断标志等。 通过对应的设置,客户操作系统GOS陷入后,可以方便地判断中断,调
用相应的中断处理函it。
步骤12, GOS陷入虚拟机监视器后,根据虚拟CPU中的中断标志位判断
出有中断后,向虚拟CPU的中断相关寄存器写入相应的值,让虚拟CPU模拟
产生硬件中断;
在此,GOS才艮据中断标示、中断类型,即可向相应的中断相关寄存器写 入相应的值,以产生模拟硬件中断。
在此,该向虚拟CPU的中断相关寄存器写入相应的值,让虚拟CPU模拟 产生硬件中断通过设置VMCS ( Virtual Machine Control Structure,虚拟机控制 结构)结果,让Guest OS产生中断来实现。
步骤13, GOS收到该模拟硬件中断后调用驱动的中断处理函数;
步骤14,中断处理函数屏蔽中断标志位,屏蔽中断标志位后,每次GOS 陷入,检查该标志位后将发现没有中断产生;
步骤15,中断处理函数通过虚拟机监视器从设备的数据緩冲区获取数据, 直至设备的数据緩冲区没有数据为止;
步骤16,中断处理函数取消对虛拟CPU中的中断标志位的屏蔽。
其中步骤15具体包括
步骤151,中断处理函数被调用后,判断真实物理设备对应的数据緩沖区 是否有数据,如果是进入步骤152,否则进入步骤16;
步骤152,获取真实物理设备对应的数据緩冲区中的数据,将中断处理函 数再次放入队列后返回步骤151。
在步骤152中,将该中断处理函数再次放入队列后, 一定时间后,该中断 处理函数再次被调用,重复上述过程,直至数据被接收完毕。
在此,步骤151中,驱动的中断处理函数查询真实物理设备对应的数据緩 冲区,判断是否有数据,在本发明的具体实施例中,具体通过生产者指针和消 费者指针来判断,下面进行详细说明。
GOS和VMM共享有内存页,而VMM会在有新数据到来时更新该指针 (生产者指针),生产者指针更新后,GOS可以直接访问该共享后的内存获取
该生产者指针。
同时,驱动自身记录着数据緩冲区中上次已经处理完了数据的指针(消费
者指针);
通过生产者和消费者指针的对比,驱动直接轮询数据緩冲区,获取其中的 数据,当没有数据可取时(没有数据,说明也没有中断了),取消轮询,等待 下次中断。
本发明的虚拟机系统,包括
中断标示设置模块,用于在截获真实物理设备产生的中断后,设置虛拟 CPU中的中断标志位;
模拟硬件中断模块,用于在根据虚拟CPU中的中断标志位判断出有中断 后,向虚拟CPU的中断相关寄存器写入相应的值,模拟产生硬件中断;
中断标示屏蔽模块,用于在获取模拟硬件中断后屏蔽虚拟CPU中的中断 标志位;
数据获取模块,用于从真实物理设备对应的数据緩冲区获取数据,直至真 实物理设备对应的数据緩沖区没有数据为止;
中断标示屏蔽取消模块,用于在数据获取模块判断出真实物理设备的对应 的数据緩沖区没有数据时,取消对虚拟CPU中的中断标志位的屏蔽。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通 技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰, 这些改进和润饰也应^f见为本发明的保护范围。
权利要求
1. 一种虚拟机系统中客户操作系统的中断处理方法,包括:步骤A,虚拟机监视器在截获真实物理设备产生的中断后,设置虚拟CPU中的中断标志位;步骤B,客户操作系统陷入虚拟机监视器后,根据虚拟CPU的模拟硬件中断调用驱动的中断处理函数;其特征在于,还包括:步骤C,中断处理函数屏蔽中断标志位;步骤D,中断处理函数通过虚拟机监视器从设备的数据缓冲区获取数据,直至设备的数据缓冲区没有数据为止。
2. 根据权利要求1所述的方法,其特征在于,还包括步骤E,中断处理函数:f又消对虚拟CPU中的中断标志位的屏蔽。
3. 根据权利要求2所述的方法,其特征在于,所述步骤D具体包括 步骤D1,中断处理函数被调用后,判断真实物理设备对应的数据緩沖区是否有数据,如果是进入步骤D2,否则进入步骤E;步骤D2,获取真实物理设备对应的数据緩沖区中的数据,将中断处理函 数再次放入队列后返回步骤Dl 。
4. 根据权利要求3所述的方法,其特征在于,所述步骤D1中,中断处理 函数具体根据生产者指针和消费者指针判断真实物理设备对应的数据緩冲区 是否有数据。
5. —种虚拟机系统,包括中断标示设置模块,用于在截获真实物理设备产生的中断后,设置虚拟 CPU中的中断标志位;模拟硬件中断模块,用于在根据虚拟CPU中的中断标志位判断出有中断 后,向虚拟CPU的中断相关寄存器写入相应的值,模拟产生硬件中断;其特征在于,还包括中断标示屏蔽模块,用于在获取模拟硬件中断后屏蔽虛拟CPU中的中断 标志位; 数据获取模块,用于从真实物理设备对应的数据緩冲区获取数据,直至真 实物理设备对应的数据緩沖区没有数据为止。
6. 根据权利要求5所述的虚拟机系统,其特征在于,还包括 中断标示屏蔽取消模块,用于在数据获取模块判断出真实物理设备对应的数据緩冲区没有数据时,取消对虛拟CPU中的中断标志位的屏蔽。
7. 根据权利要求6所述的虚拟机系统,其特征在于,数据获取模块具体 根据生产者指针和消费者指针判断真实物理设备对应的数据緩沖区是否有数 据。
全文摘要
本发明提供一种虚拟机系统及其客户操作系统的中断处理方法,其中该虚拟机系统中客户操作系统的中断处理方法,包括步骤A,虚拟机监视器在截获真实物理设备产生的中断后,设置虚拟CPU中的中断标志位;步骤B,客户操作系统陷入虚拟机监视器后,根据虚拟CPU的模拟硬件中断调用驱动的中断处理函数;步骤C,中断处理函数屏蔽中断标志位;步骤D,中断处理函数通过虚拟机监视器从设备的数据缓冲区获取数据,直至设备的数据缓冲区没有数据为止。采用本发明,数据接收过程加快,系统性能提高。
文档编号G06F9/455GK101382923SQ20071012147
公开日2009年3月11日 申请日期2007年9月6日 优先权日2007年9月6日
发明者张冬冬 申请人:联想(北京)有限公司