一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于混合虚拟化的终端虚拟机生成系统及方法与流程

2021-11-09 22:12:00 来源:中国专利 TAG:
1.本发明涉及虚拟机
技术领域
:,尤其涉及一种基于混合虚拟化的终端虚拟机生成系统及方法。
背景技术
::2.按照goldberg的定义,虚拟机监视器是能够为计算机系统创建高效、隔离的副本的软件。这些副本即为虚拟机(virtualmachine,vm),在虚拟机内虚拟处理器的指令集的一个子集能够直接在物理处理器上执行。根据虚拟机监视器(vmm)在整个物理系统中的实现位置和实现方法的不同,goldberg定义了两种虚拟机监视器模型,即typeivmm和typeiivmm,具体结构如图1所示。3.typeivmm在操作系统之前预先安装,然后在此虚拟机监视器之上安装客户操作系统,它可以在硬件支持下拥有最佳性能,如ibmvm/370,vmwareesxserver,xen,denali等均属于这样的虚拟机。typeivmm通常都是以一个轻量级操作系统的形式实现。typeiivmm则是安装在已有的主机操作系统(宿主操作系统)之上,此类虚拟机监视器通过宿主操作系统来管理和访问各类资源(如文件和各类i/o设备等),如vmwareworkstation、parallelworkstation等。4.硬件抽象层的虚拟化技术有着高度的客户虚拟系统的隔离性(包括客户操作系统之间,客户操作系统和宿主操作系统之间)。这种隔离性使得在同一个物理平台上,可以同时运行不同类型的操作系统,而且它们的重启等操作不会互相影响。在用户看来,隔离性使得物理平台被划分成不同虚拟机器。由于用户面对的是虚拟机器,用户需要更多的系统安装和配置工作。5.因此,本发明提出了一种基于混合虚拟化的终端虚拟机生成系统及方法。技术实现要素:6.本发明的目的是针对现有技术的缺陷,提供了一种基于混合虚拟化的终端虚拟机生成系统及方法。7.为了实现以上目的,本发明采用以下技术方案:8.一种基于混合虚拟化的终端虚拟机生成系统,包括虚拟机监控器、包含原生操作系统的主虚拟机、负责数据转发操作的从虚拟机;9.虚拟机监控器,用于为上层运行的原生操作系统提供虚拟化的硬件资源;10.主虚拟机,与虚拟机监控器连接,用于负责与虚拟机监控器提供的管理api进行交互,并通过用户模式下的管理工具来管理虚拟机环境;11.从虚拟机,与虚拟机监控器连接,用于通过设备映射的方式,将主虚拟机的虚拟设备驱动进行映射,并与主虚拟机共享虚拟设备驱动。12.进一步的,所述主虚拟机中还设有管理机;所述管理机用于负责管理外部设备。13.进一步的,所述虚拟机监控器还包括虚拟机管理、内存管理、本地中断/异常管理、本地虚拟设备、远端虚拟设备、管理接口。14.进一步的,所述本地中断/异常管理包括:外部设备中断由主虚拟机中的管理机处理,外部设备异常由虚拟机监控器内核处理。15.进一步的,所述内存管理包括对管理机进行修改、虚拟监控器对与自身相关的内存进行管理。16.相应的,还提供一种基于混合虚拟化的终端虚拟机生成方法,包括:17.虚拟机监控器为上层运行的原生操作系统提供虚拟化的硬件资源;18.包含原生操作系统的主虚拟机负责与虚拟机监控器提供的管理api进行交互,并通过用户模式下的管理工具来管理虚拟机环境;19.负责数据转发操作的从虚拟机通过设备映射的方式,将主虚拟机的虚拟设备驱动进行映射,并与主虚拟机共享虚拟设备驱动。20.与现有技术相比,本发明的有益效果为:21.1)将硬件虚拟化技术和操作系统虚拟化技术结合,即解决了硬件虚拟化技术可以不依赖于裸机安装,但是仍然保留硬件虚拟化的底层安全性;又可以解决操作系统虚拟化安全性依赖于宿主操作系统的问题,传统操作系统虚拟化产品无法成为终端安全产品的根本原因。22.2)混合虚拟化的技术,可以继承原有终端pc环境的所有数据和应用,将原有环境封装导入到主虚拟机中,使得终端资产得以顺利继承。23.3)混合虚拟化后的终端虚拟机之间具有很高的安全隔离性,可以适用于各种操作系统环境,包括windows,管理机和各种国产操作系统。附图说明24.图1是
背景技术
:提供的typeivmm与typeiivmm体系结构示意图;25.图2是实施例一提供的混合虚拟化虚拟机监控器架构示意图;26.图3是实施例二提供的虚拟机监控器的实现模型示意图;27.图4是实施例二提供的可屏蔽中断的接入示意图;28.图5是实施例二提供的x86平台物理地址空间布局示意图;29.图6是实施例二提供的x86的两级地址转换示意图;30.图7是实施例二提供的ept地址转换机制示意图;31.图8是实施例二提供的虚拟机监控器的虚拟内存工作原理示意图;32.图9是实施例二提供的虚拟机监控器的虚拟内存管理结构示意图;33.图10是实施例二提供的虚拟机监控器的页面回收算法及结构示意图;34.图11是实施例二提供的i/o虚拟化框架示意图;35.图12是实施例二提供的输入时虚拟机与i/o处理机间的交互示意图;36.图13是实施例二提供的输出时虚拟机与i/o处理机间的交互示意图。具体实施方式37.以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。38.本发明的目的是针对现有技术的缺陷,提供了一种基于混合虚拟化的终端虚拟机生成系统及方法。39.实施例一40.本实施例提供的一种基于混合虚拟化的终端虚拟机生成系统,包括虚拟机监控器、包含原生操作系统的主虚拟机、负责数据转发操作的从虚拟机;41.虚拟机监控器,用于为上层运行的原生操作系统提供虚拟化的硬件资源;42.主虚拟机,与虚拟机监控器连接,用于负责与虚拟机监控器提供的管理api进行交互,并通过用户模式下的管理工具来管理虚拟机环境;43.从虚拟机,与虚拟机监控器连接,用于通过设备映射的方式,将主虚拟机的虚拟设备驱动进行映射,并与主虚拟机共享虚拟设备驱动。44.本实施例提出了结合硬件虚拟化和操作系统虚拟化的全新虚拟化技术,通过硬件虚拟化技术保障终端安全性,同时通过变异的操作系统虚拟化技术,简化了安装、使用过程,具体原理如图2所示。45.混合虚拟化虚拟机监控器(hypervisor)位于操作系统和硬件之间,负责为上层运行的操作系统内核提供虚拟化的硬件资源,负责管理和分配这些资源,并确保上层虚拟机之间的相互隔离。本实施例采用混合模式,因而设定了一个主虚拟机用以辅助管理其他的虚拟机,并提供虚拟的资源服务,而其余的虚拟机则称为从虚拟机。46.需要说明的是,本实施例设计的主虚拟机石油操作界面的,用户操作时可以看到。47.hypervisor向虚拟机提供了一个抽象层,其中包含了管理和虚拟硬件的api。主虚拟机内部包含了真实的设备驱动(原生操作系统),可直接访问物理硬件,负责与hypervisor提供的管理api交互,并通过用户模式下的管理工具来管理虚拟机环境。48.主虚拟机负责虚拟机管理、虚拟机设备驱动、继承原生操作系统等事宜;从虚拟机通过设备映射的方式,将主虚拟机的虚拟设备映射到从虚拟机中使用,可以和主虚拟机共享设备驱动,以达到轻量级终端虚拟机的目的。49.在本虚拟机体系结构设计中,所有的真实硬件访问都由主虚拟机的虚拟设备驱动调用原生设备驱动发起。从虚拟机的虚拟设备驱动的设计十分简单,只需要完成数据的转发操作,由于它们不是真实的设备驱动程序,所以也不用进行请求调度操作。而运行在主虚拟机中的虚拟设备驱动,可以利用原操作系统的现有设备驱动来完成硬件访问,需要增加的只是io请求的映射转发功能‑‑‑能完成任务的分发和回送。50.本实施例可以复用pc机上原有的操作系统,因为本目标机器是终端pc机,所以不可能要求终端用户在裸机上安装远为虚拟机,而原有操作系统内也有很多应用和数据需要保留,因此保留原有操作系统是一个非常重要的事情。本实施例将原有操作系统包装进主虚拟机,不仅可以利用原有操作系统的硬件驱动程序,还可以让产品更加方便的安装。51.本实施例提出的混合型虚拟化技术平衡了虚拟机的安全性和实用性,为跨域安全终端提供了坚实的技术基础。52.本实施例的有益效果为:53.1)将硬件虚拟化技术和操作系统虚拟化技术结合,即解决了硬件虚拟化技术可以不依赖于裸机安装,但是仍然保留硬件虚拟化的底层安全性;又可以解决操作系统虚拟化安全性依赖于宿主操作系统的问题,传统操作系统虚拟化产品无法成为终端安全产品的根本原因。54.2)混合虚拟化的技术,可以继承原有终端pc环境的所有数据和应用,将原有环境封装导入到主虚拟机中,使得终端资产得以顺利继承。55.3)混合虚拟化后的终端虚拟机之间具有很高的安全隔离性,可以适用于各种操作系统环境,包括windows,管理机和各种国产操作系统。56.相应的,本实施例还提供一种基于混合虚拟化的终端虚拟机生成方法,包括:57.虚拟机监控器为上层运行的原生操作系统提供虚拟化的硬件资源;58.包含原生操作系统的主虚拟机负责与虚拟机监控器提供的管理api进行交互,并通过用户模式下的管理工具来管理虚拟机环境;59.负责数据转发操作的从虚拟机通过设备映射的方式,将主虚拟机的虚拟设备驱动进行映射,并与主虚拟机共享虚拟设备驱动。60.实施例二61.本实施例提供的一种基于混合虚拟化的终端虚拟机生成系统与实施例一的不同之处在于:62.本实施例具体描述系统的安装及使用情况。63.如图3所示为虚拟监控器实现的模型示意图。虚拟监控器将在原生操作系统下层安装管理及i/o处理机,利用原生操作系统对i/o设备的强大支持实现i/o虚拟化。管理机运行于主处理器bsp之上,占用部分物理内存,但负责管理全部的外部设备,所有的外部中断全部传递给管理机。另外,在管理机的用户态借助原生操作系统还运行有管理程序,负责虚拟机的创建、配置、启动、停止等工作。64.虚拟监控器的其余部分以smp方式运行于各个ap处理器之上,这些部分以整体内核方式实现,具体包括:虚拟机管理(核态)、内存管理、本地中断/异常管理、本地虚拟设备、远端虚拟设备、管理接口等6类模块。65.安装及引导启动:66.在原生操作系统上进行安装,但是需要将虚拟监控器运行到原生操作系统底层,因此需要修改操作系统引导记录,经bios校验后,首先运行虚拟监控器引导模块,然后通过虚拟监控器引导模块,启动虚拟监控器,然后通过虚拟监控器创建一个虚拟机,将原生操作系统纳入到主虚拟机中,将原有终端上的所有数据资源和应用资源纳入主虚拟机中。在现有的硬盘空余空间上创建从虚拟机,从虚拟机的客户操作系统为到新导入的镜像。67.中断/异常管理具体为:68.对传统意义上的操作系统而言,外部中断由i/o设备产生,是全局性的,每个处理器都可以处理外部中断,而异常是局部性的,每个处理器都可以产生异常。由于虚拟监控器采用主虚拟机中的管理机作为专用的i/o处理机,因此所有外部中断均由主虚拟机中的管理机处理,但虚拟监控器内核必须处理异常,以及发送给ap的处理器间中断ipi。因此,在中断和异常处理部分主要包括两方面的工作,一是修改和应答管理机,将所有外部中断定向到bsp,二是实现对ap处理器本地中断以及发往它们的ipi的支持。69.x86支持256种中断和异常,前32个中断或异常向量用于异常或保留向量,其余224个留给了可屏蔽中断和用户自定义的陷阱,如表1所示。70.表1x86中断和异常向量的分配[0071][0072][0073]异常是局部的,每个处理器都会产生异常,而中断是全局的,它们可被投递到任意处理器上。处理器根据异常或中断类型号,在idt中确定中断服务程序(isr)的入口地址。[0074]可屏蔽中断由中断控制器(8259a/ioapic/lapic)传递到处理器,如图4所示。在smp/多核体系结构中,同一设备产生的中断可能被ioapic投递到任意的处理器上。[0075]在smp/多核平台上,8259a通常集成在南桥芯片中,仅在系统引导和初始化过程中为bsp提供中断,以后中断必须均经由ioapic/lapic传递到bsp或ap。在p6、pentium4、intelxeon以及更晚的intel64和ia‑32处理器中均集成了lapic,并将ioapic集成在芯片组中,如intel82430。apic采用分布式的体系结构,由lapic和ioapic通过专用的总线或系统总线互连构成。lapic可以接收外部的(来自ioapic或8259a)、内部的(来自内部时钟等)或其它处理器的(ipi)中断,并把它们传递给处理器核心;ioapic用于接收来自设备的中断,并把它们传递给选定的一个或一组处理器。[0076]为保证兼容性,apic可以与8259a配合工作。硬件支持三种中断方式:picmode、virtualwiremode、symmetrici/omode。其中前两种方式可以与pc/at体系结构保持兼容,bios至少应该支持其中的一种,用于多处理器系统的引导。多处理器引导之后,操作系统应该将中断模式切换到symmetrici/omode。[0077]x86体系结构中,中断源可能被共享,即多个外部设备通过一个中断请求线发送中断请求,这需要在isr的配合下识别究竟是哪个设备发出了中断请求。[0078]在所有外部设备中断交给管理机所在的bsp处理的情况下,发往ap处理器的中断数量大为减少,主要是指处理器间中断ipi以及由lapic产生的时钟中断,对于lapic时钟中断,还需要有相应的底半处理,这些工作均可参考管理机的处理方式。[0079]异常是本地的、同步到来的,在每个进程的上下文中被处理。虚拟机监控器在系统初始化时将每个处理器的idt的低32个中断向量初始化为相应异常的入口,不同的异常对应不同的异常处理程序。[0080]内存管理具体为:[0081]内存管理部分包括两大部分,一是对管理机进行修改,使其放弃对一部分物理内存的管理,将管理权交给虚拟机监控器内核;二是虚拟机监控器对属于它的那一部分的内存的管理。[0082]x86平台的物理地址空间是连续的,但存储介质可能是离散的,包括:ram、rom和mmio。处理器发出的地址信号经内存控制器和芯片组解析后,被送到相应的介质。x86平台的物理地址空间的布局如图5所示。[0083]传统的x86处理器采用两级存储管理机制,其中分段管理机制是必不可少的,如果启动了分页管理机制,那么线性地址还需要经过分页管理机制的处理后才能得到物理地址*,如图6所示。[0084]在最新的支持虚拟化的x86处理器上,还支持第3级的地址转换,即客户物理地址到主机物理地址的转换,新增的地址转换机制称为ept(extendedpagetable)或np(nestedpage)。图7给出了intelept的基本工作原理。[0085]传统os中的虚拟内存管理负责线性地址到物理地址或磁盘块地址之间关系的维护,与之不同,虚拟机监控器的虚拟内存管理负责主/从虚拟机客户物理地址(gpa)到主机物理地址(hpa)或磁盘块地址之间关系的维护,其工作原理如图8所示。[0086]虚拟机监控器为每个虚拟机维护一个类型为gpa_space_t的结构来表示vm的客户物理地址空间,并为每个vm维护一套ept页表,用于将主、从虚拟机客户物理地址映射到主机物理地址或交换区。客户物理地址空间通常是不连续的,其布局因vm的配置而异,因此使用gpa_area_t来表示一段连续的客户物理地址空间,vm可能有多个gpa_area_t,它们构成的链表,表头保存在gpa_space_t的gpa_areas域中。虚拟内存管理的结构如图9所示。[0087]当多个vm同时运行时,必然带来物理内存的紧张,因此对物理内存进行回收以及换出是必要的。传统os的做法是:将内核所占用的内存看作非分页内存,这部分内存从来不会被回收或换出;将用户进程的所占用的内存加入页缓存或lru队列,以记录其最近的使用频度,最近不常用的页面可以被回收或交换。[0088]虚拟机监控器首先要保障主虚拟机原生的内存需求,其次不能假定主/从虚拟机客户os内核所占用的客户物理地址范围,也不能感知客户操作系统的页缓存和lru队列,硬件甚至没有在ept表项中设置访问位(a位),这些都给cecyw‑vmm确定回收和换出哪些页面带来了困难。[0089]虚拟机监控器采用带二次机会的lru算法来确定页面的使用情况。为确定哪些物理页面最近被访问了,虚拟机监控器设置两个页面队列,分别称为active_vm_list和inactive_vm_list,相关的结构如图10所示。[0090]该算法的主要描述如下:[0091]1.最初分给vm的页面被链接在inactive_vm_list中,并设置ept表项中的ra/wa/ea位均为0,禁止对这些页面的任何访问。[0092]2.若页面处于inactive_vm_list中,且ra/wa/ea位均为0,当页面被访问时将引发页面故障,页面故障处理程序借此设置ept表项中的ra/wa/ea位为1,设置页面的page_t结构中的域accessed为1,记录访问时间access_time,同时将该页面移至active_vm_list的头部。[0093]3.内核线程kswapd定期扫描active_vm_list队列尾部的一定数量的页面,检查page_t结构中的accessed域:[0094]a)若accessed域为1且当前时间current_time‑access_time>threshold,则将其清0,并将其对应的ept表项中的ra/wa/ea位清0。[0095]b)若accessed域为0,则将页面移动到inactive_vm_list队列的头部。[0096]4.若页面处于active_vm_list中且ra/wa/ea位均为0,则当页面被访问时,将其移动其到active_vm_list队列的头部,设置ept表项中的ra/wa/ea位为1,并设置页面的page_t结构中的域accessed为1。[0097]5.内核线程kswapd定期扫描inactive_vm_list队列尾部的一定数量的页面,检查page_t结构中的accessed域。[0098]a)若accessed域为0,则将页面交换到交换区间。[0099]b)若accessed域为1,错误情况,bug()。[0100]另外,虚拟机监控器还可以在物理内存紧张时,从slab分配器中回收空闲页面。[0101]i/o管理具体包括:[0102]i/o处理机的主要目的是利用管理机中丰富的设备驱动程序来实现设备虚拟化。虚拟机监控器的i/o虚拟化框架如图11所示。[0103]虚拟机之间利用共享内存和ipi机制进行通信。共享内存可以采用环状的数据结构,这样可以避免使用锁,提高了通信效率。当共享内存区域满时,当虚拟机监控器从共享内存中取走数据时,共享内存由满的状态变为有空闲空间状态,此时应该由虚拟机监控器通过ipi告知管理机来唤醒。[0104]假设虚拟机vm配置了一个以物理串口为媒质的虚拟串口,那么以串口输入为例,虚拟机与io处理机之间的交互过程如图12所示。[0105]1.物理串口上的输入到来,管理机接受到中断,调用相关驱动程序,并唤醒qemu。[0106]2.qemu将串口输入记录到描述虚拟串口设备状态的相关结构中,同时将输入的拷贝放到共享内存中。[0107]3.qemu以ipi的方式向虚拟机监控器注册一个中断。[0108]4.当vm被调度时,虚拟机监控器将中断注入到vm中。[0109]5.vm中的客户操作系统处理该中断,之后发出读i/o请求。[0110]6.虚拟机监控器截获该请求,并通知qemu执行对虚拟设备的读请求,以便qemu将输入数据从虚拟设备中删除。[0111]7.虚拟机监控器将输入数据从共享内存取走并送vm。[0112]那么以串口输出为例,虚拟机与io处理机之间的交互过程如图13所示。[0113]1.vm发出写i/o请求,该请求被虚拟机监控器截获。[0114]2.虚拟机监控器将写输入拷贝到共享内存中。[0115]3.虚拟机监控器向管理机发出ipi,通知输出操作到来。[0116]4.管理机通知qemu输出操作到来,qemu从共享内存取走输出数据。[0117]5.qemu执行写操作。[0118]6.qemu以ipi的方式向虚拟机监控器注册一个中断,通告输出操作完成。[0119]7.当vm被调度时,虚拟机监控器将中断注入到vm中。[0120]与现有技术相比,本发明的有益效果为:[0121]1)将硬件虚拟化技术和操作系统虚拟化技术结合,即解决了硬件虚拟化技术可以不依赖于裸机安装,但是仍然保留硬件虚拟化的底层安全性;又可以解决操作系统虚拟化安全性依赖于宿主操作系统的问题,传统操作系统虚拟化产品无法成为终端安全产品的根本原因。[0122]2)混合虚拟化的技术,可以继承原有终端pc环境的所有数据和应用,将原有环境封装导入到主虚拟机中,使得终端资产得以顺利继承。[0123]3)混合虚拟化后的终端虚拟机之间具有很高的安全隔离性,可以适用于各种操作系统环境,包括windows,管理机和各种国产操作系统。[0124]注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献