CN102831006A - 虚拟机实现方法与虚拟机 - Google Patents

虚拟机实现方法与虚拟机 Download PDF

Info

Publication number
CN102831006A
CN102831006A CN2012102604986A CN201210260498A CN102831006A CN 102831006 A CN102831006 A CN 102831006A CN 2012102604986 A CN2012102604986 A CN 2012102604986A CN 201210260498 A CN201210260498 A CN 201210260498A CN 102831006 A CN102831006 A CN 102831006A
Authority
CN
China
Prior art keywords
virtual machine
dummy machine
dummy
machine system
address
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
CN2012102604986A
Other languages
English (en)
Other versions
CN102831006B (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.)
Beijing Qizhi Business Consulting Co ltd
Beijing Qihoo Technology Co Ltd
360 Digital Security Technology Group Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co 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 Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201210260498.6A priority Critical patent/CN102831006B/zh
Publication of CN102831006A publication Critical patent/CN102831006A/zh
Application granted granted Critical
Publication of CN102831006B publication Critical patent/CN102831006B/zh
Active - Reinstated legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请提供了一种虚拟机实现方法与虚拟机,其中,虚拟机实现方法包括:使用处理器的保护模式、分页机制和中断处理机制构建虚拟机系统,从操作系统中隔离出所述虚拟机系统所需的独立的地址空间和中断环境;所述虚拟机系统在隔离出的所述地址空间和中断环境中,使用所述处理器运行虚拟机程序。通过本申请,实现的虚拟机执行效率高,执行结果准确,并且开发、维护成本更低。

Description

