CN102508682B - 一种系统预引导阶段硬件辅助cpu虚拟化环境建立的方法 - Google Patents
一种系统预引导阶段硬件辅助cpu虚拟化环境建立的方法 Download PDFInfo
- Publication number
- CN102508682B CN102508682B CN201110355883.4A CN201110355883A CN102508682B CN 102508682 B CN102508682 B CN 102508682B CN 201110355883 A CN201110355883 A CN 201110355883A CN 102508682 B CN102508682 B CN 102508682B
- Authority
- CN
- China
- Prior art keywords
- hardware
- instruction
- vmm
- cpu
- control
- 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
- Stored Programmes (AREA)
Abstract
本发明涉及一种系统预引导阶段硬件辅助CPU虚拟化环境建立的方法,其方法是对移动U盘进行初始化,设置相关的引导扇区以及后续硬件辅助CPU虚拟环境建立的相关信息,设计并实现系统预引导阶段硬件辅助CPU虚拟环境的建立。按照系统预启动运行环境对该方法进行测试,将引导扇区放在移动U盘的第一扇区位置,硬件辅助CPU虚拟环境建立的相关代码放在硬盘的第二扇区及其后续位置,系统加电启动后BIOS执行系统初始化后将引导扇区代码调入内存运行,由引导扇区代码调入硬件辅助CPU虚拟环境建立代码,建立预引导阶段的硬件辅助CPU虚拟环境。
Description
技术领域
本发明涉及建立预引导阶段虚拟环境,特别是涉及一种系统预引导阶段硬件辅助CPU虚拟化环境建立的方法。
背景技术
目前主流的虚拟化技术主要有全虚拟化技术(Full Virtualization),泛虚拟化技术(Para Virtualization)和硬件辅助虚拟化技术(HardwareAssisted Virtualization)。前两种在没有硬件扩展情况下就可以支持多操作系统的运行,但是性能比较差,特别是对于I/O访问频繁的应用;硬件辅助虚拟化技术属于一种虚拟化硬件加速技术,它的主要目标有两个:一是减少虚拟化系统开发设计代价,如简化VMM(Virtual Machine Monitor)软件设计,提供对客户操作系统,驱动程序的更好兼容性等方面;另外,就是减小由于系统虚拟化所带来的额外开销问题。
采用硬件辅助的虚拟化技术,可以使得客户操作系统无需修改就可以直接在虚拟机监视器VMM软件上执行,同时也不需要采用类似二进制翻译等技术,因而虚拟化开销较小。目前主流的芯片提供商都在自己最新的CPU上增加了硬件辅助虚拟化技术,从硬件的角度对虚拟化进行扩展支持,如Intel的VT,AMD的AMD-V,IBM的Power5,6以及SUN的OpenSparc T2都包含硬件辅助虚拟化技术。尽管技术的名称存在不同,但是其基本原理,实现方法基本一致。本发明是以Intel的CPU虚拟化技术为例进行的。下面对Intel的CPU虚拟化技术进行简单介绍。
如图1所示,过去只有大型主机系统才支持虚拟化技术,通用处理器是不支持虚拟化的。为使得通用的处理器也支持虚拟化,Intel的虚拟化技术在其IA-32体系的CPU指令集中增加了对虚拟支持的指令VMX(VirtualMachine Extensions:虚拟机扩充)。由于这些指令是在硬件层实现的,使得虚拟控制过程变得更快更简单。
在这种虚拟环境下,增加了两种新的操作模式:VMX根操作模式以及VMX非根操作模式。控制虚拟环境的软件VMM运行在根操作模式下,用于处理特殊指令;而VM(Virtual Machine:虚拟机)则运行在非根操作模式。当在非根操作模式VM执行到特殊指令的时候,系统会切换到运行于根操作模式的VMM,让VMM来处理这个特殊指令。
除此之外,Intel VT VMX操作新定义了VMCS(Virtual Machine ControlStructure:虚拟机控制结构),如图2所示。该结构中包含了处理器重要信息的区域,一个是主机状态区域,另一个是客户机状态区域。VMM对硬件虚拟CPU的管理通过VMCS实现。VMX非根操作模式与根模式之间的状态变迁由VMCS管理。当虚拟机进入时(处理器控制从VMX根状态进入VMX非根状态),处理器状态被保存在VMCS的主机状态区域中,同时客户机状态从VMCS中装入。相反,当虚拟机退出时(从VMX非根状态进入VMX根状态),客户机状态被保存在VMCS的客户机状态区域中,而主机状态则从VMCS的主机状态区域装入。
某些特定的指令、事件或状态会导致虚拟机退出到VMM,但客户机软件本身并不知道自己是否运行在虚拟机上。
发明内容
本发明在于避免以上现有技术的不足提供一种系统预引导阶段硬件辅助CPU虚拟化环境建立的方法。
本发明的技术方案如下:
一种系统预引导阶段硬件辅助CPU虚拟环境建立的方法,该方法包括以下步骤:
1)通过操作系统下的安装单元对移动U盘进行初始化,设置相关的引导扇区信息,建立硬件辅助CPU虚拟环境;
2)操作系统对BIOS进行相关设置,将移动U盘设置为BIOS系统启动的第一引导设备;
3)操作系统加电启动,BIOS完成系统自检后将移动U盘的引导扇区调入内存执行,由移动U盘的引导扇区调入所述硬件辅助CPU虚拟环境,建立操作系统启动前预引导阶段的硬件辅助CPU虚拟环境。
进一步,所述的对移动U盘进行初始化的具体做法为:将引导扇区代码放在移动U盘的第一扇区位置,将建立硬件辅助CPU虚拟环境的相关信息代码,且将此相关信息代码放在移动U盘的第二扇区及其后续位置。
进一步,所述的建立硬件辅助CPU虚拟环境的相关信息代码包括虚拟机监视器VMM与虚拟机VM之间的控制权的转移。
进一步,所述的VM到VMM控制权的转移包括如下步骤:
1)CPU执行VM中正常的指令,直至最后执行HLT指令的前一条指令;
2)VM代码中的HLT指令,产生一个通用保护错误处理的中断服务事件;
3)CPU执行通用保护错误处理中断服务程序,直到遇到VMX的指令vmcall;
4)vmcall指令产生VM退出事件,将CPU控制权转交给VMM。
进一步,所述的VMM到VM控制权的转移包括如下步骤:
1)CPU执行主控任务中的指令,进入IA32-E模式,将系统控制权交给VMM;
2)CPU执行VMM中的指令,主要的任务有设置A20模式、根据MSR基地址,读取VMX能力MSR、初始化VMM以及VM的VMCS区域、调用vmxon指令进入VMM根操作模式、清除VM的VMCS区域、装载VM的VMCS区域为当前的VM、为当前的VM的VMCS进行初始化配置、调用VMX的vmlaunch指令将控制权转给VM;
3)CPU执行VM中的指令,将控制权转交给VMM;
4)VMM从步骤3)的下一条指令继续执行,其中包括从当前VMCS中获取信息,调用vmxoff指令退出根操作模式;
5)VMM将控制权交给主控任务,主控任务从步骤1)的下一条指令继续执行,离开IA32-E模式;
6)主控任务将CPU控制权交给系统原有的系统装载器,继续系统的启动过程。
本发明相比现有技术具有如下优点:
1.在系统预引导阶段由移动U盘建立硬件辅助CPU虚拟环境,由于此时操作系统尚未启动,具有与具体的操作系统无关的特征。
2.由移动U盘作为介质建立硬件辅助CPU虚拟环境,不论成功与否,都不影响目标系统原来的执行流程,从而不会对原有的系统造成影响。
附图说明
图1.是Intel VT技术中VMX根操作模式与非根操作模式的进入与退出示意图。
图2.是Intel VT技术中VMCS,VM以及VMM之间的关系示意图。
图3.是本发明存放在移动U盘上代码之间位置关系以及执行次序的示意图。
图4.是本发明所示VM到VMM控制权的转移流程图。
图5.是本发明所示VMM到VM控制权的转移流程图。
具体实施方式
本发明一种系统预引导阶段硬件辅助CPU虚拟化环境建立的方法实施步骤通过以下方式实现:
第一步,通过操作系统下的相关工具,比如Linux下的dd命令或Windows下的dskprobe工具对移动U盘进行初始化,设置相关的引导扇区信息以及主控代码、VMM代码、VM代码。将主控代码、VMM代码、VM代码放在移动U盘的第二及其后续扇区位置,具体所占扇区个数由代码大小决定。
第二步,设置BIOS(Basic Input Output System)对Intel VT的支持,设置BIOS中系统引导盘的的次序,使得移动U盘成为系统引导的第一设备。
第三步,系统启动,BIOS系统运行完后,由INT 19H中断调度移动U盘的引导扇区执行,该引导扇区代码将存放在移动U盘的第二以及后续扇区的主控代码、VMM代码、VM代码调度执行,建立硬件辅助CPU虚拟化环境。
本发明以Intel的硬件环境为例,说明系统预引导阶段硬件辅助CPU虚拟化环境的建立方法。本发明首先根据Intel的虚拟机技术,利用移动U盘的引导与存储功能,在系统启动前建立硬件辅助CPU虚拟环境实现相关的应用。下面结合附图对本发明作进一步详述。
如图3所示,引导前各个代码以扇区的形式或文件的形式存放在移动U盘上。步骤①:系统启动首先执行BIOS代码;步骤②:BIOS执行完后,最先一个被INT 19H中断调度运行的代码是存放在移动U盘上的引导扇区代码;步骤③:由引导扇区代码调度后续的硬件辅助CPU虚拟环境建立代码运行,从而进入虚拟机环境;步骤④:虚拟机环境中的任务执行完毕后,将控制权交回给原来的硬盘启动程序负责系统的正常启动。图3中的硬件辅助CPU虚拟环境建立代码实际上主要由两部分构成:虚拟机监视器VMM(Virtual Machine Monitor)运行的代码,虚拟机VM(Virtual Machine)运行的代码以及两部分代码的控制权转移,这部分代码存在移动U盘的第二及其后续扇区位置上。
如图4所示VM到VMM控制权的转移流程,步骤①:CPU执行VM中正常的指令,直至最后执行HLT指令的前一条指令(本发明中可以是out%al,%dx指令);步骤②:HLT指令为特权指令,不能在VM环境下执行,因此产生一个通用保护错误处理的中断;步骤③:CPU执行通用保护错误处理中断服务程序,直到遇到虚拟机扩充VMX(Virtual Machine Extensions)的指令vmcall;步骤④:vmcall指令产生VM退出事件,将CPU控制权转交给VMM。
如图5所示VMM到VM控制权的转移流程:为叙述方便,将VMM分为两部分:主控任务和VMM任务。步骤①:CPU执行主控任务中的指令,进入IA32-E模式,将系统控制权交给VMM;其中IA32-E是指Intel Architecture-32Extend,Intel 32位体系结构扩展,这个也可以是X86-64,AMD64;EM64T,IA-32e等体系。
步骤②:CPU执行VMM中的指令,主要的任务有:设置A20地址线模式、根据MSR(Machine Status Register:机器状态寄存器)基地址,读取VMX能力MSR、初始化VMM以及VM的VMCS区域、调用VMX中的vmxon指令进入VMM根操作模式、清除VM的VMCS(Virtual Machine Control Structure:虚拟机控制结构)区域、装载VM的VMCS区域为当前的VM、为当前的VM的VMCS进行初始化配置、调用VMX中的vmlaunch指令将控制权转给VM;步骤③:CPU执行VM中指令,并根据图4所示VM到VMM控制权的转移流程,将控制权转交给VMM;步骤④:VMM从步骤③的下一条指令(该指令会根据任务不同而不同)继续执行,其中包括从当前VMCS中获取信息,调用VMX中的vmxoff指令退出根操作模式;步骤⑤:VMM将控制权交给主控任务,主控任务从步骤①的下一条指令(该指令会根据任务不同而不同)继续执行,离开IA32-E模式;步骤⑥:主控任务将CPU控制权交给系统原有的操作系统装载器,继续系统的启动过程。
Claims (2)
1.一种系统预引导阶段硬件辅助CPU虚拟环境建立的方法,其特征在于:该方法包括以下步骤:
1)通过操作系统下的安装单元对移动U盘进行初始化,设置相关的引导扇区信息,建立硬件辅助CPU虚拟环境;
2)操作系统对BIOS进行相关设置,将移动U盘设置为BIOS系统启动的第一引导设备;
3)操作系统加电启动,BIOS完成系统自检后将移动U盘的引导扇区调入内存执行,由移动U盘的引导扇区调入所述硬件辅助CPU虚拟环境,建立操作系统启动前预引导阶段的硬件辅助CPU虚拟环境;
所述的对移动U盘进行初始化的具体做法为:将引导扇区代码放在移动U盘的第一扇区位置,将建立硬件辅助CPU虚拟环境的相关信息代码,且将此相关信息代码放在移动U盘的第二扇区及其后续位置;
所述的建立硬件辅助CPU虚拟环境的相关信息代码包括虚拟机监视器VMM与虚拟机VM之间的控制权的转移;
所述的VM到VMM控制权的转移包括如下步骤:
1)CPU执行VM中正常的指令,直至最后执行HLT指令的前一条指令;
2)VM代码中的HLT指令,产生一个通用保护错误处理的中断服务事件;
3)CPU执行通用保护错误处理中断服务程序,直到遇到VMX的指令vmcall;
4)vmcall指令产生VM退出事件,将CPU控制权转交给VMM。
2.根据权利要求1所述的一种系统预引导阶段硬件辅助CPU虚拟环境建立的方法,其特征在于,所述的VMM到VM控制权的转移包括如下步骤:
201)CPU执行主控任务中的指令,进入IA32-E模式,将系统控制权交给VMM;
202)CPU执行VMM中的指令,主要的任务有设置A20模式、根据MSR基地址,读取VMX能力MSR、初始化VMM以及VM的VMCS区域、调用vmxon指令进入VMM根操作模式、清除VM的VMCS区域、装载VM的VMCS区域为当前的VM、为当前的VM的虚拟机控制结构VMCS进行初始化配置、调用VMX的vmlaunch指令将控制权转给VM;
203)CPU执行VM中的指令,将控制权转交给VMM;
204)VMM从步骤203)的下一条指令继续执行,其中包括从当前VMCS中获取信息,调用vmxoff指令退出根操作模式;
205)VMM将控制权交给主控任务,主控任务从步骤201)的下一条指令继续执行,离开IA32-E模式;
206)主控任务将CPU控制权交给系统原有的系统装载器,继续系统的启动过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110355883.4A CN102508682B (zh) | 2011-11-10 | 2011-11-10 | 一种系统预引导阶段硬件辅助cpu虚拟化环境建立的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110355883.4A CN102508682B (zh) | 2011-11-10 | 2011-11-10 | 一种系统预引导阶段硬件辅助cpu虚拟化环境建立的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102508682A CN102508682A (zh) | 2012-06-20 |
CN102508682B true CN102508682B (zh) | 2014-05-28 |
Family
ID=46220774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110355883.4A Expired - Fee Related CN102508682B (zh) | 2011-11-10 | 2011-11-10 | 一种系统预引导阶段硬件辅助cpu虚拟化环境建立的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102508682B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103699498B (zh) * | 2013-11-25 | 2016-08-31 | 南京大学 | 一种应用程序关键数据保护系统及其保护方法 |
CN104751082B (zh) * | 2013-12-30 | 2019-02-05 | 研祥智能科技股份有限公司 | 操作系统及数据安全控制方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1932763A (zh) * | 2005-09-13 | 2007-03-21 | 联想(北京)有限公司 | 计算机系统启动方法 |
CN101470657A (zh) * | 2007-12-28 | 2009-07-01 | 英业达股份有限公司 | 一种bios刷新内容的验证方法 |
CN101645127A (zh) * | 2009-06-17 | 2010-02-10 | 北京交通大学 | 一种建立基于efi的可信引导系统的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080079852A (ko) * | 2007-02-28 | 2008-09-02 | 삼성전자주식회사 | Cpu 가상화 방법 |
US8321931B2 (en) * | 2008-03-31 | 2012-11-27 | Intel Corporation | Method and apparatus for sequential hypervisor invocation |
-
2011
- 2011-11-10 CN CN201110355883.4A patent/CN102508682B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1932763A (zh) * | 2005-09-13 | 2007-03-21 | 联想(北京)有限公司 | 计算机系统启动方法 |
CN101470657A (zh) * | 2007-12-28 | 2009-07-01 | 英业达股份有限公司 | 一种bios刷新内容的验证方法 |
CN101645127A (zh) * | 2009-06-17 | 2010-02-10 | 北京交通大学 | 一种建立基于efi的可信引导系统的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102508682A (zh) | 2012-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6359069B2 (ja) | オペレーティングシステムと切り離される異種計算 | |
US10007546B2 (en) | Operating-system exchanges using memory-pointer transfers | |
US10255090B2 (en) | Hypervisor context switching using a redirection exception vector in processors having more than two hierarchical privilege levels | |
US10162655B2 (en) | Hypervisor context switching using TLB tags in processors having more than two hierarchical privilege levels | |
US9189248B2 (en) | Specialized boot path for speeding up resume from sleep state | |
TWI608363B (zh) | 架構模式組態 | |
TWI639090B (zh) | 用於可在多種架構中初始化之控制公用程式之共同開機順序 | |
US9405551B2 (en) | Creating an isolated execution environment in a co-designed processor | |
JP5945292B2 (ja) | 異種システムをブートし、コアの対称的なビューを表示する方法 | |
US20160210141A1 (en) | Hot-Swapping Operating Systems Using Inter-Partition Application Migration | |
US20080209198A1 (en) | Boot Acceleration For Computer Systems | |
CN101449240A (zh) | 在运行中的操作系统下启动系统管理程序 | |
JP5308522B2 (ja) | ハイパーバイザ・ローディングのためのメモリ管理 | |
CN103999040B (zh) | 在操作上下文之间切换 | |
WO2006036375A1 (en) | Operating system transfer and launch without performing post | |
KR20150130353A (ko) | 핫스왑가능 프로그램 메모리의 운영체제 커널 업데이트 동안의 전환 시간 최소화 | |
US20110246759A1 (en) | Method for boosting an electronic device with multiple processing units, and electronic device for implementing the same | |
CN115543530A (zh) | 一种虚拟机迁移方法以及相关装置 | |
CN113535245A (zh) | 用于更快的启动过程的多处理器启动流程的方法、系统和设备 | |
US20100257521A1 (en) | Simultaneous Installation of Multiple Portions of a Software Application on a Computer System | |
CN102508682B (zh) | 一种系统预引导阶段硬件辅助cpu虚拟化环境建立的方法 | |
US20190068772A1 (en) | Computer system and method thereof for bluetooth data sharing between uefi firmware and os | |
CN103729219B (zh) | 一种uefi bios架构方法及系统 | |
JP5328410B2 (ja) | 被起動オペレーティングシステム(os)動作計算機、計算機のos起動方法およびos起動プログラム | |
JPS63279328A (ja) | 仮想計算機システムのゲスト実行制御方式 |
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: 20140528 Termination date: 20141110 |
|
EXPY | Termination of patent right or utility model |