CN101739283A - 一种计算机及虚拟系统直接访问计算机硬件的方法 - Google Patents

一种计算机及虚拟系统直接访问计算机硬件的方法 Download PDF

Info

Publication number
CN101739283A
CN101739283A CN200810226934A CN200810226934A CN101739283A CN 101739283 A CN101739283 A CN 101739283A CN 200810226934 A CN200810226934 A CN 200810226934A CN 200810226934 A CN200810226934 A CN 200810226934A CN 101739283 A CN101739283 A CN 101739283A
Authority
CN
China
Prior art keywords
equipment
virtual
operating system
pci
configuration
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
CN200810226934A
Other languages
English (en)
Other versions
CN101739283B (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.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing Ltd
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 Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CN200810226934.1A priority Critical patent/CN101739283B/zh
Priority to US12/623,076 priority patent/US8037210B2/en
Publication of CN101739283A publication Critical patent/CN101739283A/zh
Application granted granted Critical
Publication of CN101739283B publication Critical patent/CN101739283B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种计算机及虚拟系统直接访问计算机硬件的方法,其中计算机包括:硬件平台,具有第一类型设备、第二类型设备及第三类型设备;虚拟机管理模块;第一操作模块;第二操作模块;虚拟机管理模块包括第一类型设备配置模块,用于将第一类型设备直接配置给主操作系统使用;第二类型设备配置模块,用于将第二类型设备直接配置给客户操作系统使用;第三类型设备配置模块,用于对第三类型设备进行虚拟,产生虚拟第三类型设备,并将虚拟第三类型设备分别配置给主操作系统和客户操作系统使用。本发明整体考虑硬件设备的分配和使用,且与BIOS使用相结合,更好的解决虚拟系统的硬件和软件兼容性。

Description

一种计算机及虚拟系统直接访问计算机硬件的方法
技术领域
本发明涉及计算机领域,特别是指一种基于虚拟技术的计算机以及虚拟系统直接访问计算机硬件的方法。
背景技术
在计算机领域的虚拟机技术领域中,如图1所示,虚拟机系统通常包括安装在计算机硬件平台上的虚拟机管理器(如Xen中的Hypervisor)以及多个操作系统,其中一个操作系统为Domain 0,即主操作系统,其余为Guest OS,即客户操作系统,在虚拟机环境下,硬件平台中的硬件设备可以被Domain 0直接使用,但对于Guest OS来讲,通常使用的硬件设备是由虚拟机管理器为该Guest OS虚拟的硬件设备。这样大大影响了Guest OS的性能,为了使GuestOS能够有更好的对硬件设备的访问性能,可以在Guest OS直接访问硬件方面进行改进,而现有的Guest OS直接访问硬件的方面的设计,只考虑某个PCI设备的直接访问硬件,没有在软件和硬件整体直接访问的设计,这样硬件平台中的设备往往会存在兼容性问题。而且现有的架构,硬件平台中的某个硬件PCI设备DHA(Direct Hardware Access,硬件直接访问)设计时候,只考虑了将硬件PCI设备DHA给某个Guest OS,要想将硬件平台中的更多的硬件DHA给某个操作系统使用,需要针对每个硬件设备分别进行设计,且需要对Domain0操作系统提出更高的要求,这样给编程和开发带来很多麻烦。
发明人在实现本发明的过程中,发现现有技术中至少存在如下问题:
在硬件方面,可以将某个硬件设备DHA给某个虚拟操作系统使用,但软件方面并没有这样的支持,即对于某个虚拟操作系统来讲,BIOS仍是虚拟的,导致该硬件设备对于多个操作系统,出现不兼容的问题;另一方面,不能从整体上将硬件平台中的多个硬件只DHA给某个操作系统使用。
发明内容
本发明要解决的技术问题是提供一种计算机及虚拟系统直接访问计算机硬件的方法,从整体考虑硬件设备的分配和使用,更好的解决了虚拟系统的硬件和软件兼容性问题。
为解决上述技术问题,本发明的实施例提供技术方案如下:
一方面,提供一种计算机,包括:
硬件平台,所述硬件平台上设备具有第一类型设备、第二类型设备及第三类型设备;
虚拟机管理模块,安装有虚拟机管理器;
第一操作模块,安装有主操作系统;
第二操作模块,安装有客户操作系统,所述客户操作系统安装在所述虚拟机管理器上;所述虚拟机管理模块包括:
第一类型设备配置模块,用于将所述第一类型设备直接配置给所述主操作系统使用,所述第一类型设备为专属于所述主操作系统使用的设备;
第二类型设备配置模块,用于将所述第二类型设备直接配置给所述客户操作系统使用,所述第二类型设备为专属于所述客户操作系统使用的设备;
第三类型设备配置模块,用于对所述硬件平台中的第三类型设备进行虚拟,产生虚拟第三类型设备,并将所述虚拟第三类型设备分别配置给所述主操作系统和所述客户操作系统使用。
优选的,所述第一类型设备包括:PCI设备和所述主操作系统使用的BIOS;
所述第二类型设备包括:PCI设备,第一类型时钟,高级配置电源接口和所述客户操作系统使用的BIOS;
所述第三类型设备包括:第二类型时钟、中断控制器和端口模式寄存器。
优选的,所述第一类型时钟包括:实时时钟,高级配置电源接口计时器时钟;
所述第二类型时钟包括:可编程间隔定时器时钟,高精度计时器时钟;
所述中断控制器包括:中断控制器,高级可编程中断控制器;
所述PCI设备包括:网卡。
优选的,所述第二类型设备配置模块包括:
PCI配置模块,用于为所述PCI设备配置PCI配置空间,所述PCI配置空间至少包括用于标识所述PCI设备的头标区和用于存储区所述PCI设备相关信息的设备相关区;
I/O配置模块,用于为所述PCI设备和所述高级配置电源接口配置I/O端口;
内存配置模块,用于为所述PCI设备和所述高级配置电源接口配置内存资源;
中断配置模块,用于为所述PCI设备建立所述中断控制器模式和所述高级可编程中断控制器模式的中断号的映射关系。
优选的,所述客户操作系统使用的BIOS包括:
第一处理模块,用于修改内存分布表中的所述高级配置电源接口内存地址和内存大小,生成一新内存分布表,按照所述新内存分布表为所述客户操作系统提供真实的内存资源;
第二处理模块,用于修改对称多处理系统表,生成一新对称多处理系统表,按照所述新对称多处理系统表为所述客户操作系统提供虚拟的高级可编程中断控制器;
第三处理模块,用于修改虚拟高级配置电源接口对应的MADT表,生成一新MADT表,按照所述新MADT表为所述客户操作系统提供真实的高级配置电源接口。
优选的,所述第三类型设备配置模块包括:
I/O配置模块,用于为虚拟的所述第二类型时钟、虚拟的所述中断控制器配置I/O端口;
内存配置模块,用于为虚拟的所述第二类型时钟、虚拟的所述中断控制器配置虚拟内存。
优选的,所述虚拟的所述中断控制器包括:
I/O端口的虚拟中断控制器和/或CPU的虚拟中断控制器。
优选的,所述第一类型设备配置模块包括:
PCI配置模块,用于为所述PCI设备配置PCI配置空间,所述PCI配置空间至少包括用于标识所述PCI设备的头标区和用于存储区所述PCI设备相关信息的设备相关区;
I/O配置模块,用于为所述PCI设备配置I/O端口;
内存配置模块,用于为所述PCI设备配置内存资源。
另一方面,还提供一种虚拟系统直接访问计算机硬件的方法,包括:
将计算机硬件平台中的第一类型设备直接配置给所述计算机的主操作系统使用;
将计算机硬件平台中的第二类型设备直接配置给所述计算机的客户操作系统使用;
对计算机硬件平台中的第三类型设备进行虚拟,产生虚拟第三类型设备,并将所述虚拟第三类型设备分别配置给所述主操作系统和所述客户操作系统使用。
优选的,所述将计算机硬件平台中的第二类型设备直接配置给所述计算机的客户操作系统使用的步骤包括:
为所述第二类型设备中的PCI设备配置PCI配置空间,所述PCI配置空间至少包括用于标识所述PCI设备的头标区和用于存储区所述PCI设备相关信息的设备相关区;
为所述第二类型设备中的PCI设备和高级配置电源接口配置I/O端口;
为所述第二类型设备中的PCI设备和高级配置电源接口配置内存资源;
为所述第二类型设备中的PCI设备建立中断控制器模式和高级可编程中断控制器模式的中断号的映射关系。
优选的,上述方法还包括:修改计算机的BIOS中的内存分布表中的所述高级配置电源接口内存地址和内存大小,生成一新内存分布表,按照所述新内存分布表为所述客户操作系统提供真实的内存资源;
修改计算机的BIOS中的对称多处理系统表,生成一新对称多处理系统表,按照所述新对称多处理系统表为所述客户操作系统提供虚拟的高级可编程中断控制器;
修改计算机的BIOS中的虚拟高级配置电源接口对应的MADT表,生成一新MADT表,按照所述新MADT表为所述客户操作系统提供真实的高级配置电源接口。
优选的,所述将所述虚拟第三类型设备分别配置给所述主操作系统和所述客户操作系统使用的步骤包括:
为虚拟的所述第三类型设备中的虚拟的第二类型时钟、虚拟的中断控制器配置I/O端口;
为虚拟的所述第三类型设备中的虚拟的第二类型时钟、虚拟的中断控制器配置虚拟内存。
优选的,所述将计算机硬件平台中的第一类型设备直接配置给所述主操作系统使用的步骤包括:
为所述第一类型设备中的PCI设备配置PCI配置空间,所述PCI配置空间至少包括用于标识所述PCI设备的头标区和用于存储区所述PCI设备相关信息的设备相关区;
为所述第一类型设备中的PCI设备配置I/O端口。
为所述第一类型设备中的PCI设备配置内存资源。
本发明的实施例具有以下有益效果:
上述技术方案通过将硬件平台中的第二类型设备直接给客户操作系统使用,将第三类型设备虚拟给主操作系统和客户操作系统使用,将第一类型设备直接给主操作系统使用,将操作系统对硬件设备的控制放在虚拟机管理器中,统一考虑设备的分配和使用,从整体上将硬件平台中的硬件只直接DHA给某个操作系统使用,并且跟主板的BIOS使用相结合,更好的解决了虚拟系统的硬件和软件兼容性问题。
附图说明
图1为现有的虚拟机系统架构示意图;
图2为本发明的实施例计算机架构示意图;
图3为图2所示计算机的一具体架构示意图;
图4为图3所示计算机的一具体架构示意图;
图5为本发明的实施例虚拟系统直接访问计算机硬件的方法流程示意图。
具体实施方式
为使本发明的实施例要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
本发明的实施例针对现有技术中硬件设备在被虚拟操作系统直接访问的时候,计算机的BIOS中,该硬件设备的相关信息并没有相应地修改为能够被虚拟操作系统直接使用的状态,也就是说,该BIOS对于虚拟操作系统来讲是虚拟的,而不是真实的,这样虚拟操作系统在直接访问该硬件设备时,会出现计算机的多个操作系统(包括Domain 0和多个Guest OS)出现不兼容的现象,以及当该硬件设备DHA给其中一个Guest OS使用时,该Domain 0仍然能够控制和使用该硬件设备,要想将该硬件设备只DHA给Guest OS使用时,需要对Domain 0进行设计,给编程带来很多麻烦的问题,提供一种计算机及虚拟系统直接访问计算机硬件的方法,将操作系统对硬件设备的控制放在虚拟机管理器中,统一考虑设备的分配和使用,减少编程开发过程中的问题。
如图2所示,本发明的实施例计算机,包括:
硬件平台,具有第一类型设备、第二类型设备及第三类型设备,该硬件平台包括计算机的真实物理设备,如主板,以及主板上任一硬件设备,如声卡,PCI设备,时钟,中断控制器,BIOS,南桥芯片等;
虚拟机管理模块,安装有虚拟机管理器VMM(Virtual Machine Manager),如XEN中的Hypervisor;
第一操作模块,安装有第一操作系统,如Domain 0主操作系统;
第二操作模块,安装有第二操作系统,所述第二操作系统安装在所述虚拟机管理器上,该第二操作系统如客户操作系统Guest OS;
其中,所述虚拟机管理模块包括:
第一类型设备配置模块,用于将所述第一类型设备直接配置给所述主操作系统使用,所述第一类型设备为专属于所述主操作系统使用的设备;
第二类型设备配置模块,用于将所述第二类型设备直接配置给所述客户操作系统使用,所述第二类型设备为专属于所述客户操作系统使用的设备;
第三类型设备配置模块,用于对所述硬件平台中的第三类型设备进行虚拟,产生虚拟第三类型设备,并将所述虚拟第三类型设备分别配置给所述主操作系统和所述客户操作系统使用。
该实施例通过将硬件平台中的第二类型设备直接给客户操作系统使用,将第三类型设备虚拟给主操作系统和客户操作系统使用,将第一类型设备直接给主操作系统使用,将操作系统对硬件设备的控制放在虚拟机管理器中,统一考虑设备的分配和使用,使硬件设备直接只DHA给某个操作系统使用,减少了开发过程中的问题,并且跟主板的BIOS使用相结合,更好的解决了虚拟系统的硬件和软件兼容性问题。
如图3所示,在上述图2所示实施例的基础上,上述第二类型设备包括:PCI设备,第一类型时钟,高级配置电源接口(ACPI)和BIOS;当然该第二类型设备还包括其他的计算机设备,如传统的计算机设备,也可以说,该第一类型的设备包括:除虚拟机管理器需要为主操作系统和客户操作系统虚拟的设备以及被主操作系统直接使用的设备之外的所有设备,如还可以包括FLASH设备,该第二类型设备在虚拟机管理模块中进行配置和管理,可以只被DHA给客户操作系统使用;该第一类型时钟包括:实时时钟(RTC时钟),高级配置电源接口计时器时钟(PM时钟);
所述第三类型设备包括:第二类型时钟、中断控制器和端口模式寄存器;该第二类型时钟包括:可编程间隔定时器时钟(PIT时钟),高精度计时器时钟(HPET时钟);该中断控制器包括:中断控制器(PIC),高级可编程中断控制器(APIC);
所述第一类型设备包括:PCI设备和主操作系统使用的BIOS,该PCI设备可以为网卡等,该第一类型设备在虚拟机管理模块中被控制,也可以只被DHA给主操作系统使用,如此处的网卡,就对客户操作系统设置为禁用,而对主操作系统开放。
对于计算机来讲,主板上的BIOS只有一个,因此,上述第二类型设备中所包括的客户操作系统使用的BIOS和第一类型设备中所包括的主操作系统使用的BIOS为同一个BIOS,在实际的设计中,在VMM中将该主板的BIOS设置为共享,该BIOS就可以被主操作系统直接访问,也可以被该客户操作系统直接访问。该BIOS为主操作系统访问某一硬件设备或者客户操作系统访问某一硬件设备提供硬件信息支持。
为了使某一操作系统,如Guest OS能够直接访问某一硬件设备,需要为该Guest OS配置该硬件设备,因此,
如图4所示,在上述实施例的基础上,上述第二类型设备配置模块包括:
PCI配置模块,用于为上述第二类型设备中的PCI设备配置PCI配置空间,所述PCI配置空间至少包括用于标识所述PCI设备的头标区和用于存储区所述PCI设备相关信息的设备相关区;
PCI总线配置空间是容量为256字节并具有特定记录结构的一个地址空间,该空间分为头标区和设备相关区两部分。在每个域中,设置该PCI设备必须的和与该PCI设备相关的寄存器。一个设备的配置空间不仅在系统自举时可以访问,在其他时间也可以访问;
头标区的长度为64字节,偏移地址从00H到3FH,该域中的各个域用来识别各自不同的设备,并使设备能以一般的方法控制。每个设备都必须按照该区的格式和规定进行设置。而配置空间的其余192字节可以因设备而异;
在系统启动时,系统软件可能需要扫描PCI总线,以便确定总线上实际连接的设备。为此,配置软件读取每个PCI槽位上的设备供应商识别代码。如果所读取的位置上不存在设备,则主桥必须准确无误地报道出来。OFFFH是一个非法的设备供应商识别码。如果设备不存在,则主桥可以通过返回OFFFH作为设备配置空间寄存器的读出值;
头标区的分类代码寄存器为只读寄存器,用来标识设备的总体功能和特定的寄存器级编程接口。该寄存器分为三段,每段占一个字节。高位字节在0BH处,是一个基本分类代码,对设备的功能进行粗略的分类(如02H表示网络控制器、03H表示显示控制器等)。中间字节在0AH处,它对设备的功能给予更精确、更详细的分类。低位字节在09H处,用来标识一个特定的寄存器级编程接口(如果存在),以使与设备无关的软件可以与设备交互作用;
I/O配置模块,用于为上述PCI设备和高级配置电源接口(ACPI)配置I/O端口;对于PCI设备来讲,可以通过0XCF8,0XCFC访问PCI总线配置空间,从该配置空间中读取该PCI设备的相关信息;以使操作系统能够对该PCI设备进行访问;
内存配置模块,用于为上述PCI设备和高级配置电源接口(ACPI)配置内存资源;以使操作系统能够直接访问该PCI设备;
中断配置模块,用于为所述PCI设备建立上述中断控制器模式(PIC)和高级可编程中断控制器模式(APIC)的中断号的映射关系,以使操作系统能够直接访问该PCI设备;
操作系统一般用PIC中断方式,只有16中断号,在启动后会改成APIC工作模式,PCI设备的中断一般会大于16,真实硬件是工作在APIC模式,所以中断映射有两种:
1.客户操作系统工作在APIC模式,该客户操作系统启动时和启动后使用真实硬件设备的中断号一样,此时,PIC中断控制方式和APIC中断控制方式下的中断号是一一对应的;
2.客户操作系统工作在PIC模式,要通过南桥寄存器找出这两种中断的映射关系。
针对上述第二类型设备,在直接被客户操作系统使用时,除了上述的硬件的相关配置,还需要对BIOS中的软件进行相应的修改,让该BIOS也被客户操作系统使用,而不是使用虚拟的BIOS,因此,
该客户操作使用的BIOS包括:
第一处理模块,用于修改内存分布表中的高级配置电源接口(ACPI)内存地址和内存大小,生成一新内存分布表,按照该新内存分布表为所述客户操作系统提供真实的内存资源;该内存分布表是中断INT15的E820对应的内存分布表,修改之后,使客户操作系统能够直接使用真实内存;
第二处理模块,用于修改对称多处理系统表(SMP table),生成一新对称多处理系统表(SMP table),按照该新对称多处理系统表(SMP table)为客户操作系统提供虚拟的高级可编程中断控制器(APIC),在修改该SMP table时,具体来讲,根据虚拟的APIC的ID的APIC类型进行修改;
第三处理模块,用于修改虚拟高级配置电源接口(ACPI)对应的MADT表,生成一新MADT表,按照所述新MADT表为所述客户操作系统提供真实的高级配置电源接口(ACPI),具体来讲,根据ACPI规范和XEN虚拟的APIC,在原来MADT table重新生成新的MADT table。
另外,还需要在BIOS中对虚拟平台进行初始化,主要包括中断控制PIC的初始化以及系统时钟的初始化,保证虚拟操作系统能够正常使用硬件设备。
上述第三类型设备配置模块包括:
I/O配置模块,用于为虚拟第二类型时钟、虚拟中断控制器配置I/O端口;
内存配置模块,用于为虚拟第二类型时钟、虚拟中断控制器配置虚拟内存。
其中,虚拟中断控制器包括:I/O端口的虚拟中断控制器和/或CPU的虚拟中断控制器。
另外,为了使主操作系统对第一类型设备中的PCI设备进行访问,所述第一类型设备配置模块包括:
PCI配置模块,用于为所述PCI设备配置PCI配置空间,所述PCI配置空间至少包括用于标识所述PCI设备的头标区和用于存储区所述PCI设备相关信息的设备相关区;该PCI设备,如网卡,该网卡直接被主操作系统使用;
I/O配置模块,用于为所述PCI设备配置I/O端口,该网卡的I/O端口只对主操作系统开放,对客户操作系统设为禁用;
内存配置模块,用于为所述PCI设备配置内存资源。
上述所有实施例中,第一操作系统和第二操作系统是为描述方便所用,并不用于限定第一操作系统是Domain 0,第二操作系统是Guest OS,当然也可以第二操作系统是Domain 0,第一操作系统是Guest OS,且虚拟的Guest OS还可以为多个。
综上,本发明的实施例通过让一个主虚拟系统(如Guest OS)跟在几乎跟真实一样的硬件平台的运行。将硬件设备访问控制放到虚拟机管理器中,统一考虑设备的分配和使用,使硬件平台中的硬件直接只DHA给某个操作系统使用,并且跟主板的BIOS使用相结合,减少开发过程中的问题,通过对计算机的BIOS中相关信息的修改,该BIOS对于虚拟操作系统也是真实的BIOS,这样虚拟操作系统在直接访问该硬件设备时,不会出现计算机的虚拟系统的硬件和软件兼容性问题。
如图5所示,本发明的实施例还提供一种虚拟系统直接访问计算机硬件的方法,包括:
步骤S51,将计算机硬件平台中的第一类型设备直接配置给所述计算机的主操作系统使用,该第一类型设备为专属于主操作系统使用的设备;
步骤S52,将计算机硬件平台中的第二类型设备直接配置给所述计算机的客户操作系统使用,该第二类型设备为专属于所述客户操作系统使用的设备;
步骤S53对计算机硬件平台中的第三类型设备进行虚拟,产生虚拟第三类型设备,将所述虚拟第三类型设备分别配置给所述主操作系统和所述客户操作系统使用。
其中,这里的第一类型设备包括:PCI设备和主操作系统使用的BIOS,该PCI设备可以为网卡,也可以为其他的PCI设备,如声卡,FLASH设备等;
第二类型设备包括:PCI设备,第一类型时钟,高级配置电源接口(ACPI)和客户操作系统使用BIOS;该第一类型时钟包括:实时时钟(RTC时钟),高级配置电源接口计时器时钟(PM时钟);该PCI设备可以包括除网卡以外的所有PCI设备;
第三类型设备包括:第二类型时钟、中断控制器和端口模式寄存器;该第二类型时钟包括:可编程间隔定时器时钟(PIT时钟),高精度计时器时钟(HPET时钟);该中断控制器包括:中断控制器(PIC),高级可编程中断控制器(APIC)。
其中,该第二类型设备中的客户操作系统使用的BIOS和第一类型设备中的主操作系统使用的BIOS是同一个BIOS,在实际设计中,将计算机主板的BIOS设置为共享,就可以让主操作系统和客户操作系统都能对该真实的BIOS进行访问。
其中,步骤S52中,对计算机硬件设备中的第二类型设备直接配置给所述计算机的客户操作系统使用的步骤包括:
为所述第二类型设备中的PCI设备配置PCI配置空间,所述PCI配置空间至少包括用于标识所述PCI设备的头标区和用于存储区所述PCI设备相关信息的设备相关区;
为所述第二类型设备中的PCI设备和高级配置电源接口(ACPI)配置I/O端口;
为所述第二类型设备中的PCI设备和所述高级配置电源接口(ACPI)配置内存资源;
为所述第二类型设备中的PCI设备建立中断控制器模式(PIC)和高级可编程中断控制器模式(APIC)的中断号的映射关系。该映射关系可能是一对一的映射,也可能不是一对一的映射,如:
1.Guest OS工作在APIC模式,该Guest OS启动时和启动后使用真实硬件设备的中断号一样,此时,PIC中断控制方式和APIC中断控制方式下的中断号是一一对应的;
2.Guest OS工作在PIC模式,要通过南桥寄存器找出这两种中断的映射关系,这种情况下不是一对一,Guest OS启动时,真实硬件的中断号有16个,而在启动后,虚拟APIC下,中断号有256个,16个中断号与256个中断号的映射关系可以通过上述南桥寄存器获得。
为了使Guest OS能够访问真实的硬件,在上述为第二类型设备进行配置时,还需要进行软件方面的支持,即对BIOS中的硬件相关信息进行修改,主要包括:
修改计算机的BIOS中的内存分布表中的高级配置电源接口(ACPI)内存地址和内存大小,生成一新内存分布表,按照所述新内存分布表为Guest OS提供真实的内存资源;
同时,还应该修改计算机的BIOS中的对称多处理系统表(SMP table),生成一新对称多处理系统表(SMP table),按照该新对称多处理系统表(SMPtable)为Guest OS提供虚拟的高级可编程中断控制器APIC;
同时,还应该修改计算机的BIOS中的虚拟高级配置电源接口(ACPI)对应的MADT表,生成一新MADT表,按照所述新MADT表为Guest OS提供真实的高级配置电源接口ACPI。
除了上述第二类型设备可以被Guest OS直接使用外,还有第三类型设备,需要虚拟给Guest OS和Domain 0使用,因此,
步骤S53中,将所述虚拟第三类型设分别备配置给所述主操作系统和所述客户操作系统使用的步骤包括:
为虚拟的所述第三类型设备中的虚拟的第二类型时钟、虚拟的中断控制器(APIC)配置I/O端口;
为虚拟的第三类型设备中的虚拟的第二类型时钟、虚拟的中断控制器(APIC)配置虚拟内存。
对于Domain 0系统来讲,该Domain 0也应当还可以直接使用硬件平台中的PCI设备以及BIOS,因此,
步骤S51中,将计算机硬件设备中的第一类型设备直接配置给所述计算机的主操作系统使用的步骤包括:
为第一类型设备中的PCI设备配置PCI配置空间,所述PCI配置空间至少包括用于标识所述PCI设备的头标区和用于存储区所述PCI设备相关信息的设备相关区。
为所述第一类型设备中的PCI设备配置I/O端口。
为所述第一类型设备中的PCI设备配置内存资源。
本发明的方法实施例通过让一个主虚拟系统(Guest OS)跟在几乎跟真实一样的硬件平台的运行。将硬件设备访问控制放到虚拟机管理器中,即对第一类型设备,第二类型设备以及第三类型设备的访问控制都放在虚拟机管理器中,统一考虑设备的分配和使用,使硬件设备直接只DHA给某个操作系统使用,减少将硬件设备DHA给某操作系统的开发过程中的问题,通过对计算机的BIOS中相关信息的修改,该BIOS对于虚拟操作系统也是真实的BIOS,这样虚拟操作系统在直接访问该硬件设备时,跟主板的BIOS使用相结合,不会出现计算机的虚拟系统的硬件和软件兼容性问题。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (13)

1.一种计算机,包括:
硬件平台,所述硬件平台上设备具有第一类型设备、第二类型设备及第三类型设备;
虚拟机管理模块,安装有虚拟机管理器;
第一操作模块,安装有主操作系统;
第二操作模块,安装有客户操作系统,所述客户操作系统安装在所述虚拟机管理器上;其特征在于,所述虚拟机管理模块包括:
第一类型设备配置模块,用于将所述第一类型设备直接配置给所述主操作系统使用,所述第一类型设备为专属于所述主操作系统使用的设备;
第二类型设备配置模块,用于将所述第二类型设备直接配置给所述客户操作系统使用,所述第二类型设备为专属于所述客户操作系统使用的设备;
第三类型设备配置模块,用于对所述第三类型设备进行虚拟,产生虚拟第三类型设备,并将所述虚拟第三类型设备分别配置给所述主操作系统和所述客户操作系统使用。
2.根据权利要求1所述的计算机,其特征在于,
所述第一类型设备包括:PCI设备和所述主操作系统使用的BIOS;
所述第二类型设备包括:PCI设备,第一类型时钟,高级配置电源接口和所述客户操作系统使用的BIOS;
所述第三类型设备包括:第二类型时钟、中断控制器和端口模式寄存器。
3.根据权利要求2所述的计算机,其特征在于,
所述第一类型时钟包括:实时时钟,高级配置电源接口计时器时钟;
所述第二类型时钟包括:可编程间隔定时器时钟,高精度计时器时钟;
所述中断控制器包括:中断控制器,高级可编程中断控制器;
所述PCI设备包括:网卡。
4.根据权利要求2或3所述的计算机,其特征在于,所述第二类型设备配置模块包括:
PCI配置模块,用于为所述PCI设备配置PCI配置空间,所述PCI配置空间至少包括用于标识所述PCI设备的头标区和用于存储所述PCI设备相关信息的设备相关区;
I/O配置模块,用于为所述PCI设备和所述高级配置电源接口配置I/O端口;
内存配置模块,用于为所述PCI设备和所述高级配置电源接口配置内存资源;
中断配置模块,用于为所述PCI设备建立所述中断控制器模式和所述高级可编程中断控制器模式的中断号的映射关系。
5.根据权利要求4所述的计算机,其特征在于,所述客户操作系统使用的BIOS包括:
第一处理模块,用于修改内存分布表中的所述高级配置电源接口内存地址和内存大小,生成一新内存分布表,按照所述新内存分布表为所述客户操作系统提供真实的内存资源;
第二处理模块,用于修改对称多处理系统表,生成一新对称多处理系统表,按照所述新对称多处理系统表为所述客户操作系统提供虚拟的高级可编程中断控制器;
第三处理模块,用于修改虚拟高级配置电源接口对应的MADT表,生成一新MADT表,按照所述新MADT表为所述客户操作系统提供真实的高级配置电源接口。
6.根据权利要求2或3所述的计算机,其特征在于,所述第三类型设备配置模块包括:
I/O配置模块,用于为虚拟的所述第二类型时钟、虚拟的所述中断控制器配置I/O端口;
内存配置模块,用于为虚拟的所述第二类型时钟、虚拟的所述中断控制器配置虚拟内存。
7.根据权利要求6所述的计算机,其特征在于,所述虚拟的所述中断控制器包括:I/O端口的虚拟中断控制器和/或CPU的虚拟中断控制器。
8.根据权利要求2或3所述的计算机,其特征在于,所述第一类型设备配置模块包括:
PCI配置模块,用于为所述PCI设备配置PCI配置空间,所述PCI配置空间至少包括用于标识所述PCI设备的头标区和用于存储区所述PCI设备相关信息的设备相关区;
I/O配置模块,用于为所述PCI设备配置I/O端口;
内存配置模块,用于为所述PCI设备配置内存资源。
9.一种虚拟系统直接访问计算机硬件的方法,其特征在于,包括:
将计算机硬件平台中的第一类型设备直接配置给所述计算机的主操作系统使用,所述第一类型设备为专属于所述主操作系统使用的设备;
将计算机硬件平台中的第二类型设备直接配置给所述计算机的客户操作系统使用,所述第二类型设备为专属于所述客户操作系统使用的设备;
对计算机硬件平台中的第三类型设备进行虚拟,产生虚拟第三类型设备,将所述虚拟第三类型设备分别配置给所述主操作系统和所述客户操作系统使用。
10.根据权利要求9所述的方法,其特征在于,所述将计算机硬件平台中的第二类型设备直接配置给所述计算机的客户操作系统使用的步骤包括:
为所述第二类型设备中的PCI设备配置PCI配置空间,所述PCI配置空间至少包括用于标识所述PCI设备的头标区和用于存储区所述PCI设备相关信息的设备相关区;
为所述第二类型设备中的PCI设备和高级配置电源接口配置I/O端口;
为所述第二类型设备中的PCI设备和高级配置电源接口配置内存资源;
为所述第二类型设备中的PCI设备建立中断控制器模式和高级可编程中断控制器模式的中断号的映射关系。
11.根据权利要求9或10所述的方法,其特征在于,还包括:
修改计算机的BIOS中的内存分布表中的所述高级配置电源接口内存地址和内存大小,生成一新内存分布表,按照所述新内存分布表为所述客户操作系统提供真实的内存资源;
修改计算机的BIOS中的对称多处理系统表,生成一新对称多处理系统表,按照所述新对称多处理系统表为所述客户操作系统提供虚拟的高级可编程中断控制器;
修改计算机的BIOS中的虚拟高级配置电源接口对应的MADT表,生成一新MADT表,按照所述新MADT表为所述客户操作系统提供真实的高级配置电源接口。
12.根据权利要求9所述的方法,其特征在于,所述将所述虚拟第三类型设备分别配置给所述主操作系统和所述客户操作系统使用的步骤包括:
为虚拟的所述第三类型设备中的虚拟的第二类型时钟、虚拟的中断控制器配置I/O端口;
为虚拟的所述第三类型设备中的虚拟的第二类型时钟、虚拟的中断控制器配置虚拟内存。
13.根据权利要求9所述的方法,其特征在于,所述将计算机硬件平台中的第一类型设备直接配置给所述计算机的主操作系统使用的步骤包括:
为所述第一类型设备中的PCI设备配置PCI配置空间,所述PCI配置空间至少包括用于标识所述PCI设备的头标区和用于存储区所述PCI设备相关信息的设备相关区;
为所述第一类型设备中的PCI设备配置I/O端口;
为所述第一类型设备中的PCI设备配置内存资源。
CN200810226934.1A 2008-11-20 2008-11-20 一种计算机及虚拟系统直接访问计算机硬件的方法 Active CN101739283B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN200810226934.1A CN101739283B (zh) 2008-11-20 2008-11-20 一种计算机及虚拟系统直接访问计算机硬件的方法
US12/623,076 US8037210B2 (en) 2008-11-20 2009-11-20 Computer and method for directly accessing computer hardware by virtual system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200810226934.1A CN101739283B (zh) 2008-11-20 2008-11-20 一种计算机及虚拟系统直接访问计算机硬件的方法

Publications (2)

Publication Number Publication Date
CN101739283A true CN101739283A (zh) 2010-06-16
CN101739283B CN101739283B (zh) 2013-12-25

Family

ID=42172854

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200810226934.1A Active CN101739283B (zh) 2008-11-20 2008-11-20 一种计算机及虚拟系统直接访问计算机硬件的方法

Country Status (2)

Country Link
US (1) US8037210B2 (zh)
CN (1) CN101739283B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102404253A (zh) * 2011-06-28 2012-04-04 西安交通大学 支持linux 的硬件抽象层的虚拟网卡设计方法
CN102629211A (zh) * 2012-03-28 2012-08-08 山东超越数控电子有限公司 一种硬件资源可配置的虚拟机启动方法
CN103294501A (zh) * 2012-03-05 2013-09-11 联想(北京)有限公司 一种数据接口配置方法及电子设备
CN103748556A (zh) * 2011-08-30 2014-04-23 惠普发展公司,有限责任合伙企业 与虚拟受信任运行时bios通信
CN105094825A (zh) * 2015-07-21 2015-11-25 中国科学院信息工程研究所 一种内存变量分布动态发现方法
CN107077182A (zh) * 2016-12-27 2017-08-18 深圳前海达闼云端智能科技有限公司 电源管理方法、装置、电子设备和计算机程序产品

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8639923B2 (en) * 2010-05-28 2014-01-28 Dell Products, Lp System and method for component authentication of a secure client hosted virtualization in an information handling system
EP2732397B1 (en) * 2011-07-12 2020-02-26 Hewlett-Packard Development Company, L.P. Computing device including a port and a guest domain
DE102011107169A1 (de) * 2011-07-13 2013-01-17 Kuka Roboter Gmbh Steuerung eines Roboter
US9146785B2 (en) * 2011-09-14 2015-09-29 Microsoft Technology Licensing, Llc Application acceleration in a virtualized environment
CN103123612B (zh) * 2011-11-21 2017-11-28 联想(北京)有限公司 一种共享设备的控制方法及一种电子设备
US20140298340A1 (en) * 2011-12-13 2014-10-02 Hitachi, Ltd. Virtual machine system, virtualization mechanism, and data management method
CN103294562B (zh) * 2012-02-23 2017-03-01 纬创资通股份有限公司 双操作系统共用周边装置的方法以及电子装置
US9135203B2 (en) 2013-05-01 2015-09-15 Jonathan Glickman Computer system and a computer device
US10275271B2 (en) 2014-06-30 2019-04-30 Hewett-Packard Development Company, L.P. Virtual machine device access

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1700171A (zh) * 2004-04-30 2005-11-23 微软公司 提供从虚拟环境对硬件的直接访问
CN1916855A (zh) * 2005-08-19 2007-02-21 联想(北京)有限公司 一种虚拟机系统及其硬件配置方法
CN101059761A (zh) * 2006-04-20 2007-10-24 联想(北京)有限公司 一种虚拟机系统及其硬件设备访问方法
CN101093448A (zh) * 2006-06-23 2007-12-26 联想(北京)有限公司 一种虚拟机系统及其硬件设备的切换方法
CN101105755A (zh) * 2006-06-29 2008-01-16 Lg电子株式会社 支持多操作系统的便携式设备及其支持方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7996785B2 (en) * 2004-06-30 2011-08-09 Microsoft Corporation Systems and methods for integrating application windows in a virtual machine environment
US7647589B1 (en) * 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US7613847B2 (en) * 2006-05-16 2009-11-03 Hewlett-Packard Development Company, L.P. Partially virtualizing an I/O device for use by virtual machines
US8078827B2 (en) * 2007-07-05 2011-12-13 International Business Machines Corporation Method and apparatus for caching of page translations for virtual machines
JP5245539B2 (ja) * 2008-05-27 2013-07-24 富士通株式会社 仮想マシンの入出力エミュレーション機構

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1700171A (zh) * 2004-04-30 2005-11-23 微软公司 提供从虚拟环境对硬件的直接访问
CN1916855A (zh) * 2005-08-19 2007-02-21 联想(北京)有限公司 一种虚拟机系统及其硬件配置方法
CN101059761A (zh) * 2006-04-20 2007-10-24 联想(北京)有限公司 一种虚拟机系统及其硬件设备访问方法
CN101093448A (zh) * 2006-06-23 2007-12-26 联想(北京)有限公司 一种虚拟机系统及其硬件设备的切换方法
CN101105755A (zh) * 2006-06-29 2008-01-16 Lg电子株式会社 支持多操作系统的便携式设备及其支持方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102404253A (zh) * 2011-06-28 2012-04-04 西安交通大学 支持linux 的硬件抽象层的虚拟网卡设计方法
CN102404253B (zh) * 2011-06-28 2014-08-06 西安交通大学 支持linux 的硬件抽象层的虚拟网卡设计方法
CN103748556A (zh) * 2011-08-30 2014-04-23 惠普发展公司,有限责任合伙企业 与虚拟受信任运行时bios通信
US9535710B2 (en) 2011-08-30 2017-01-03 Hewlett-Packard Development Company, L.P. Communication with a virtual trusted runtime BIOS
CN103294501A (zh) * 2012-03-05 2013-09-11 联想(北京)有限公司 一种数据接口配置方法及电子设备
CN102629211A (zh) * 2012-03-28 2012-08-08 山东超越数控电子有限公司 一种硬件资源可配置的虚拟机启动方法
CN102629211B (zh) * 2012-03-28 2016-08-17 山东超越数控电子有限公司 一种硬件资源可配置的虚拟机启动方法
CN105094825A (zh) * 2015-07-21 2015-11-25 中国科学院信息工程研究所 一种内存变量分布动态发现方法
CN105094825B (zh) * 2015-07-21 2018-11-06 中国科学院信息工程研究所 一种内存变量分布动态发现方法
CN107077182A (zh) * 2016-12-27 2017-08-18 深圳前海达闼云端智能科技有限公司 电源管理方法、装置、电子设备和计算机程序产品
CN107077182B (zh) * 2016-12-27 2020-01-07 深圳前海达闼云端智能科技有限公司 电源管理方法、装置、电子设备和计算机程序产品
US11163591B2 (en) 2016-12-27 2021-11-02 Cloudminds (Shenzhen) Robotics Systems Co., Ltd. Power management method and device, electronic apparatus, and computer program product

Also Published As

Publication number Publication date
US8037210B2 (en) 2011-10-11
CN101739283B (zh) 2013-12-25
US20100125679A1 (en) 2010-05-20

Similar Documents

Publication Publication Date Title
CN101739283B (zh) 一种计算机及虚拟系统直接访问计算机硬件的方法
CN101076782B (zh) 提供虚拟刀片服务器的方法和装置
JP5735070B2 (ja) パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換
US9430296B2 (en) System partitioning to present software as platform level functionality via inter-partition bridge including reversible mode logic to switch between initialization, configuration, and execution mode
CN102819447B (zh) 一种用于多根共享系统的直接i/o虚拟化方法和装置
CN101842784B (zh) 共享多功能装置和在共享多功能装置内分派和隔离功能的方法
CN100472451C (zh) 一种虚拟机系统及其硬件设备访问方法
CN105264506B (zh) 向内存映射配置分配处理器
CN101751284A (zh) 一种分布式虚拟机监控器的i/o资源调度方法
KR20060061832A (ko) 메모리를 소거하는 메모리 제어기를 포함하는 신뢰성있는실행 환경을 이용한 컴퓨터 시스템
CN101004726A (zh) 直接传送中断到虚拟处理器
US20150317089A1 (en) System and method for managing expansion read-only memory and management host thereof
CN113312140B (zh) 用于虚拟可信平台模块的系统、存储介质和方法
US20210149587A1 (en) Technologies to provide access to kernel and user space memory regions
US20190057057A1 (en) Hot-plug of devices in virtualized computer systems
CN103984591A (zh) 计算机虚拟化系统的PCI设备INTx中断投递方法
GB2467408A (en) Virtualisation logic for managing transactions between a physical device controller and a virtual machine
US5894563A (en) Method and apparatus for providing a PCI bridge between multiple PCI environments
CN112099916B (zh) 虚拟机数据的迁移方法、装置、计算机设备及存储介质
CN113312141A (zh) 用于虚拟机的虚拟串行端口
CN104115153A (zh) 进入安全系统环境的定向唤醒
CN106845245A (zh) 一种基于Xen虚拟化平台的漏洞热修复方法
CN102622245A (zh) 一种sun4v架构下的虚拟机自动启动控制方法
CN102043643B (zh) 安装中断事件处理程序的方法
CN101982814B (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