CN101876954A - 一种虚拟机控制系统及其工作方法 - Google Patents

一种虚拟机控制系统及其工作方法 Download PDF

Info

Publication number
CN101876954A
CN101876954A CN2009102434339A CN200910243433A CN101876954A CN 101876954 A CN101876954 A CN 101876954A CN 2009102434339 A CN2009102434339 A CN 2009102434339A CN 200910243433 A CN200910243433 A CN 200910243433A CN 101876954 A CN101876954 A CN 101876954A
Authority
CN
China
Prior art keywords
equipment
physical
virtual machine
virtual
request
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.)
Granted
Application number
CN2009102434339A
Other languages
English (en)
Other versions
CN101876954B (zh
Inventor
沈玉良
韩晓明
张建刚
许鲁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongkehai Micro Beijing Technology Co ltd
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN2009102434339A priority Critical patent/CN101876954B/zh
Publication of CN101876954A publication Critical patent/CN101876954A/zh
Application granted granted Critical
Publication of CN101876954B publication Critical patent/CN101876954B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种虚拟机控制系统及其工作方法,是基于混合I/O设备空间下实现以独立于用户系统和应用程序的方式进行系统管理和控制。所述虚拟机控制系统包括:物理设备探测部件、I/O设备分配控制部件、混合I/O设备空间虚拟化部件、I/O设备模拟部件以及物理设备直接访问部件。其能够保持PC用户使用模式不变,减少虚拟化开销,提高PC环境的可管理性。

Description

一种虚拟机控制系统及其工作方法
技术领域
本发明涉及计算机系统结构和虚拟机控制技术领域,特别是涉及一种基于混合I/O设备空间的虚拟机控制系统及其工作方法。
背景技术
个人计算机(Personal Computer,PC)的出现逐渐在人们的生产和生活中普及了计算机的使用,但长时期以来PC的系统资源相对紧缺。因此,人们的关注点主要是如何更充分地发挥系统性能。而近年来,随着多核处理器、大容量内存、高带宽I/O技术、大容量和高带宽磁盘为代表的基础技术发展,使得PC系统的资源由紧缺逐渐转变为过剩。现在,人们的关注点逐步转向增强系统的可管理性等方面。目前,PC系统用户环境,尤其是企业用户,有着大量彼此独立的PC用户系统。而且,在传统PC系统中,用户操作系统和硬件平台直接绑定。无法在用户系统故障、启动等过程中进行有效的系统管理和控制。这些都给PC系统环境的管理和控制带来了难度。
因此,引入了虚拟机(Virtual Machine)的概念。在计算机科学中的体系结构领域里,虚拟机是指一种特殊的软件,它可以在计算机平台和终端用户之间建立一种系统环境,而终端用户则是基于这个软件所建立的系统环境来运行和操作软件。在计算机科学中,虚拟机是指可以像真实机器一样运行程序的计算机的软件实现。其是通过软件模拟来实现硬件系统功能,并可以在隔离环境中运行一个完整计算机系统。目前,管理控制虚拟机运行的虚拟机控制系统大多由虚拟机软件(Virtual Machine Monitor,VMM)实现,由于虚拟机软件是介于用户操作系统和物理平台之间的系统软件。通过虚拟机软件,可以在一台物理计算机上模拟出一台或多台虚拟的计算机,这些虚拟机完全就像真正的计算机那样进行工作,例如你可以安装操作系统、安装应用程序、访问网络资源等等。对于你而言,它只是运行在你物理计算机上的一个应用程序,但是对于在虚拟机中运行的应用程序而言,它就像是在真正的计算机中进行工作。通过虚拟机软件,可以实现对计算机系统的全生命周期管理和控制,即:无论用户系统故障、启动、休眠还是正常运行,都可以进行系统管理和控制。这使得在虚拟机软件层面进行系统管理、安全控制等方面具有不可替代的优势。
但是,传统的虚拟机软件都完全采用由软件程序模拟的I/O设备。这就会造成在I/O操作频繁的应用负载下,出现较大的虚拟化开销。更重要的是,这种完全采用由软件程序模拟的I/O设备空间也限定了计算机用户不能像正常使用PC一样使用虚拟机系统。比如:用户必须通过客户端程序访问虚拟用户系统;用户系统难于直接使用硬件平台的复杂设备(如:硬件图形加速设备、声卡等)。因此,如果不能保持PC系统用户的使用习惯不变和减少虚拟化开销,虚拟机技术就难于在PC环境中广泛应用。
发明内容
本发明的目的在于提供一种虚拟机控制系统及其工作方法。其能够保持PC用户使用模式不变,减少虚拟化开销,提高PC环境的可管理性。
为实现本发明的目的而提供的一种虚拟机控制系统,基于混合I/O设备空间下实现以独立于用户系统和应用程序的方式进行系统管理和控制,所述系统,包括:物理设备探测部件、I/O设备分配控制部件、混合I/O设备空间虚拟化部件、I/O设备模拟部件和物理设备直接访问部件,其中:
物理设备探测部件,用于在虚拟机控制系统启动和运行期间探测物理平台上的物理I/O设备构成,并把探测结果发送给I/O设备分配控制部件;
I/O设备分配控制部件,用于根据管理员的指令和物理设备探测部件的探测结果管理和控制所述物理I/O设备和虚拟I/O设备的分配;
混合I/O设备空间虚拟化部件,用于根据I/O设备分配控制部件的分配结果实现混合I/O设备空间的虚拟化,配置由物理I/O设备和虚拟的I/O设备映射成的统一的I/O设备空间,以及根据所述分配结果判断把哪些I/O请求交给I/O设备模拟部件进行软件模拟,把哪些I/O请求交给物理I/O设备直接访问部件进行直接物理访问;
I/O设备模拟部件,用于将物理I/O设备模拟为虚拟I/O设备,同时,接收I/O访问、访问外部信息和返回I/O操作结果;
物理设备直接访问部件,用于负责对指定的物理I/O设备直接进行访问。
所述系统,包括:
设备中断转发控制部件,用于转发所述物理I/O设备产生的中断信号,而具体的转发方向根据I/O设备分配控制部件的设备分配结果决定。
所述系统,包括:
设备直接内存访问控制部件,用于控制物理设备直接内存访问内存地址的转换和翻译。
所述混合I/O设备空间虚拟化部件,输入是用户虚拟机的I/O访问请求,输出是转发给所述I/O设备模拟部件或所述物理设备直接访问部件的I/O访问请求。
所述混合I/O设备空间虚拟化部件接收I/O访问请求,检查所述I/O请求是否针对物理I/O设备,如果访问的是物理I/O设备,则检查内部缓存的配置空间信息,如果缓存命中,则直接在缓存中进行相应的配置空间信息的读写;如果未命中,则设备直接内存访问控制部件控制物理I/O设备直接内存访问内存地址的转换,再把该I/O请求转发给物理设备直接访问部件;如果访问的是虚拟的I/O设备,则把该I/O请求转发给I/O设备模拟部件处理。
所述I/O设备分配控制部件,与混合I/O设备空间虚拟化部件、物理设备探测部件、设备中断转发控制部件和设备DMA控制部件进行交互。
所述I/O设备模拟部件能够同时为多个用户虚拟机提供设备模拟服务。
所述物理设备直接访问部件,用于检测资源访问是否冲突。
所述设备中断转发控制部件对于直接赋给用户虚拟机使用的第一物理I/O设备和基于第二物理I/O设备的虚拟设备,采用不同的中断处理方式:
当第一物理I/O设备产生了中断信号,设备中断转发控制部件调用Host/Guest中断向量映射关系,并把第一物理I/O设备在虚拟机控制系统的中断向量映射成用户虚拟机的中断向量,最后,由设备中断转发控制部件向用户虚拟机插入所述用户虚拟机的中断向量;
当第二物理I/O设备产生了中断信号,设备中断转发控制部件通知给I/O设备模拟部件,然后,I/O设备模拟部件进行相应的处理;随后,基于第二物理I/O设备的虚拟设备的模拟程序发送中断向量请求给用户虚拟机。
所述I/O设备分配控制部件将管理员设定的部分物理I/O设备统一分配给一个用户虚拟机使用。
所述映射是通过对基址寄存器的模拟和控制,实现控制I/O设备的I/O地址空间到内存空间的映射。
所述系统,采用I/O设备配置空间缓存机制,有效控制用户虚拟机对物理I/O设备空间的访问。
所述I/O设备分配控制部件,为用户虚拟机提供虚拟中断控制器。
为实现本发明的目的还提供一种虚拟机控制系统的工作方法,基于混合I/O设备空间下实现以独立于用户系统和应用程序的方式进行系统管理和控制,所述方法,包括下列步骤:
步骤100.I/O设备分配控制部件根据管理员的指令和物理设备探测部件的探测结果管理和控制物理I/O设备和软件虚拟I/O设备的分配,混合I/O设备空间虚拟化部件根据所述分配结果配置混合I/O设备空间;
步骤200.用户虚拟机的用户发出I/O访问请求,混合I/O设备空间虚拟化部件接收所述I/O访问请求,判断所述I/O访问请求是否是针对物理I/O设备,若是,则执行步骤300;否则,执行步骤400;
步骤300.混合I/O设备空间虚拟化部件发送所述I/O访问请求到物理设备直接访问部件,物理设备直接访问部件对所述物理I/O设备直接进行访问;
步骤400.混合I/O设备空间虚拟化部件转发所述I/O请求给I/O设备模拟部件进行处理。
所述步骤300,包括下列步骤:
步骤310.混合I/O设备空间虚拟化部件检查内部缓存的PCI配置空间信息,判断缓存是否命中,若是,则执行步骤320;否则,执行步骤330;
步骤320.直接在内部缓存中进行相应的PCI配置空间信息的读写;
步骤330.判断所述I/O访问请求是否需要进行DMA操作,若是,则执行步骤340;否则,执行步骤350;
步骤340:设备DMA控制部件进行物理I/O设备DMA内存地址的转换,然后把地址转换结果转发给物理设备直接访问部件处理。
步骤350.物理设备直接访问部件对所述物理I/O设备直接进行访问,检测资源访问是否冲突,如果冲突则返回出错信息,否则返回所述I/O请求的处理结果。
所述步骤400,包括下列步骤:
步骤410.I/O设备模拟部件接收所述I/O请求并进行I/O操作处理;
步骤420.I/O设备模拟部件根据处理结果,返回所述I/O请求的访问结果。
所述方法,包括下列步骤:
步骤100’.物理I/O设备产生中断时,首先获得中断信号对应的物理平台的中断向量,然后根据I/O设备分配控制部件的分配结果,判断该中断向量是否分配给用户虚拟机或者服务域系统,若是,执行步骤300’;否则,执行步骤200’;
步骤200’.虚拟机控制系统直接调用内部的中断处理逻辑进行中断处理;
步骤300’.判断与所述中断向量关联的多个I/O设备是否全部属于服务域系统,若是,执行步骤400’;否则,执行步骤500’;
步骤400’.向服务域系统发送中断信号事件来调用服务域系统的中断处理函数进行中断处理;
步骤500’.判断与所述中断向量关联的多个I/O设备是否全部属于用户虚拟机,若是,则执行步骤600’;否则,执行步骤700’;
步骤600’.通过CPU硬件虚拟化机制向活跃用户虚拟机插入相应的中断请求,以改变活跃用户虚拟机中虚拟中断控制器的状态,实现中断操作;
步骤700’.与所述中断向量关联的多个I/O设备既包括服务域系统设备,又包括用户虚拟机系统设备,将所述中断请求交付给优先级高的系统进行处理;
步骤800’.判断所述优先级高的系统在规定时间内,是否成功地处理了所述中断请求,若是,则执行步骤900’;否则,执行步骤1000’;
步骤900’.清零失败记数值,并跳至步骤1200’;
步骤1000’.失败记数值加1,并把所述中断请求发送给低优先级系统进行中断处理;
步骤1100’.如果失败记数值大于3,则调整服务域系统设备和用户虚拟机系统设备的优先级;
步骤1200’.中断处理结束。
本发明的有益效果是:
1.本发明的虚拟机控制系统及其工作方法,适合于PC应用环境下的大规模系统管理,可以在大规模PC应用环境下以独立于用户系统和应用程序的方式进行系统资源管理和控制;
2.使用本发明的虚拟机控制系统及其工作方法,能够保持PC用户的使用模式基本不变,即:虚拟机系统用户可以和普通PC用户一样使用系统物理显卡、声卡、鼠标、键盘等I/O设备,系统用户基本感觉不到自己使用的是虚拟机系统;
3.本发明的虚拟机控制系统及其工作方法,具有良好的系统可管理性、通用性和高资源利用率;
4.本发明的虚拟机控制系统及其工作方法,对于直接访问的I/O设备可以减少虚拟化的额外开销。
附图说明
图1是本发明一种虚拟机控制系统的结构示意图;
图2是本发明一种虚拟机控制系统的一实施例的结构示意图;
图3是本发明一种虚拟机控制系统的工作方法的流程图;
图4是本发明中对物理I/O设备直接进行访问的方法流程图;
图5是本发明中混合I/O设备空间虚拟化部件转发I/O请求的方法流程图;
图6是本发明中对中断的处理操作步骤流程图;
图7是本发明的虚拟机控制系统的一实施例的示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明的一种虚拟机控制系统及其工作方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明的一种虚拟机控制系统及其工作方法,是基于混合I/O设备空间下实现以独立于用户系统和应用程序的方式进行系统管理和控制。其能够保持PC用户使用模式不变,减少虚拟化开销,提高PC环境的可管理性。
为了更好地说明本发明的一种虚拟机控制系统,先解释以下概念:
I/O设备,是指在计算机系统中负责计算系统和外部(包括:使用者和外部信息)交互的途径和工具。
混合I/O设备空间,是指由部分物理设备和软件虚拟设备混合组成的I/O设备集合。
下面结合上述目标详细介绍本发明的一种虚拟机控制系统,所述虚拟机控制系统基于混合I/O设备空间建立。
在传统的由虚拟机软件实现的虚拟机控制系统中,由于需要平等地将系统资源分配给各用户虚拟机使用,尤其是硬件平台的物理I/O设备,因此,虚拟机软件把完全由软件模拟的设备分配给用户虚拟机系统使用。然后,这些软件模拟的虚拟设备以共享的方式来使用硬件平台设备。相比完全由软件模拟的I/O设备空间,本发明采用的混合I/O设备空间具有更少的I/O设备虚拟化开销,而且把主要的用户交互物理I/O设备赋给用户系统直接使用,可以有效保持PC用户的使用模式不变;同时,本发明的虚拟机控制系统具有独立于用户系统的资源管理和控制能力。
图1是本发明一种虚拟机控制系统的结构示意图,如图1所示,所述虚拟机控制系统,包括:
混合I/O设备空间虚拟化部件1,用于完成混合I/O设备空间的虚拟化工作,即:将由部分物理I/O设备和软件虚拟I/O设备(包括:I/O端口和内存映射I/O区域)映射成统一的I/O资源空间;
所述混合I/O设备空间虚拟化部件1会根据I/O设备分配控制部件2的分配结果,来判断把哪些请求交给I/O设备模拟部件3进行软件模拟,把哪些请求交给物理I/O设备直接访问部件4进行直接物理访问。
混合I/O设备空间虚拟化部件1的输入是活跃用户虚拟机的I/O访问请求,包括:基于I/O端口和内存映射(Memory Mapped,MM)两类I/O访问。输出是转发给I/O设备模拟部件3或物理设备直接访问部件4的I/O访问请求。
混合I/O设备空间虚拟化部件1根据I/O设备分配控制部件2的分配结果来组织混合I/O设备空间。
作为一种可实施方式,混合I/O设备空间虚拟化部件1为活跃用户虚拟机提供了由物理PCI设备和虚拟的PCI设备映射成的统一的虚拟的PCI配置空间,在物理PCI总线0上添加了软件虚拟的PCI桥设备。在虚拟PCI桥的另一端,为活跃用户虚拟机添加了软件虚拟的PCI-IDE设备和虚拟网卡。对于虚拟PCI配置空间的I/O请求,混合I/O设备空间虚拟化部件会检查该I/O请求是否针对物理PCI设备,如果访问的是物理PCI设备,则该混合I/O设备空间虚拟化部件会检查内部缓存的PCI配置空间信息,如果缓存命中,则进行相关信息的读写;如果未命中,则把该I/O请求转发给物理设备直接访问部件4;如果访问的是虚拟的PCI设备,该混合I/O设备空间虚拟化部件会把该I/O请求转发给I/O设备模拟部件3进行处理。
较佳地,本发明中是通过对基址寄存器(BAR)的模拟和控制,实现控制I/O设备的I/O地址空间到内存空间的映射关系。因此,虚拟机控制系统就可以实现对I/O设备的控制。把PCI设备的I/O空间映射到内存空间的那一部分,即这种映射关系的控制是通过对PCI设备的基址寄存器(BAR)控制的。
较佳地,本发明中采用I/O设备配置空间缓存机制,即:在虚拟机控制系统中暂存I/O设备配置信息。这样,对于一部分用户虚拟机的I/O设备配置请求,系统就可以直接返回某些配置信息。根据用户虚拟机对PCI设备的基址寄存器(BAR)的配置请求,系统可以利用缓存中的信息来检测I/O资源映射是否冲突,并控制I/O地址的映射。采用I/O设备配置空间缓存机制的好处在于可以有效控制活跃用户虚拟机对物理PCI配置空间的访问,并通过PCI设备的基址寄存器(BAR)控制其I/O地址空间的映射。
I/O设备分配控制部件2,用于根据管理员的指令和物理设备探测部件5的探测结果管理和控制所述物理I/O设备和软件虚拟I/O设备的分配,并且根据所述分配的结果控制混合I/O设备空间虚拟化部件1、设备中断转发控制部件6和设备DMA控制部件7正确运行;
所述I/O设备分配控制部件2,可以与混合I/O设备空间虚拟化部件1、物理设备探测部件5、设备中断转发控制部件6和设备DMA控制部件7进行交互。
所述I/O设备分配控制部件2,还可以根据管理员的分配指令来决定具体把哪些物理I/O设备,例如:除了磁盘和网络之外的所有物理I/O设备,分配给活跃用户虚拟机。
I/O设备模拟部件3,用于将物理I/O设备模拟为虚拟I/O设备,包括:接收I/O访问、访问外部信息和返回I/O操作结果;
所述I/O设备模拟部件3完成I/O设备的模拟工作,也就是在某个物理设备的基础上来模拟另一个虚拟的I/O设备。比如:在网络访问的基础上实现某个型号的磁盘设备的模拟。其工作过程中,会以磁盘设备的方式来接收I/O访问请求;然后,为了得到具体数据,其通过网络设备来访问外部信息;最后,其还要模拟磁盘操作的访问结果。
所述I/O设备模拟部件3,采用软件的方式实现各类常见虚拟I/O设备的模拟,包括:显卡、声卡、硬盘、网卡、键盘鼠标等。
所述I/O设备模拟部件3可以同时为多个用户虚拟机提供设备模拟服务。
物理设备直接访问部件4,用于负责对指定的物理I/O设备直接进行访问;
物理设备直接访问部件,主要是对物理I/O设备资源的访问和资源访问是否冲突的检测。本部件只是负责对I/O端口和内存映射I/O资源的访问,并不具体控制设备。
物理设备探测部件5,用于在虚拟机控制系统启动和运行期间探测物理平台上的物理I/O设备构成,并把探测结果发送给I/O设备分配控制部件2;
图2是本发明一种虚拟机控制系统的一实施例的结构示意图,如图2所示,所述虚拟机控制系统,还包括:设备中断转发控制部件6,用于转发所述物理平台上的物理I/O设备产生的中断信号,而具体的转发方向根据I/O设备分配控制部件2的设备分配结果决定;
对于设备中断信号,设备中断转发控制部件6会根据I/O设备分配控制部件2的设备分配结果决定是否把中断信号转发用户虚拟机处理。
较佳地,为了能够控制硬件平台的物理中断处理,所述I/O设备分配控制部件为用户虚拟机提供了虚拟中断控制器。这样,物理平台和用户虚拟机有不同的中断向量空间。通常,在x86平台中采用8位中断向量表示外部中断,而且系统利用中断向量来选择中断描述表(Interrupt Descriptor Table,IDT)中不同的中断描述项。
作为一种可实施方式,对于直接赋给用户虚拟机使用的物理I/O设备B和基于物理I/O设备A的虚拟设备C,我们采用不同的中断处理方式。当物理I/O设备B产生了中断信号,其在虚拟机控制系统中断向量空间内的值为Y,设备中断转发控制部件调用Host/Guest中断向量映射关系,并把中断向量Y映射成用户虚拟机的中断向量Q,最后,由设备中断转发控制部件向用户虚拟机插入虚拟中断向量Q;当物理I/O设备A产生了中断信号,其在虚拟机控制系统中断向量空间内的值为X,设备中断转发控制部件发送通知给I/O设备模拟部件,然后,I/O设备模拟部件进行相应的处理。随后,虚拟设备C的模拟程序发送由中断向量X在用户虚拟机中断向量空间映射得到的中断向量P请求用户虚拟机。
设备直接内存访问(Direct Memory Access,DMA)控制部件7,用于控制物理设备DMA内存地址的转换。
所述设备DMA控制部件7仅负责DMA内存地址的转换和翻译,具体的DMA操作还是由物理I/O设备直接写入内存。
用户操作系统看到的物理地址空间,需要经过虚拟机控制系统的地址转换机制才能翻译成真实的机器内存地址空间。在支持I/O虚拟化的硬件平台中,设备DMA控制部件利用系统I/O控制器可以根据物理内存分配的页表来自动进行用户操作系统的物理地址到真实机器地址的翻译。这样,物理I/O设备就能正确地进行DMA操作。对于不支持I/O虚拟化的系统平台,需要设备DMA控制部件进行地址翻译处理工作。系统可以在物理内存分配时,考虑到活跃用户虚拟机的内存使用需求,适当加大分配粒度。从而可以简化设备DMA控制部件的工作。
较佳地,由于目前多数物理I/O设备只支持独占式访问,因此,I/O设备分配控制部件2会将管理员设定的部分物理I/O设备统一分配给一个用户虚拟机使用,并把该用户虚拟机称为活跃用户虚拟机。活跃用户虚拟机是系统用户直接操作和交互使用的用户虚拟机,且可以保持PC用户使用模式不变。由于直接访问和使用物理I/O设备,活跃用户虚拟机的虚拟化开销和普通用户虚拟机相比较小。
相应于本发明的一种虚拟机控制系统,还提供该虚拟机控制系统的工作方法,图3是本发明一种虚拟机控制系统的工作方法的流程图,如图3所示,所述方法包括下列步骤:
步骤100.I/O设备分配控制部件根据管理员的指令和物理设备探测部件的探测结果管理和控制物理I/O设备和软件虚拟I/O设备的分配,混合I/O设备空间虚拟化部件根据所述分配结果配置混合I/O设备空间;
步骤200.活跃用户虚拟机的用户发出I/O访问请求,混合I/O设备空间虚拟化部件接收所述I/O访问请求,判断所述I/O访问请求是否是针对物理I/O设备,若是,则执行步骤300;否则,执行步骤400;
步骤300.混合I/O设备空间虚拟化部件发送所述I/O访问请求到物理设备直接访问部件,物理设备直接访问部件对所述物理I/O设备直接进行访问;
图4是本发明中对物理I/O设备直接进行访问的方法流程图,如图4所示,所述步骤300,包括下列步骤:
步骤310.混合I/O设备空间虚拟化部件检查内部缓存的PCI配置空间信息,判断缓存是否命中,若是,则执行步骤320;否则,执行步骤330;
步骤320.直接在缓存中进行相应的PCI配置空间信息的读写;
对于用户虚拟机的I/O访问请求,其中一部分I/O访问请求的访问结果可以由虚拟机控制系统暂存,如:查询设备信息等。当出现这类I/O访问请求,并且缓存中有对应的信息时,虚拟机控制系统可以直接从缓存中返回I/O访问结果。步骤330.判断所述I/O访问请求是否需要进行DMA操作,若是,则执行步骤340;否则,执行步骤350;
对于一部分I/O访问请求,其需要I/O设备进行DMA操作。由于用户虚拟机和物理机器之间的物理地址不一致,所以需要在DMA地址翻译和转换后,才能把该请求发送给I/O设备。据此,需要事先判断是否需要进行DMA操作。
步骤340:设备DMA控制部件进行物理I/O设备DMA内存地址的转换,然后把地址转换结果转发给物理设备直接访问部件处理;
步骤350.物理设备直接访问部件对所述物理I/O设备直接进行访问,并检测资源访问是否冲突,如果冲突则返回出错信息;否则返回所述I/O请求的处理结果。
步骤400.混合I/O设备空间虚拟化部件转发所述I/O请求给I/O设备模拟部件进行处理;
图5是本发明中混合I/O设备空间虚拟化部件转发I/O请求的方法流程图,如图5所示,所述步骤400,包括下列步骤:
步骤410.I/O设备模拟部件接收所述I/O请求并进行实际的I/O操作处理,如:读写外部数据信息;
步骤420.I/O设备模拟部件根据处理结果,返回所述I/O请求的访问结果。
至此,对软件虚拟I/O设备访问结束。
在上述I/O访问过程中,当I/O设备产生中断时,对中断的处理操作步骤如下:
中断信号都是由物理I/O设备发出,用户虚拟机并不会产生中断信号,而是由物理I/O设备或是I/O设备模拟程序产生中断信号。而I/O设备模拟程序产生的中断信号一般也是基于其下的物理I/O设备产生的中断信号。
图6是本发明中对中断的处理操作步骤流程图,如图6所示,所述对中断的处理操作步骤如下:
100’.当中断发生时,首先获得中断信号对应的物理平台的中断向量,然后根据I/O设备分配控制部件的分配结果,判断该中断向量是否分配给用户虚拟机或者服务域系统,若是,执行步骤300’;否则,执行步骤200’;
200’.虚拟机控制系统直接调用内部的中断处理逻辑进行中断处理;
300’.判断与所述中断向量关联的多个I/O设备是否全部属于服务域系统,若是,执行步骤400’;否则,执行步骤500’;
同一个中断向量可以和多个I/O设备关联,即多个I/O设备共享某一个中断向量。
400’.向服务域系统发送中断信号事件来调用服务域系统的中断处理函数进行中断处理;
500’.判断与所述中断向量关联的多个I/O设备是否全部属于活跃用户虚拟机,若是,则执行步骤600’;否则,执行步骤700’;
600’.通过CPU硬件虚拟化机制向活跃用户虚拟机插入相应的中断请求,以改变活跃用户虚拟机中虚拟中断控制器的状态,实现中断操作;
700’.与所述中断向量关联的多个I/O设备既包括服务域系统设备,又包括活跃用户虚拟机系统设备,即:服务域系统设备和活跃用户虚拟机系统设备共享所述中断向量,那么将所述中断请求交付给优先级高的系统进行处理;
800’.判断所述优先级高的系统在规定时间内,是否成功地处理了所述中断请求(如发送EOI),若是,则执行步骤900’;否则,执行步骤1000’;
900’.清零失败记数值(Fcount),并跳至步骤1200’;
1000’.失败记数值(Fcount)加1,并把所述中断请求发送给低优先级系统进行中断处理;
1100’.如果失败记数值(Fcount)大于3,则调整服务域系统设备和活跃用户虚拟机系统设备的优先级;
1200’.中断处理结束。
为了对本发明进行更好地说明和描述,下图给出了本发明的一个具体实施例。图7是本发明的虚拟机控制系统的一实施例的示意图,如图7所示,在本实施例中,虚拟机控制系统根据管理员的指定,为活跃用户虚拟机提供除磁盘和网卡之外的物理设备直接访问支持,同时,活跃用户虚拟机系统使用由I/O设备模拟部件提供的虚拟磁盘和网卡设备。
如图7所示,在本实施例中,活跃用户虚拟机中运行着标准的Windows XP系统。这也是用户最经常使用的系统,用户通过平台物理设备,如:鼠标/键盘,连接显卡的显示器等,直接操作该系统。这时活跃用户虚拟机系统用户的使用模式和普通PC用户的使用模式一致。如果当用户需要使用多个FedoraCore系统进行开发或调试时,其还可以在同一平台上的多个普通用户虚拟机中启动标准的Fedora Core系统进行工作。值得说明的是,和以往的Host方式的虚拟机控制系统不同,本系统中活跃用户虚拟机和普通用户虚拟机系统彼此独立,相互隔离,不会由于活跃用户虚拟机的故障而影响普通用户虚拟机系统的运行。
如图7所示,服务域可以通过在I/O设备模拟部件中的程序来监控活跃用户虚拟机对磁盘和网络的数据访问。由于磁盘和网络是计算系统的主要外部数据来源,因此,可以通过对磁盘和网络访问的监控对系统进行有效管理和保护,比如:系统恢复、病毒防护、入侵检测、性能分析等等。值得说明的是,由于本I/O设备模拟部件对外模拟的是标准的磁盘和网络设备接口,因此,上述管理和保护行为具有良好的通用性,并且可以实现全生命周期(即无论用户系统处于启动、关机、故障等何种状态)的系统管理。
此外,服务域的管理程序还可以对外提供系统管理接口。这样,管理员就可以通过管理服务器就进行大规模环境的集中管理和控制,且如上所述,这种集中管理是独立于用户系统进行的,具有良好的可管理性、通用性。
本发明的有益效果在于:
1.本发明的虚拟机控制系统及其工作方法,适合于PC应用环境下的大规模系统管理,可以在大规模PC应用环境下以独立于用户系统和应用程序的方式进行系统资源管理和控制;
2.使用本发明的虚拟机控制系统及其工作方法,能够保持PC用户的使用模式基本不变,即:虚拟机系统用户可以和普通PC用户一样使用系统物理显卡、声卡、鼠标、键盘等I/O设备,系统用户基本感觉不到自己使用的是虚拟机系统;
3.本发明的虚拟机控制系统及其工作方法,具有良好的系统可管理性、通用性和高资源利用率;
4.本发明的虚拟机控制系统及其工作方法,对于直接访问的I/O设备可以减少虚拟化的额外开销。
通过结合附图对本发明具体实施例的描述,本发明的其它方面及特征对本领域的技术人员而言是显而易见的。
以上对本发明的具体实施例进行了描述和说明,这些实施例应被认为其只是示例性的,并不用于对本发明进行限制,本发明应根据所附的权利要求进行解释。

Claims (17)

1.一种虚拟机控制系统,其特征在于,基于混合I/O设备空间下实现以独立于用户系统和应用程序的方式进行系统管理和控制,所述系统,包括:物理设备探测部件、I/O设备分配控制部件、混合I/O设备空间虚拟化部件、I/O设备模拟部件和物理设备直接访问部件,其中:
物理设备探测部件,用于在虚拟机控制系统启动和运行期间探测物理平台上的物理I/O设备构成,并把探测结果发送给I/O设备分配控制部件;
I/O设备分配控制部件,用于根据管理员的指令和物理设备探测部件的探测结果管理和控制所述物理I/O设备和虚拟I/O设备的分配;
混合I/O设备空间虚拟化部件,用于根据I/O设备分配控制部件的分配结果实现混合I/O设备空间的虚拟化,配置由物理I/O设备和虚拟的I/O设备映射成的统一的I/O设备空间,以及根据所述分配结果判断把哪些I/O请求交给I/O设备模拟部件进行软件模拟,把哪些I/O请求交给物理I/O设备直接访问部件进行直接物理访问;
I/O设备模拟部件,用于将物理I/O设备模拟为虚拟I/O设备,同时,接收I/O访问、访问外部信息和返回I/O操作结果;
物理设备直接访问部件,用于负责对指定的物理I/O设备直接进行访问。
2.根据权利要求1所述的虚拟机控制系统,其特征在于,所述系统,包括:
设备中断转发控制部件,用于转发所述物理I/O设备产生的中断信号,而具体的转发方向根据I/O设备分配控制部件的设备分配结果决定。
3.根据权利要求2所述的虚拟机控制系统,其特征在于,所述系统,包括:
设备直接内存访问控制部件,用于控制物理设备直接内存访问内存地址的转换和翻译。
4.根据权利要求1所述的虚拟机控制系统,其特征在于,所述混合I/O设备空间虚拟化部件,输入是用户虚拟机的I/O访问请求,输出是转发给所述I/O设备模拟部件或所述物理设备直接访问部件的I/O访问请求。
5.根据权利要求3所述的虚拟机控制系统,其特征在于,所述混合I/O设备空间虚拟化部件接收I/O访问请求,检查所述I/O请求是否针对物理I/O设备,如果访问的是物理I/O设备,则检查内部缓存的配置空间信息,如果缓存命中,则直接在缓存中进行相应的配置空间信息的读写;如果未命中,则设备直接内存访问控制部件控制物理I/O设备直接内存访问内存地址的转换,再把该I/O请求转发给物理设备直接访问部件;如果访问的是虚拟的I/O设备,则把该I/O请求转发给I/O设备模拟部件处理。
6.根据权利要求3所述的虚拟机控制系统,其特征在于,所述I/O设备分配控制部件,与混合I/O设备空间虚拟化部件、物理设备探测部件、设备中断转发控制部件和设备DMA控制部件进行交互。
7.根据权利要求1所述的虚拟机控制系统,其特征在于,所述I/O设备模拟部件能够同时为多个用户虚拟机提供设备模拟服务。
8.根据权利要求1所述的虚拟机控制系统,其特征在于,所述物理设备直接访问部件,用于检测资源访问是否冲突。
9.根据权利要求2所述的虚拟机控制系统,其特征在于,所述设备中断转发控制部件对于直接赋给用户虚拟机使用的第一物理I/O设备和基于第二物理I/O设备的虚拟设备,采用不同的中断处理方式:
当第一物理I/O设备产生了中断信号,设备中断转发控制部件调用Host/Guest中断向量映射关系,并把第一物理I/O设备在虚拟机控制系统的中断向量映射成用户虚拟机的中断向量,最后,由设备中断转发控制部件向用户虚拟机插入所述用户虚拟机的中断向量;
当第二物理I/O设备产生了中断信号,设备中断转发控制部件通知给I/O设备模拟部件,然后,I/O设备模拟部件进行相应的处理;随后,基于第二物理I/O设备的虚拟设备的模拟程序发送中断向量请求给用户虚拟机。
10.根据权利要求1所述的虚拟机控制系统,其特征在于,所述I/O设备分配控制部件将管理员设定的部分物理I/O设备统一分配给一个用户虚拟机使用。
11.根据权利要求9所述的虚拟机控制系统,其特征在于,所述映射是通过对基址寄存器的模拟和控制,实现控制I/O设备的I/O地址空间到内存空间的映射。
12.根据权利要求1所述的虚拟机控制系统,其特征在于,所述系统,采用I/O设备配置空间缓存机制,有效控制用户虚拟机对物理I/O设备空间的访问。
13.根据权利要求1所述的虚拟机控制系统,其特征在于,所述I/O设备分配控制部件,为用户虚拟机提供虚拟中断控制器。
14.一种虚拟机控制系统的工作方法,其特征在于,基于混合I/O设备空间下实现以独立于用户系统和应用程序的方式进行系统管理和控制,所述方法,包括下列步骤:
步骤100.I/O设备分配控制部件根据管理员的指令和物理设备探测部件的探测结果管理和控制物理I/O设备和软件虚拟I/O设备的分配,混合I/O设备空间虚拟化部件根据所述分配结果配置混合I/O设备空间;
步骤200.用户虚拟机的用户发出I/O访问请求,混合I/O设备空间虚拟化部件接收所述I/O访问请求,判断所述I/O访问请求是否是针对物理I/O设备,若是,则执行步骤300;否则,执行步骤400;
步骤300.混合I/O设备空间虚拟化部件发送所述I/O访问请求到物理设备直接访问部件,物理设备直接访问部件对所述物理I/O设备直接进行访问;
步骤400.混合I/O设备空间虚拟化部件转发所述I/O请求给I/O设备模拟部件进行处理。
15.根据权利要求14所述的虚拟机控制系统的工作方法,其特征在于,所述步骤300,包括下列步骤:
步骤310.混合I/O设备空间虚拟化部件检查内部缓存的PCI配置空间信息,判断缓存是否命中,若是,则执行步骤320;否则,执行步骤330;
步骤320.直接在内部缓存中进行相应的PCI配置空间信息的读写;
步骤330.判断所述I/O访问请求是否需要进行DMA操作,若是,则执行步骤340;否则,执行步骤350;
步骤340:设备DMA控制部件进行物理I/O设备DMA内存地址的转换,然后把地址转换结果转发给物理设备直接访问部件处理。
步骤350.物理设备直接访问部件对所述物理I/O设备直接进行访问,检测资源访问是否冲突,如果冲突则返回出错信息,否则返回所述I/O请求的处理结果。
16.根据权利要求14所述的虚拟机控制系统的工作方法,其特征在于,所述步骤400,包括下列步骤:
步骤410.I/O设备模拟部件接收所述I/O请求并进行I/O操作处理;
步骤420.I/O设备模拟部件根据处理结果,返回所述I/O请求的访问结果。
17.根据权利要求14所述的虚拟机控制系统的工作方法,其特征在于,所述方法,包括下列步骤:
步骤100’.物理I/O设备产生中断时,首先获得中断信号对应的物理平台的中断向量,然后根据I/O设备分配控制部件的分配结果,判断该中断向量是否分配给用户虚拟机或者服务域系统,若是,执行步骤300’;否则,执行步骤200’;
步骤200’.虚拟机控制系统直接调用内部的中断处理逻辑进行中断处理;
步骤300’.判断与所述中断向量关联的多个I/O设备是否全部属于服务域系统,若是,执行步骤400’;否则,执行步骤500’;
步骤400’.向服务域系统发送中断信号事件来调用服务域系统的中断处理函数进行中断处理;
步骤500’.判断与所述中断向量关联的多个I/O设备是否全部属于用户虚拟机,若是,则执行步骤600’;否则,执行步骤700’;
步骤600’.通过CPU硬件虚拟化机制向活跃用户虚拟机插入相应的中断请求,以改变活跃用户虚拟机中虚拟中断控制器的状态,实现中断操作;
步骤700’.与所述中断向量关联的多个I/O设备既包括服务域系统设备,又包括用户虚拟机系统设备,将所述中断请求交付给优先级高的系统进行处理;
步骤800’.判断所述优先级高的系统在规定时间内,是否成功地处理了所述中断请求,若是,则执行步骤900’;否则,执行步骤1000’;
步骤900’.清零失败记数值,并跳至步骤1200’;
步骤1000’.失败记数值加1,并把所述中断请求发送给低优先级系统进行中断处理;
步骤1100’.如果失败记数值大于3,则调整服务域系统设备和用户虚拟机系统设备的优先级;
步骤1200’.中断处理结束。
CN2009102434339A 2009-12-23 2009-12-23 一种虚拟机控制系统及其工作方法 Active CN101876954B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009102434339A CN101876954B (zh) 2009-12-23 2009-12-23 一种虚拟机控制系统及其工作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009102434339A CN101876954B (zh) 2009-12-23 2009-12-23 一种虚拟机控制系统及其工作方法

Publications (2)

Publication Number Publication Date
CN101876954A true CN101876954A (zh) 2010-11-03
CN101876954B CN101876954B (zh) 2012-08-15

Family

ID=43019512

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009102434339A Active CN101876954B (zh) 2009-12-23 2009-12-23 一种虚拟机控制系统及其工作方法

Country Status (1)

Country Link
CN (1) CN101876954B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262557A (zh) * 2010-05-25 2011-11-30 运软网络科技(上海)有限公司 通过总线架构构建虚拟机监控器的方法及性能服务框架
CN102799465A (zh) * 2012-06-30 2012-11-28 华为技术有限公司 分布式虚拟化系统的虚拟中断管理方法及装置
CN104123170A (zh) * 2013-04-23 2014-10-29 杭州迪普科技有限公司 一种虚拟机控制装置和方法
CN104503825A (zh) * 2014-12-29 2015-04-08 西安电子科技大学 一种基于kvm混合式设备虚拟化方法
CN105893289A (zh) * 2016-03-30 2016-08-24 华为技术有限公司 内存映射输入输出地址分配方法、装置及计算机系统
CN107766120A (zh) * 2016-08-23 2018-03-06 华为技术有限公司 一种虚拟机中对象信息的记录方法及相关设备
CN113094153A (zh) * 2021-06-09 2021-07-09 北京泽塔云科技股份有限公司 一种用于提升虚拟化性能的系统及物理机
WO2021185135A1 (zh) * 2020-03-17 2021-09-23 阿里巴巴集团控股有限公司 实现消息信号中断的方法、装置和设备
CN114978589A (zh) * 2022-04-13 2022-08-30 中国科学院信息工程研究所 一种轻量级云操作系统及其构建方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7318141B2 (en) * 2002-12-17 2008-01-08 Intel Corporation Methods and systems to control virtual machines
CN101206582B (zh) * 2006-12-22 2010-10-06 联想(北京)有限公司 一种虚拟机系统及其处理方法
CN100530164C (zh) * 2007-12-29 2009-08-19 中国科学院计算技术研究所 一种risc处理器及其寄存器标志位处理方法

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102262557B (zh) * 2010-05-25 2015-01-21 运软网络科技(上海)有限公司 通过总线架构构建虚拟机监控器的方法及性能服务框架
CN102262557A (zh) * 2010-05-25 2011-11-30 运软网络科技(上海)有限公司 通过总线架构构建虚拟机监控器的方法及性能服务框架
CN102799465A (zh) * 2012-06-30 2012-11-28 华为技术有限公司 分布式虚拟化系统的虚拟中断管理方法及装置
CN102799465B (zh) * 2012-06-30 2015-05-27 华为技术有限公司 分布式虚拟化系统的虚拟中断管理方法及装置
CN104123170B (zh) * 2013-04-23 2018-02-09 杭州迪普科技股份有限公司 一种虚拟机控制装置和方法
CN104123170A (zh) * 2013-04-23 2014-10-29 杭州迪普科技有限公司 一种虚拟机控制装置和方法
CN104503825A (zh) * 2014-12-29 2015-04-08 西安电子科技大学 一种基于kvm混合式设备虚拟化方法
CN104503825B (zh) * 2014-12-29 2017-11-24 西安电子科技大学 一种基于kvm混合式设备虚拟化方法
CN105893289A (zh) * 2016-03-30 2016-08-24 华为技术有限公司 内存映射输入输出地址分配方法、装置及计算机系统
CN105893289B (zh) * 2016-03-30 2019-02-12 华为技术有限公司 内存映射输入输出地址分配方法、装置及计算机系统
CN107766120A (zh) * 2016-08-23 2018-03-06 华为技术有限公司 一种虚拟机中对象信息的记录方法及相关设备
CN107766120B (zh) * 2016-08-23 2021-08-20 华为技术有限公司 一种虚拟机中对象信息的记录方法及相关设备
WO2021185135A1 (zh) * 2020-03-17 2021-09-23 阿里巴巴集团控股有限公司 实现消息信号中断的方法、装置和设备
CN113094153A (zh) * 2021-06-09 2021-07-09 北京泽塔云科技股份有限公司 一种用于提升虚拟化性能的系统及物理机
CN114978589A (zh) * 2022-04-13 2022-08-30 中国科学院信息工程研究所 一种轻量级云操作系统及其构建方法
CN114978589B (zh) * 2022-04-13 2023-08-08 中国科学院信息工程研究所 一种轻量级云操作系统及其构建方法

Also Published As

Publication number Publication date
CN101876954B (zh) 2012-08-15

Similar Documents

Publication Publication Date Title
CN101876954B (zh) 一种虚拟机控制系统及其工作方法
US20240111566A1 (en) Multi-hypervisor virtual machines
Zhou et al. A bare-metal and asymmetric partitioning approach to client virtualization
CN101751284B (zh) 一种分布式虚拟机监控器的i/o资源调度方法
CN109522087B (zh) 基于国产申威处理器的虚拟机构建方法和系统
CN103309786B (zh) 用于在非可抢占式图形处理单元上交互调试的方法和装置
US7558723B2 (en) Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices
CN103034524A (zh) 半虚拟化的虚拟gpu
Burgio et al. A software stack for next-generation automotive systems on many-core heterogeneous platforms
US20130024646A1 (en) Method and Simulator for Simulating Multiprocessor Architecture Remote Memory Access
CN103064796B (zh) 虚拟机内存的共享方法与计算机系统
CN104123233A (zh) 一种虚拟机大容量内存共享方法
CN105830026A (zh) 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法
CN104299466A (zh) 一种基于云计算平台的远程硬件实验方法及系统
Wang et al. Enabling cross-isa offloading for cots binaries
JP2023545818A (ja) チップ・システム、仮想割り込み処理方法および対応する装置
CN103793260A (zh) 一种平台虚拟化系统
CN110058946B (zh) 设备虚拟化方法、装置、设备及存储介质
US20050108440A1 (en) Method and system for coalescing input output accesses to a virtual device
WO2022001808A1 (zh) 一种系统以及中断处理方法
CN104503825A (zh) 一种基于kvm混合式设备虚拟化方法
CN105556473A (zh) 一种i/o任务处理的方法、设备和系统
US20100280817A1 (en) Direct pointer access and xip redirector for emulation of memory-mapped devices
Chang et al. On construction and performance evaluation of a virtual desktop infrastructure with GPU accelerated
Lai et al. Fast profiling framework and race detection for heterogeneous system

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220506

Address after: 100095 room 217, second floor, building 17, Chuangke town community supporting commercial building, Wenquan Town, Haidian District, Beijing

Patentee after: Zhongkehai micro (Beijing) Technology Co.,Ltd.

Address before: 100080 No. 6 South Road, Zhongguancun Academy of Sciences, Beijing, Haidian District

Patentee before: Institute of Computing Technology, Chinese Academy of Sciences