虚拟机实现方法与虚拟机
技术领域
本申请涉及虚拟机技术领域,特别是涉及一种虚拟机实现方法与虚拟机。
背景技术
目前的虚拟机通过软件模拟的方式实现具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。通过虚拟机软件,可以在一台物理计算机上模拟出一台或多台虚拟的计算机,这些虚拟机完全就像真正的计算机那样进行工作,例如,可以安装操作系统、安装应用程序、访问网络资源等等。
虚拟机的实现可简单地分为两大部分:硬件环境的模拟(如CPU)和软件环境的模拟(如操作系统及系统服务等)。其中,在模拟硬件环境(如CPU)时,现有的虚拟机大部分采取的是纯软件模拟方案,也即,使用纯软件模拟出硬件如CPU的功能。
以Bochs虚拟机为例,Bochs是一种十分轻便的使用C++编写的开源IA-32(x86)电脑模拟器,可以被编译运用在多种模式下,Bochs的典型应用是通过软件方式提供x86PC的完整仿真,它可以仿真整个PC平台,包括I/O设备、内存和BIOS。甚至,通过改变配置,可以指定使用的CPU以及内存大小等。
但是,在使用软件模拟硬件环境时,一方面,硬件操作指令集本身数量庞大,并且,使用软件模拟,原来的一条机器指令会变为多条指令,相比真实执行效率上会慢几十倍甚至上百倍,造成软件模拟硬件环境执行效率低,且开发工作量巨大;另一方面,随着技术发展,硬件不断升级更新,使用软件模拟硬件使得后期软件运行和维护工作量巨大,成本高昂,造成后期维护困难;再一方面,需要结合硬件特性进行非常规编码,速度优化难度大,并且,随着硬件的复杂度增加,很难保证所有情况下模拟的正确性。
综上所述,大部分现有的纯软件模拟硬件方案的虚拟机的适用范围一般都是受限的,其只能模拟硬件如CPU功能的一个子集,只能解决部分特定的问题,模拟效果差,实现成本高。
发明内容
本申请提供了一种虚拟机实现方法与虚拟机,以解决现有的纯软件模拟硬件方案的虚拟机模拟效果差,实现成本高的问题。
为了解决上述问题,本申请公开了一种虚拟机实现方法,包括:使用处理器的保护模式、分页机制和中断处理机制构建虚拟机系统,从操作系统中隔离出所述虚拟机系统所需的独立的地址空间和中断环境;所述虚拟机系统在隔离出的所述地址空间和中断环境中,使用所述处理器运行虚拟机程序。
优选地,所述从操作系统中隔离出所述虚拟机系统所需的地址空间和中断环境的步骤包括:构建所述虚拟机系统使用的控制寄存器CR3,通过对所述CR3进行设置使所述虚拟机系统使用的地址空间与所述操作系统使用的地址空间相隔离;构建所述虚拟机系统使用的中断描述符表IDT,使所述虚拟机系统优先响应所述虚拟机系统和所述操作系统的所有中断。
优选地,所述构建所述虚拟机系统使用的IDT,使所述虚拟机系统优先响应所述虚拟机系统和所述操作系统的所有中断处理的步骤包括:构建所述虚拟机系统使用的IDT,使所述虚拟机系统优先接收所述虚拟机系统和所述操作系统的所有中断;当所述中断为硬件系统和/或外部设备产生的中断时,将所述中断反馈给所述操作系统进行中断处理;当所述中断为所述虚拟机程序产生的中断时,所述虚拟机系统对所述中断进行中断处理。
优选地,所述虚拟机实现方法还包括:设置快速系统调用入口,使所述快速系统调用入口被所述虚拟机系统调用;和/或,当所述操作系统为多处理器系统和/或多核系统时,屏蔽多处理器之间的中断和/或多核之间的中断。
优选地,所述虚拟机系统在隔离出的所述地址空间和中断环境中,使用所述处理器运行虚拟机程序的步骤包括:通过内核上下文切换将所述操作系统内核切换为所述虚拟机系统内核;在所述虚拟机系统内核下,所述处理器在隔离出的所述地址空间和中断环境中运行所述虚拟机程序。
优选地,所述虚拟机系统在隔离出的所述地址空间和中断环境中,使用所述处理器运行虚拟机程序的步骤包括:所述虚拟机系统通过所述操作系统的线性地址到所述虚拟机程序的线性地址的二次映射方式,确定所述虚拟机程序的物理地址;所述虚拟机系统在隔离出的所述地址空间和中断环境中,根据所述物理地址,使用所述处理器运行所述虚拟机程序。
优选地,所述虚拟机系统通过所述操作系统的线性地址到所述虚拟机程序的线性地址的二次映射方式,确定所述虚拟机程序的物理地址的步骤包括:所述操作系统分配系统虚拟内存,使用所述系统虚拟内存加载运行所述虚拟机程序的相应页面,并获取所述系统虚拟内存的线性地址和所述相应页面的物理地址之间的对应关系;所述操作系统建立所述系统虚拟内存和所述虚拟机系统的任务虚拟内存的映射关系;所述操作系统根据所述系统虚拟内存的线性地址和所述相应页面的物理地址之间的对应关系,以及所述系统虚拟内存和所述任务虚拟内存的映射关系,建立所述任务虚拟内存和所述相应页面的物理地址之间的映射关系;所述虚拟机系统根据所述任务虚拟内存和所述相应页面的物理地址之间的映射关系,确定所述虚拟机程序的物理地址。
为了解决上述问题,本申请还公开了一种虚拟机,包括:隔离模块,用于使用处理器的保护模式、分页机制和中断处理机制构建虚拟机系统,从操作系统中隔离出所述虚拟机系统所需的独立的地址空间和中断环境;运行模块,用于使所述虚拟机系统在隔离出的所述地址空间和中断环境中,使用所述处理器运行虚拟机程序。
优选地,所述隔离模块在从操作系统中隔离出所述虚拟机系统所需的地址空间和中断环境时,构建所述虚拟机系统使用的控制寄存器CR3,通过对所述CR3进行设置使所述虚拟机系统使用的地址空间与所述操作系统使用的地址空间相隔离;构建所述虚拟机系统使用的中断描述符表IDT,使所述虚拟机系统优先响应所述虚拟机系统和所述操作系统的所有中断。
优选地,所述隔离模块在构建所述虚拟机系统使用的IDT,使所述虚拟机系统优先响应所述虚拟机系统和所述操作系统的所有中断处理时,构建所述虚拟机系统使用的IDT,使所述虚拟机系统优先接收所述虚拟机系统和所述操作系统的所有中断;当所述中断为硬件系统和/或外部设备产生的中断时,将所述中断反馈给所述操作系统进行中断处理;当所述中断为所述虚拟机程序产生的中断时,所述虚拟机系统对所述中断进行中断处理。
优选地,所述运行模块,用于通过内核上下文切换将所述操作系统内核切换为所述虚拟机系统内核;在所述虚拟机系统内核下,所述处理器在隔离出的所述地址空间和中断环境中运行所述虚拟机程序。
优选地,所述运行模块,用于使所述虚拟机系统通过所述操作系统的线性地址到所述虚拟机程序的线性地址的二次映射方式,确定所述虚拟机程序的物理地址;使所述虚拟机系统在隔离出的所述地址空间和中断环境中,根据所述物理地址,使用所述处理器运行所述虚拟机程序。
优选地,所述运行模块在使所述虚拟机系统通过所述操作系统的线性地址到所述虚拟机程序的线性地址的二次映射方式,确定所述虚拟机程序的物理地址时,为所述操作系统分配系统虚拟内存,使用所述系统虚拟内存加载运行所述虚拟机程序的相应页面,并获取所述系统虚拟内存的线性地址和所述相应页面的物理地址之间的对应关系;为所述操作系统建立所述系统虚拟内存和所述虚拟机系统使用的任务虚拟内存的映射关系;使所述操作系统根据所述系统虚拟内存的线性地址和所述相应页面的物理地址之间的对应关系,以及所述系统虚拟内存和所述任务虚拟内存的映射关系,建立所述任务虚拟内存和所述相应页面的物理地址之间的映射关系;使所述虚拟机系统根据所述任务虚拟内存和所述相应页面的物理地址之间的映射关系,确定所述虚拟机程序的物理地址。
与现有技术相比,本申请具有以下优点:
本申请的方案利用处理器架构的保护模式、分页机制及中断处理机制等特性,隔离操作系统,在独立的地址空间、中断环境下,使任意代码直接在处理器上安全执行,无须做任何软件模拟。相比传统的软件模拟方式,本申请的方案可以完全发挥出处理器的能力,执行效率更高,执行结果更准确,并且开发、维护成本更低,同时也具备传统软件模拟方式的跨平台移植的特点,有效解决了现有的纯软件模拟硬件方案的虚拟机模拟效果差,实现成本高的问题。
附图说明
图1是根据本申请实施例一的一种虚拟机实现方法的步骤流程图;
图2是根据本申请实施例二的一种虚拟机实现方法的步骤流程图;
图3是根据本申请实施例三的一种虚拟机实现方法的步骤流程图;
图4是根据本申请实施例四的一种虚拟机的结构框图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
实施例一
参照图1,示出了根据本申请实施例一的一种虚拟机实现方法的步骤流程图。
本实施例的虚拟机实现方法包括以下步骤:
步骤S102:使用处理器的保护模式、分页机制和中断处理机制构建虚拟机系统,从操作系统中隔离出虚拟机系统所需的独立的地址空间和中断环境。
保护模式是处理器(如CPU)的原生模式,在该模式下,涵盖了处理器所有的特点和指令,有着最好的性能。当操作系统在保护模式下时,INTEL架构允许将线性地址直接映射到一个大的物理空间(比如4GB的RAM)或者间接的(使用分页)映射到一个较小的内存和磁盘存储空间。后一种映射线性地址空间的方法通常被称作虚拟内存。当使用分页时,处理器将线性地址空间划分成固定尺寸的页,这些页可以被映射到物理内存或者磁盘存储空间。当一个进程(或者任务)引用一个内存中的逻辑地址的时候,处理器将这个地址转换为线性地址,然后使用分页机制将线性地址转换为相应的物理地址。而中断是一种改变处理器正常指令流的异步事件,对中断的处理是处理器必不可缺的处理之一。
本实施例中,使用处理器的保护模式、分页机制和中断处理机制构建出一个虚拟机系统,该虚拟机系统包括有从操作系统(也即真实操作系统)中隔离出的独立的地址空间和中断环境,在该虚拟机系统下运行的程序可在受控的环境下安全、正确地执行。“隔离”包括内容隔离和控制权隔离两方面,内容隔离包括地址空间、执行上下文环境(如:寄存器等)的独立;控制权隔离表示对所有的软硬件事件的优先处理权(即:中断处理),隔离出的独立的地址空间和中断环境内容独立、控制权优先。与使用纯软件方式模拟硬件环境相比,使用硬件机制实现虚拟机真实、正确、效率高,避免了软件方式模拟造成的效率低、复杂工况下虚拟机真实性、正确性难以保证的问题。
步骤S104:虚拟机系统在隔离出的地址空间和中断环境中,使用处理器运行虚拟机程序。
本实施例中,直接使用处理器如CPU处理虚拟机程序,直接执行虚拟机程序的机器指令,无须机器指令的软件模拟。
通过本实施例,利用处理器架构的保护模式、分页机制及中断处理机制等特性,隔离操作系统,在独立的地址空间、中断环境下,使任意代码直接在处理器上安全执行,无须做任何软件模拟。相比传统的软件模拟方式,本实施例可以完全发挥出处理器的能力,执行效率更高,执行结果更准确,并且开发、维护成本更低,同时也具备传统软件模拟方式的跨平台移植的特点,有效解决了现有的纯软件模拟硬件方案的虚拟机模拟效果差,实现成本高的问题。
实施例二
参照图2,示出了根据本申请实施例二的一种虚拟机实现方法的步骤流程图。
本实施例中,主要从CPU(中央处理器)的执行实现和MMU(内存管理单元)的内存映射两方面说明虚拟机的实现。CPU是实现特定平台机器指令的执行、维护相关的执行上下文环境,以及实现相关平台的特定机制,如:缺页、异常、中断等的功能元件;而MMU则是CPU执行指令过程中必不可少的支持元件,它一方面提供CPU正常执行所需的内存页映射,另一方面建立控制端(进程内存管理)与执行端的内存映射(控制端的进程内存管理可以理解为虚拟机系统中的一个组件,运行在真实操作系统中;执行端是虚拟机中创建的任务,运行在隔离的虚拟机环境中),从而提供对执行端内存的完全访问控制。
本实施例的虚拟机实现方法包括以下步骤:
步骤S202:利用CPU的保护模式、分页机制及中断处理机制,隔离操作系统,在独立的地址空间、中断环境下运行虚拟机程序。
优选地,可以利用INTEL架构下的CPU的保护模式、分页机制及中断处理机制,还可以利用INTEL架构的调试支持、性能监测支持等特性,可对运行的代码进行调试、跟踪、分析等。
隔离操作系统,构建独立的地址空间、中断环境以运行虚拟机程序,进行调试、跟踪、分析等主要包括:
构建地址空间,包括:构建CR3(控制寄存器3);
构建任务环境,包括:构建GDT(全局描述符表)、LDT(局部描述符表)、TSS(任务状态段);
构建中断环境,包括:构建IDT(中断描述符表)、APIC(高级可编程中断控制器);
构建任务切换,包括:设置CR3、GDTR(GDT寄存器)、IDTR(IDT寄存器)、APIC、TR(任务状态段寄存器)、CR(控制寄存器)等,使用软任务切换方式;
构建缺页处理,包括:响应正常的页映射或进行异常处理;
构建异常处理,包括:响应调试事件或启动异常处理机制;
构建中断处理,包括:浮点同步事件处理,其他的硬件中断处理(如:时钟、鼠标、键盘等等);
构建交互控制,包括:提供数据映射、上下文设置等控制、调试方法。
上述处理中,通过构建虚拟机系统使用的CR3,对CR3进行设置可以实现虚拟机系统使用的地址空间与真实操作系统使用的地址空间相隔离;通过构建虚拟机系统使用的IDT,使虚拟机系统优先响应虚拟机系统和真实操作系统的所有中断,可以实现虚拟机系统所需的中断环境与真实操作系统中断环境的隔离。
具体地,上述隔离操作系统,构建独立的地址空间、中断环境以运行虚拟机程序,进行调试、跟踪、分析的实现包括:
(1)构建地址空间
在开启分页机制的情况下,CPU对内存的存取需要依靠MMU进行线性地址到物理地址的转换,而MMU进行这些转换需要提供一张映射表,即页表(Page Table)。另外,CPU根据页表项中的部分设置提供硬件权限保护机制。
每个任务都有自己独立的页表以描述自己独立的地址空间,整个页表的地址,即页目录基址被保存在CR3寄存器(page-directory base register)中。正确设置CR3及页表项的值,就可以利用CPU的硬件机制,既可保护任务之间的地址空间隔离,又可使任务之间共享同一物理内存页,还可对执行指令权限、内存访问权限进行保护。
(2)构建任务环境
在保护模式下,各个内存段的属性被保存在全局描述符表(GDT)中,如:代码段(CS)、数据段(DS,ES,FS和GS)、堆栈段(SS)等,CPU在存取内存时,通过选择子(selector)定位到相应的内存描述符,以验证诸如权限、类型、起始、大小等属性。另外,中断描述符表(IDT)、任务状态段(TSS)、本地描述符表(LDT)等系统段的描述也储存在这里。
正确构造GDT并设置相应的描述符,是利用CPU其他硬件机制的前提,比如:构造IDT、构造TSS、权限保护等。
(3)构建中断环境及系统调用入口
当隔离虚拟机系统的中断环境时,可以构建虚拟机系统使用的IDT,使虚拟机系统优先响应虚拟机系统和真实操作系统的所有中断处理,包括:构建虚拟机系统使用的IDT,使虚拟机系统优先接收虚拟机系统和真实操作系统的所有中断;当中断为硬件系统和/或外部设备产生的中断时,将中断反馈给真实操作系统进行中断处理;当中断为虚拟机程序产生的中断时,虚拟机系统对中断进行中断处理。也即,隔离的虚拟机系统完全控制硬件环境,需要在第一时间响应所有的中断处理,即需要构造一个新的IDT。同时,还可以对快速系统调用的入口进行重新设置,使快速系统调用入口能够被虚拟机系统调用。另外,在多核(CPU)的环境(即真实操作系统为多处理器系统和/或多核系统)下,还需要屏蔽核间中断,即,多处理之间的中断和/或多核之间的中断。
具体地,对中断环境及系统调用入口的构建按处理方式分为以下四种情况:
(A)硬件系统、外部设备的中断事件
如:时钟、鼠标、键盘等。
这类事件虚拟机系统不做处理,直接反馈给真实操作系统并由真实操作系统进行处理,以保证真实操作系统的正常运转,如进行正常的任务切换、窗口响应等。
此类中断按中断号分布:
02H:非屏蔽中断(NMI Interrupt)
14H~1FH:Intel保留的中断向量
20H~29H:真实操作系统保留的中断向量
2FH:真实操作系统保留的中断向量
30H~255H:其他系统运行时分配的中断(如:时钟、鼠标、键盘等)
(B)虚拟机任务的中断(异常)事件
如:缺页异常(#PF)、断点陷阱(#BP)、通用保护错误(#GP)等。
这类事件需要虚拟机系统替代真实操作系统加以处理,模拟真实操作系统在此类事件下的行为,以保证虚拟机中的任务按照正确的流程运行。如响应正常的页面映射(Page In)或进行异常处理(SEH)等。
此类中断按中断号分布:
00H:Divide Error Exception(#DE)
01H:Debug Exception(#DB)
03H:Breakpoint Trap(#BP)
04H:Overflow Trap(#OF)
05H:BOUND Range Exceeded(#BR)
06H:Invalid Opcode Code(#UD)
07H:Device Not Available(#NM)
08H:Double Fault Exception(#DF)
09H:Coprocessor Segment Overrun
0AH:Invalid TSS Exception(#TS)
0BH:Segment Not Present(#NP)
0CH:Stack Fault Exception(#SS)
0DH:General Protection(#GP)
0EH:Page-Fault Exception(#PF)
0FH:Intel reserved
10H:x87FPU Error(#MF)
11H:Align Check Exception(#AC)
12H:Machine Check Exception(#MC)
13H:SIMD FPU Exception(#XM)
2AH:Get Tick Count Handler
2BH:User-Mode Callback Return
2CH:Debug Assertion Handler
2DH:Debug Service Handler
2EH:System Call Service Handler
(C)虚拟机任务的快速系统调用指令
隔离操作系统还需要重新设置虚拟机任务环境中的快速系统调用指令所对应的MSR寄存器,以使其被虚拟机系统调用。
(D)多核(CPU)系统的核间中断
也即,当操作系统为多处理器系统和/或多核系统时,多处理器之间和/或多核之间的中断屏蔽。
在多核(CPU)的环境下,隔离操作系统还需要修改高级可编程中断控制器(APIC)的本地向量表(LVT),以屏蔽核间中断。
(4)构建任务状态段
按照x86架构的规范,每个CPU任务的状态描述需要存储在一个叫做任务状态段(TSS)的数据结构中,并在GDT中分配一个描述符来描述此TSS的位置、大小等信息。CPU通过特定的选择子——TR寄存器来索引指定的任务状态。
TSS中需要正确设定系统环境(0环)的堆栈入口(SS:ESP)以保证CPU在处理中断、异常时能够正确的进行用户模式/系统模式的环境切换。
正确设置TSS是任务切换的前提条件。
(5)构建任务切换
即,真实操作系统任务与虚拟机任务之间的任务切换,也就是虚拟机控制端所属的任务(真实操作系统任务)与虚拟机内执行的任务之间的任务切换。
x86架构的任务切换分为硬件任务切换和软件任务切换两种方式。和现代操作系统(Windows、Linux)类似,本实施例所选择的方式也是软任务切换,但不同于现代操作系统的是,虚拟机系统在进行任务切换时不仅需要进行任务隔离(切换),还需要将操作系统也进行隔离(切换)。
在前述处理的基础上,在进行软任务切换前,还需要做的一项准备工作就是构造任务切换的上下文(Context)。不同于现代操作系统的是,虚拟机系统在进行任务切换时不仅需要准备任务上下文——用于任务切换,还需要准备内核上下文——用于操作系统切换(隔离)。
其中:
(H)任务上下文
虚拟机中的任务环境就是标准的x86任务环境。
由于用户层与系统层是通过中断/异常的方式进行交互的,所以任务上下文首先是一个标准的中断/异常栈帧(取决于IDT对应描述符的类型设置)。快速系统调用/返回最终也转换为中断栈帧统一处理。在中断/异常栈帧之后保存其他相关的寄存器(如:通用寄存器、段寄存器等),为内核上下文切换做准备。
用户层通过中断/异常/系统调用等方式进入内核,内核经过适当的处理后,再通过对应的中断返回/异常返回/快速系统调用返回等方式返回到用户层继续执行。
(I)内核上下文
内核上下文切换的目的是为了隔离操作系统,即在真实操作系统内核与虚拟机系统内核之间相互切换。当运行虚拟机程序时,通过内核上下文切换将真实操作系统内核切换为虚拟机系统内核;在虚拟机系统内核下,处理器在隔离出的地址空间和中断环境中运行虚拟机程序。
内核上下文切换的实现是基于两个内核栈的切换:
首先在源内核栈内,保存相关寄存器(如:通用寄存器、段寄存器等),保存源内核的系统设置(如:GDT、IDT、CR0、CR4等),保存源栈指针(ESP),然后切换到目标内核栈;在目标内核栈内,保存源内核的系统设置并切换到目标内核的系统设置(如:CR3、TSS等),设置目标内核的系统设置(如:GDT、IDT、CR0、CR4等);至此,完成内核上下文的切换,即真实操作系统内核与虚拟机系统内核切换完毕。
然后继续执行目标内核中的后续操作:如在虚拟机内核中,表示之前进入内核的事件已经处理完毕,则通过之前进入内核的对应方式返回到用户层继续执行;如在操作系统内核中,表示虚拟机中的任务有事件需要虚拟机系统处理,则通过调用路径返回虚拟机系统的控制端(虚拟机系统中的一个组件,运行在真实操作系统中),由控制端进行相应的处理。
以下,以一个具体实例为例,说明进行了上述处理后,真实操作系统与虚拟机系统的任务切换和执行。
例如,将虚拟机系统简称为a,真实操作系统简称为A,a本身只是A的一个任务,简称为T,T参与A正常的任务调度。而T(a)创建的在虚拟机中执行的任务简称为t,t附属于T,也就是说t所能使用的时间片就是A分配给T的时间片,T与t共用此时间片,不会造成A额外的开销,从而保证了A的稳定运行,包括:
(A1)T在A的任务队列中排队,等待被调度执行。
(B1)T被调度继续执行。
(C1)T在处理过程中,如果时间片用完,则随时跳到(A1)。
(D1)T处理完毕,切换到t继续执行。
(E1)t产生事件,切换到T,如果t未结束则跳到(C1)进行处理。
(F1)t已结束。
在x86平台上(x64原理相同,只是数据结构略有不同,本申请中所有提及x86架构的均适用于x64),一个任务(Task)的状态包括:地址空间及各寄存器的值(包括系统寄存器的设置,如:TR、CR、GDT、IDT和各种MSR等)。一个任务的创建就是要正确设置这些状态。同理,任务隔离(切换)就是要确保这些状态得以保存和恢复。通过上述处理,实现了真实操作系统和虚拟机系统的任务隔离。
步骤S202利用CPU固有特性,可使任意代码直接在CPU上安全执行。相比传统的软件模拟方式,可以完全发挥出CPU的能力,执行效率更高,执行结果更准确,并且开发、维护成本更低,同时也具备传统软件模拟方式的跨平台移植的特点。另一方面,由于被执行的代码是在屏蔽了操作系统的独立环境中执行的,产生的任何结果都不会影响本机系统(即真实操作系统),同时,由于常规的调试方法(如WinDbg等)无法进行调试跟踪,使得步骤S202中的处理可用于进行一些特殊的任务处理,如调试跟踪处理等。
步骤S204:在虚拟机程序运行过程中,对虚拟机程序任务进行执行控制和调试。
一个虚拟机任务的执行除了前述的执行机制,还需要提供相应的可供执行的内容。并且,在虚拟机任务的执行过程中会产生各种软硬件事件需要虚拟机系统进行响应处理,比如:缺页、系统调用、异常、鼠标键盘、时钟中断等。同时,虚拟机系统本身就是一个调试器,可以对虚拟机内执行的任务做到完全控制,比如设置断点、修改内容、改变流程等。通过本步骤,可以实现对虚拟机程序任务执行的控制和调制。
下面依次对虚拟机任务执行过程中涉及的内存映射、事件处理、以及任务控制和调试进行说明。
(1)内存映射
内存映射分为两部分:在虚拟机系统的任务地址空间内的内存映射(任务内存映射)和在虚拟机系统控制端(运行在真实操作系统)地址空间内的内存映射(系统内存映射)。
(A)在虚拟机系统的任务地址空间内
在x86分页机制下,CPU对内存的访问需要通过MMU解析页表来得到线性地址所对应的物理内存地址。
这一部分是硬件执行机制所要求的标准的操作,即设置线性地址到物理地址的映射关系,也就是设置线性地址所对应的页表项中的物理页地址,同时设置相应的属性,如:读/写、权限等。
(B)在虚拟机系统控制端地址空间内
x86的分页机制可以有效的保护任务间的地址空间相互隔离,不同任务之间无法直接访问彼此的地址空间。但是,作为虚拟机系统需要完全控制被运行的虚拟机任务,所以还需要提供一种机制,可以将被运行的虚拟机任务的地址空间也映射进虚拟机系统控制端的地址空间内,从而方便实现在虚拟机系统控制端内就可以对被运行的虚拟机任务进行完全的内容控制。
由于不同地址空间的线性地址可能发生冲突,比如两个地址空间的同一线性地址都被占用的情况,源地址空间的线性地址无法保证能够映射进目标地址空间的同一线性地址,所以,虚拟机系统采用线性地址到线性地址的二次映射方式来实现这一机制,比如源地址空间的线性地址601000H映射为目标地址空间的线性地址401000H。虚拟机系统将这种映射关系称之为“影子映射”。这种实现方式类似软件模拟MMU功能,所不同的是MMU为线性地址到物理地址的映射。
例如,虚拟机系统在隔离出的地址空间和中断环境中,使用处理器运行虚拟机程序时,虚拟机系统通过虚拟机系统的线性地址到虚拟机程序的线性地址的二次映射方式,确定虚拟机程序的物理地址;进而,虚拟机系统在隔离出的地址空间和中断环境中,根据物理地址,使用处理器运行虚拟机程序。更具体地,在虚拟机系统通过虚拟机系统的线性地址到虚拟机程序的线性地址的二次映射方式,确定虚拟机程序的物理地址时,虚拟机系统分配系统虚拟内存,使用系统虚拟内存加载运行虚拟机程序的相应页面,并获取系统虚拟内存的线性地址和相应页面的物理地址之间的对应关系;虚拟机系统建立系统虚拟内存和运行虚拟机程序使用的任务虚拟内存的映射关系;虚拟机系统根据系统虚拟内存的线性地址和相应页面的物理地址之间的对应关系,和系统虚拟内存和任务虚拟内存的映射关系,建立任务虚拟内存和相应页面的物理地址之间的映射关系;虚拟机系统根据任务虚拟内存和相应页面的物理地址之间的映射关系,确定虚拟机程序的物理地址。
下面,以一个实例说明上述映射流程,该流程包括:
(A2)虚拟机程序任务访问内存地址401000H处,由于此页还未加载,触发缺页中断进入虚拟机内核。
(B2)经过前述任务切换机制,虚拟机系统从虚拟机环境切换到当前操作系统环境,并将此缺页信息返回给控制端(运行在真实操作系统)。
(C2)控制端获得对应虚拟机程序任务内存地址401000H处的一页内容(比如从磁盘文件中)及其对应的内存属性。
(D2)控制端分配一页大小的虚拟内存,假设分配得到的线性地址为601000H,对应的物理地址为A00000H,并将刚获得的一页内容拷贝至此。
(E2)控制端建立虚拟机程序任务内存地址401000H到控制端内存地址601000H的“影子映射”。
(F2)控制端修改虚拟机程序任务线性地址401000H所对应的页表项,将其也映射在物理内存A00000H处,并将获得的内存属性也填上。
至此,两种映射都已建立完毕。再经过前述的任务切换机制,虚拟机系统从当前操作系统环境切换到虚拟机环境,进入虚拟机内核并通过中断返回。虚拟机程序任务由于内存地址401000H处的内存已经得到正确加载,可以继续执行后续的流程。
当虚拟机系统的控制端利用“影子映射”机制直接访问虚拟机程序任务的地址空间时,包括:
(A3)假设控制端需要读取虚拟机任务内存地址401234H处的一个DWORD。
(B3)计算401234H所对应的页起始地址为401000H,偏移234H。
(C3)查找“影子映射”获得401000H的映射页为601000H,即:控制端601000H偏移234H处即为虚拟机程序任务内存地址401234H处。
(D3)直接读出601234H处的一个DWORD。
通过上述处理,实现了虚拟机系统内存地址的控制和管理。
(2)事件处理
虚拟机程序任务在执行的过程中不可避免的会被各种软硬件事件所中断,下面对需要虚拟机系统进行处理的中断事件进行介绍。
(H)异常
需要虚拟机系统处理的中断事件类型中绝大多数都属于异常。异常事件的产生分为两种情况,需要分别进行处理:
(H1)虚拟机程序任务在执行过程中产生了异常(如:非法内存访问、无效指令等)。
在这种情况下,虚拟机系统的处理方式就是模拟真实操作系统的异常处理机制(如:SEH、VEH、Unhandled Exception Handler等),构造异常处理上下文,并执行虚拟机任务的异常处理回调函数。
(H2)虚拟机系统在调试虚拟机程序任务时产生的调试事件(如:触发了断点等)。
在这种情况下,虚拟机系统提供接口与操作者交互,并按照操作者的意图进行处理。比如:取消断点、修改虚拟机任务的上下文、改变虚拟机任务的流程等。
(I)页异常
即中断0EH:Page-Fault Exception(#PF)。
页异常分为正常缺页和访问错误两种。正常缺页时可依照前述“内存映射”部分的正常缺页的处理流程。但如果发生的是访问错误,则需要转入上面(H)中的异常处理流程进行处理。
(J)浮点同步事件
即中断07H:Device Not Available(#NM)。
x86系统中的x87FPU、MMX、SSE/SSE2/SSE3等处理单元也有一套相应的上下文环境,相比传统整数处理单元的上下文要大得多,频繁的存储/恢复会比较低效。
另一方面,大多数任务很少使用或根本不使用这些指令集,尤其是在操作系统任务调度所分配的某个执行时间片内更少会碰到使用的情况。
因此,x86架构提供了一套按需存储/恢复这些处理单元上下文的机制:首先,在控制寄存器中设置相应标志位标识这些处理单元无效。然后,在任务运行过程中第一次使用了这些处理单元的指令集时,由于这些处理单元被标识为无效,则会触发此中断。此时才需要正确的存储/恢复这些处理单元上下文,并将控制寄存器中相应标志位复位,以标识这些处理单元有效,继而可以正确的使用。
真实操作系统正是这样管理这些处理单元上下文的,虚拟机系统也必须如此这般管理这些处理单元上下文,才不会破坏整个真实操作系统的运行环境。
(K)系统服务调用
即中断2EH:System Call Service Handler或sysenter/syscall指令(通过MSR的设置进入/退出内核)。
任何程序的执行都离不开系统服务,所以,在需要虚拟机系统处理的中断事件中,大多数都是系统服务调用。
在系统调用发生时,会传递系统服务的标识及相应的参数列表。虚拟机系统按照系统服务标识调用相应的实现例程,然后将结果返回给虚拟机任务,以完成一次系统服务调用。
虚拟机系统服务的实现可模拟真实操作系统的服务实现。
(L)特殊系统服务/机制
即中断:
2AH:Get Tick Count Handler
2BH:User-Mode Callback Return
2CH:Debug Assertion Handler
2DH:Debug Service Handler
这些特殊的系统服务/机制需要虚拟机系统按照真实操作系统的实现规范进行模拟实现并进行正确的处理及返回虚拟机任务。
(3)控制、调试
结合x86架构的硬件调试机制。虚拟机系统可以提供丰富的控制、调试方法。
其中,控制执行流程可通过修改虚拟机任务的内存、上下文(如:EIP)等方法实现;单步执行可利用x86架构的硬件单步机制实现;软件断点可通过在虚拟机任务的执行路径上插入断点/异常指令(如:CCH)等经典方法实现;硬件断点可支持所有的x86架构的硬件断点机制,如:硬件读/写/执行等;区域断点可利用x86架构的缺页机制实现;事件断点,如:异常、中断、系统服务调用(包括API)、内存访问等所有事件都可设置断点;条件断点可在上述所有断点的基础上,提供通配/正则支持。
通过本实施例,实现了虚拟机系统模拟真实操作系统的各种处理,无须做任何软件模拟,任意代码可以直接在处理器上安全执行,可以完全发挥出处理器的能力,执行效率更高,执行结果更准确,并且开发、维护成本更低。
实施例三
参照图3,示出了根据本申请实施例三的一种虚拟机实现方法的步骤流程图。
本实施例以恶意软件(病毒)行为分析为例,对本申请的虚拟机实现方法进行说明。
任何可执行程序都是由特定平台的机器指令序列所组成的,并在执行过程中通过组合调用操作系统提供的服务(API)来完成自己特定的功能。因此,只要能够模拟相应平台的机器指令及相关机制,并且模拟真实操作系统提供的服务,就可以使被分析的程序正确地执行。
本实施例的虚拟机实现方法包括以下步骤:
步骤S302:确定使用虚拟机系统对恶意软件(虚拟机程序)进行行为分析。
一般来说,恶意软件多为PE文件,任何PE文件(*.exe、*.dll、*.sys等)都可以使用虚拟机系统进行分析处理。如经过格式判定后,创建虚拟机系统的进程对象、线程对象,通过Loader加载所需模块,处理重定位、导入、导出等,映射所需内存页,处理TLS等,最后加载程序入口所在页,从入口点开始执行。
步骤S304:准备恶意软件行为分析的任务环境。
包括:构建虚拟机系统使用的CR3,对CR3进行设置,隔离虚拟机系统与真实操作系统使用的地址空间;以及,构建虚拟机系统使用的IDT,使虚拟机系统优先响应所有中断;并且,设置快速系统调用入口,使快速系统调用入口被虚拟机系统调用。
例如,当构建虚拟机系统使用的CR3,对CR3进行设置,隔离虚拟机系统与真实操作系统使用的地址空间时,可以根据当前真实操作系统设置的分页模式(如:32-bit、PAE、IA-32e),CR3的内容有所不同。以32-bit举例:分配第一级页目录所在的内存页,初始化并将此页所对应的物理地址填入CR3,即完成了CR3寄存器(page-directory base register)的初始化,此时的地址空间全空(未进行任何映射)。对页表项的填充贯穿在整个虚拟执行过程中,如构建IDT表时首先需要分配IDT表的内存,此时就需要对分配的内存进行映射,即正确填充相应的页表项;再比如前文内存映射例子中对正常缺页的处理时,在获得了虚拟机任务的线性地址和物理地址的映射关系后,也需要正确填充相应的页表项。这样,MMU才能正常工作。
此外,在构建并初始化CR3和构造IDT以外,还构造GDT、分配虚拟机内核栈、和构造虚拟机TSS。
步骤S306:加载待分析文件,即加载待进行行为分析的恶意软件。
包括:进行内核上下文切换,将真实操作系统内核切换为虚拟机系统内核;虚拟机系统通过真实操作系统的线性地址到虚拟机程序的线性地址的二次映射方式,确定恶意软件的物理地址;虚拟机系统在构建的环境中,从确定的恶意软件的物理地址处,加载恶意软件,对恶意软件进行行为分析。
例如,通过Loader加载所需模块,处理重定位、导入、导出等,映射所需内存页,处理TLS等;最后加载程序入口所在页,并初始化虚拟机内核栈上下文;进行内核上下文切换,将真实操作系统内核切换为虚拟机系统内核,从而切换到虚拟机任务,从入口点开始执行。其中,Loader将可执行文件按照操作系统规范加载到内存并进行初始化的功能组件,实现:文件格式解析、映像地址映射(Section对象)、重定位处理、导入模块处理、进程初始化(堆、环境变量等)、线程初始化(栈、CPU等)、模块初始化(TLS、DllMain等)等功能,以及相应对象的创建。
步骤S308:执行并纪录程序行为。
在执行过程中处理各种软硬件事件,包括:模拟实现各种系统功能调用,纪录系统功能、参数、调用地址、结果等信息;模拟实现异常处理,纪录异常类型、地址等信息;非虚拟机任务的中断事件转交给操作系统处理。
步骤S310:待分析文件执行完毕,分析程序行为纪录,判别软件恶意行为。
本实施例以恶意软件行为分析为例说明了虚拟机的实现方法,对恶意软件的行为分析结果不会影响真实操作系统,不会造成真实操作系统的数据损失和系统崩溃。并且,执行效率更高,执行结果更准确,开发、维护成本更低,有效解决了现有的纯软件模拟硬件方案的虚拟机模拟效果差,实现成本高的问题。
实施例四
参照图4,示出了根据本申请实施例四的一种虚拟机的结构框图。
本实施例的虚拟机包括:隔离模块402,用于使用处理器的保护模式、分页机制和中断处理机制构建虚拟机系统,从操作系统(即真实操作系统)中隔离出虚拟机系统所需的独立的地址空间和中断环境;运行模块404,用于使虚拟机系统在隔离出的地址空间和中断环境中,使用处理器运行虚拟机程序。
优选地,隔离模块402在从操作系统中隔离出虚拟机系统所需的地址空间和中断环境时,构建虚拟机系统使用的CR3,通过对CR3进行设置使虚拟机系统使用的地址空间与操作系统使用的地址空间相隔离;构建虚拟机系统使用的IDT,使虚拟机系统优先响应虚拟机系统和操作系统的所有中断。
优选地,隔离模块402在构建虚拟机系统使用的IDT,使虚拟机系统优先响应虚拟机系统和操作系统的所有中断处理时,构建虚拟机系统使用的IDT,使虚拟机系统优先接收虚拟机系统和操作系统的所有中断;当中断为硬件系统和/或外部设备产生的中断时,将中断反馈给操作系统进行中断处理;当中断为虚拟机程序产生的中断时,虚拟机系统对中断进行中断处理。
优选地,隔离模块402还用于设置快速系统调用入口,使快速系统调用入口被虚拟机系统调用;和/或,当操作系统为多处理器系统和/或多核系统时,屏蔽多处理之间的中断和/或多核之间的中断。
优选地,运行模块404,用于通过内核上下文切换将操作系统内核切换为虚拟机系统内核;在虚拟机系统内核下,处理器在隔离出的地址空间和中断环境中运行虚拟机程序。
优选地,运行模块404,用于使虚拟机系统通过操作系统的线性地址到虚拟机程序的线性地址的二次映射方式,确定虚拟机程序的物理地址;使虚拟机系统在隔离出的地址空间和中断环境中,根据物理地址,使用处理器运行虚拟机程序。
优选地,运行模块404在使虚拟机系统通过操作系统的线性地址到虚拟机程序的线性地址的二次映射方式,确定虚拟机程序的物理地址时,为操作系统分配系统虚拟内存,使用系统虚拟内存加载运行虚拟机程序的相应页面,并获取系统虚拟内存的线性地址和相应页面的物理地址之间的对应关系;为操作系统建立系统虚拟内存和虚拟机系统使用的任务虚拟内存的映射关系;使操作系统根据系统虚拟内存的线性地址和相应页面的物理地址之间的对应关系,和系统虚拟内存和任务虚拟内存的映射关系,建立任务虚拟内存和相应页面的物理地址之间的映射关系;使虚拟机系统根据任务虚拟内存和相应页面的物理地址之间的映射关系,确定虚拟机程序的物理地址。
本实施例的虚拟机用于实现前述多个方法实施例中相应的虚拟机实现方法,并具有相应的方法实施例的有益效果,在此不再赘述。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统实施例虚拟机而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本申请所提供的一种虚拟机实现方法和虚拟机进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (13)

1.一种虚拟机实现方法,包括:
使用处理器的保护模式、分页机制和中断处理机制构建虚拟机系统,从操作系统中隔离出所述虚拟机系统所需的独立的地址空间和中断环境;
所述虚拟机系统在隔离出的所述地址空间和中断环境中,使用所述处理器运行虚拟机程序。
2.根据权利要求1所述的方法,所述从操作系统中隔离出所述虚拟机系统所需的地址空间和中断环境的步骤包括:
构建所述虚拟机系统使用的控制寄存器CR3,通过对所述CR3进行设置使所述虚拟机系统使用的地址空间与所述操作系统使用的地址空间相隔离;
构建所述虚拟机系统使用的中断描述符表IDT,使所述虚拟机系统优先响应所述虚拟机系统和所述操作系统的所有中断。
3.根据权利要求2所述的方法,所述构建所述虚拟机系统使用的IDT,使所述虚拟机系统优先响应所述虚拟机系统和所述操作系统的所有中断处理的步骤包括:
构建所述虚拟机系统使用的IDT,使所述虚拟机系统优先接收所述虚拟机系统和所述操作系统的所有中断;
当所述中断为硬件系统和/或外部设备产生的中断时,将所述中断反馈给所述操作系统进行中断处理;
当所述中断为所述虚拟机程序产生的中断时,所述虚拟机系统对所述中断进行中断处理。
4.根据权利要求3所述的方法,还包括:
设置快速系统调用入口,使所述快速系统调用入口被所述虚拟机系统调用;
和/或,
当所述操作系统为多处理器系统和/或多核系统时,屏蔽多处理器之间的中断和/或多核之间的中断。
5.根据权利要求1所述的方法,所述虚拟机系统在隔离出的所述地址空间和中断环境中,使用所述处理器运行虚拟机程序的步骤包括:
通过内核上下文切换将所述操作系统内核切换为所述虚拟机系统内核;
在所述虚拟机系统内核下,所述处理器在隔离出的所述地址空间和中断环境中运行所述虚拟机程序。
6.根据权利要求1所述的方法,所述虚拟机系统在隔离出的所述地址空间和中断环境中,使用所述处理器运行虚拟机程序的步骤包括:
所述虚拟机系统通过所述操作系统的线性地址到所述虚拟机程序的线性地址的二次映射方式,确定所述虚拟机程序的物理地址;
所述虚拟机系统在隔离出的所述地址空间和中断环境中,根据所述物理地址,使用所述处理器运行所述虚拟机程序。
7.根据权利要求6所述的方法,所述虚拟机系统通过所述操作系统的线性地址到所述虚拟机程序的线性地址的二次映射方式,确定所述虚拟机程序的物理地址的步骤包括:
所述操作系统分配系统虚拟内存,使用所述系统虚拟内存加载运行所述虚拟机程序的相应页面,并获取所述系统虚拟内存的线性地址和所述相应页面的物理地址之间的对应关系;
所述操作系统建立所述系统虚拟内存和所述虚拟机系统的任务虚拟内存的映射关系;
所述操作系统根据所述系统虚拟内存的线性地址和所述相应页面的物理地址之间的对应关系,以及所述系统虚拟内存和所述任务虚拟内存的映射关系,建立所述任务虚拟内存和所述相应页面的物理地址之间的映射关系;
所述虚拟机系统根据所述任务虚拟内存和所述相应页面的物理地址之间的映射关系,确定所述虚拟机程序的物理地址。
8.一种虚拟机,包括:
隔离模块,用于使用处理器的保护模式、分页机制和中断处理机制构建虚拟机系统,从操作系统中隔离出所述虚拟机系统所需的独立的地址空间和中断环境;
运行模块,用于使所述虚拟机系统在隔离出的所述地址空间和中断环境中,使用所述处理器运行虚拟机程序。
9.根据权利要求8所述的虚拟机,所述隔离模块在从操作系统中隔离出所述虚拟机系统所需的地址空间和中断环境时,构建所述虚拟机系统使用的控制寄存器CR3,通过对所述CR3进行设置使所述虚拟机系统使用的地址空间与所述操作系统使用的地址空间相隔离;构建所述虚拟机系统使用的中断描述符表IDT,使所述虚拟机系统优先响应所述虚拟机系统和所述操作系统的所有中断。
10.根据权利要求9所述的虚拟机,所述隔离模块在构建所述虚拟机系统使用的IDT,使所述虚拟机系统优先响应所述虚拟机系统和所述操作系统的所有中断处理时,构建所述虚拟机系统使用的IDT,使所述虚拟机系统优先接收所述虚拟机系统和所述操作系统的所有中断;当所述中断为硬件系统和/或外部设备产生的中断时,将所述中断反馈给所述操作系统进行中断处理;当所述中断为所述虚拟机程序产生的中断时,所述虚拟机系统对所述中断进行中断处理。
11.根据权利要求8所述的虚拟机,所述运行模块,用于通过内核上下文切换将所述操作系统内核切换为所述虚拟机系统内核;在所述虚拟机系统内核下,所述处理器在隔离出的所述地址空间和中断环境中运行所述虚拟机程序。
12.根据权利要求8所述的虚拟机,所述运行模块,用于使所述虚拟机系统通过所述操作系统的线性地址到所述虚拟机程序的线性地址的二次映射方式,确定所述虚拟机程序的物理地址;使所述虚拟机系统在隔离出的所述地址空间和中断环境中,根据所述物理地址,使用所述处理器运行所述虚拟机程序。
13.根据权利要求12所述的虚拟机,所述运行模块在使所述虚拟机系统通过所述操作系统的线性地址到所述虚拟机程序的线性地址的二次映射方式,确定所述虚拟机程序的物理地址时,为所述操作系统分配系统虚拟内存,使用所述系统虚拟内存加载运行所述虚拟机程序的相应页面,并获取所述系统虚拟内存的线性地址和所述相应页面的物理地址之间的对应关系;为所述操作系统建立所述系统虚拟内存和所述虚拟机系统使用的任务虚拟内存的映射关系;使所述操作系统根据所述系统虚拟内存的线性地址和所述相应页面的物理地址之间的对应关系,以及所述系统虚拟内存和所述任务虚拟内存的映射关系,建立所述任务虚拟内存和所述相应页面的物理地址之间的映射关系;使所述虚拟机系统根据所述任务虚拟内存和所述相应页面的物理地址之间的映射关系,确定所述虚拟机程序的物理地址。
CN201210260498.6A 2012-07-25 2012-07-25 虚拟机实现方法与虚拟机 Active - Reinstated CN102831006B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210260498.6A CN102831006B (zh) 2012-07-25 2012-07-25 虚拟机实现方法与虚拟机

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210260498.6A CN102831006B (zh) 2012-07-25 2012-07-25 虚拟机实现方法与虚拟机

Publications (2)

Publication Number Publication Date
CN102831006A true CN102831006A (zh) 2012-12-19
CN102831006B CN102831006B (zh) 2017-04-12

Family

ID=47334155

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210260498.6A Active - Reinstated CN102831006B (zh) 2012-07-25 2012-07-25 虚拟机实现方法与虚拟机

Country Status (1)

Country Link
CN (1) CN102831006B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104035811A (zh) * 2014-07-01 2014-09-10 龙芯中科技术有限公司 虚拟机现场数据的处理方法和装置
CN107003888A (zh) * 2014-11-25 2017-08-01 微软技术许可有限责任公司 硬件加速虚拟上下文切换
CN109684031A (zh) * 2018-11-22 2019-04-26 海光信息技术有限公司 一种访问虚拟机控制块的方法和装置以及cpu核
CN109858288A (zh) * 2018-12-26 2019-06-07 中国科学院信息工程研究所 实现虚拟机安全隔离的方法与装置
CN112181626A (zh) * 2020-10-16 2021-01-05 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 脱离Android操作系统调度CPU的系统、方法及介质
CN112464221A (zh) * 2019-09-09 2021-03-09 北京奇虎科技有限公司 内存访问行为的监控方法及系统
CN112527457A (zh) * 2020-12-11 2021-03-19 成都云铀子网络科技有限公司 一种通用Unicorn模拟指令执行的虚拟机实现方法
CN116991543A (zh) * 2023-09-26 2023-11-03 阿里云计算有限公司 宿主机、虚拟化实例自省方法及存储介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1797345A (zh) * 2004-12-30 2006-07-05 微软公司 用于虚拟化图形子系统的系统和方法
US20070078891A1 (en) * 2003-09-30 2007-04-05 Eric Lescouet Operating systems
CN101093449A (zh) * 2007-06-22 2007-12-26 浙江大学 基于处理器虚拟化技术的虚拟机系统及其实现方法
CN101135997A (zh) * 2006-08-29 2008-03-05 联想(北京)有限公司 一种虚拟机系统及其硬件设备中断处理方法
CN102195940A (zh) * 2010-03-12 2011-09-21 北京路模思科技有限公司 一种基于虚拟机技术安全输入和提交数据的方法和系统
CN102541616A (zh) * 2010-12-17 2012-07-04 北京凯思昊鹏软件工程技术有限公司 一种嵌入式操作系统虚拟机及其实现方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070078891A1 (en) * 2003-09-30 2007-04-05 Eric Lescouet Operating systems
CN1797345A (zh) * 2004-12-30 2006-07-05 微软公司 用于虚拟化图形子系统的系统和方法
CN101135997A (zh) * 2006-08-29 2008-03-05 联想(北京)有限公司 一种虚拟机系统及其硬件设备中断处理方法
CN101093449A (zh) * 2007-06-22 2007-12-26 浙江大学 基于处理器虚拟化技术的虚拟机系统及其实现方法
CN102195940A (zh) * 2010-03-12 2011-09-21 北京路模思科技有限公司 一种基于虚拟机技术安全输入和提交数据的方法和系统
CN102541616A (zh) * 2010-12-17 2012-07-04 北京凯思昊鹏软件工程技术有限公司 一种嵌入式操作系统虚拟机及其实现方法

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104035811A (zh) * 2014-07-01 2014-09-10 龙芯中科技术有限公司 虚拟机现场数据的处理方法和装置
CN104035811B (zh) * 2014-07-01 2017-07-28 龙芯中科技术有限公司 虚拟机现场数据的处理方法和装置
CN107003888A (zh) * 2014-11-25 2017-08-01 微软技术许可有限责任公司 硬件加速虚拟上下文切换
CN107003888B (zh) * 2014-11-25 2020-06-19 微软技术许可有限责任公司 在隔离的虚拟上下文之间切换的方法、系统和介质
CN109684031A (zh) * 2018-11-22 2019-04-26 海光信息技术有限公司 一种访问虚拟机控制块的方法和装置以及cpu核
CN109684031B (zh) * 2018-11-22 2021-07-06 海光信息技术股份有限公司 一种访问虚拟机控制块的方法和装置以及cpu核
CN109858288B (zh) * 2018-12-26 2021-04-13 中国科学院信息工程研究所 实现虚拟机安全隔离的方法与装置
CN109858288A (zh) * 2018-12-26 2019-06-07 中国科学院信息工程研究所 实现虚拟机安全隔离的方法与装置
CN112464221A (zh) * 2019-09-09 2021-03-09 北京奇虎科技有限公司 内存访问行为的监控方法及系统
CN112181626A (zh) * 2020-10-16 2021-01-05 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 脱离Android操作系统调度CPU的系统、方法及介质
CN112527457A (zh) * 2020-12-11 2021-03-19 成都云铀子网络科技有限公司 一种通用Unicorn模拟指令执行的虚拟机实现方法
CN116991543A (zh) * 2023-09-26 2023-11-03 阿里云计算有限公司 宿主机、虚拟化实例自省方法及存储介质
CN116991543B (zh) * 2023-09-26 2024-02-02 阿里云计算有限公司 宿主机、虚拟化实例自省方法及存储介质

Also Published As

Publication number Publication date
CN102831006B (zh) 2017-04-12

Similar Documents

Publication Publication Date Title
CN102831006A (zh) 虚拟机实现方法与虚拟机
CN100568181C (zh) 基于处理器虚拟化技术的虚拟机系统及其实现方法
Bruening et al. Transparent dynamic instrumentation
Alkassar et al. Automated verification of a small hypervisor
CN101271401B (zh) 一种具备单一系统映像的服务器机群系统
Fattori et al. Dynamic and transparent analysis of commodity production systems
CN109690484A (zh) 在虚拟机进入时转换
DE112015006934T5 (de) Verschachtelte Virtualisierung für virtuelle Maschinenexits
CN101398768A (zh) 一种分布式虚拟机监视器系统的构建方法
CN101894045A (zh) 一种实时Linux操作系统
JPH0887420A (ja) プロセス・スレッドを管理する方法および装置
CN104364768A (zh) 确定运行时间仪表控制的状态
Lankes et al. Exploring rust for unikernel development
US20210294686A1 (en) Fast memory mapped io support by register switch
US10754796B2 (en) Efficient user space driver isolation by CPU page table switching
Hale et al. Enabling hybrid parallel runtimes through kernel and virtualization support
Zuo et al. Performance tuning towards a KVM-based low latency virtualization system
Ma et al. DVM: A big virtual machine for cloud computing
Chen et al. Toward compositional verification of interruptible os kernels and device drivers
Hoque et al. WebAssembly for Edge Computing: Potential and Challenges
Wang Design and Implementation of the MTX Operating system
US10496555B2 (en) Implementing per-thread memory access permissions
Ma et al. DVM: Towards a datacenter-scale virtual machine
Carothers et al. Linux support for transparent checkpointing of multithreaded programs
Huang et al. PVM: Efficient Shadow Paging for Deploying Secure Containers in Cloud-native Environment

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170412

Termination date: 20190725

RR01 Reinstatement of patent right

Former decision: termination of patent right due to unpaid annual fee

Former decision publication date: 20200714

RR01 Reinstatement of patent right
CP01 Change in the name or title of a patent holder

Address after: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee after: Beijing Qizhi Business Consulting Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

CP01 Change in the name or title of a patent holder
TR01 Transfer of patent right

Effective date of registration: 20220311

Address after: 100020 1773, 15 / F, 17 / F, building 3, No.10, Jiuxianqiao Road, Chaoyang District, Beijing

Patentee after: Sanliu0 Digital Security Technology Group Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Beijing Qizhi Business Consulting Co.,Ltd.

TR01 Transfer of patent right