一种虚拟机载入器的制作方法

文档序号:6398337阅读:167来源:国知局
专利名称:一种虚拟机载入器的制作方法
技术领域
本发明涉及虚拟计算机技术领域,具体地说,涉及一种虚拟机载入器。
背景技术
现有技术中,随着计算机技术的不断发展,计算机的功能越来越强大,虽然移动存储设备或存储服务器给用户带来了很多方便,使用户能够在不同的计算机上工作,但是,由于不同计算机的工作环境以及安装的应用软件大相径庭,因此给用户带来极大的困扰。为了解决上述问题,虚拟操作系统(VOS, VirtualOperating System)技术孕育而生。VOS可以让使用者在本机的操作系统上使用其他的操作系统,每个虚拟操作系统都可以有自己的系统配置、文档、应用程序。虚拟操作系统之间彼此独立,不会互相干扰。使用者可以在一个操作系统上同时准备多个虚拟操作系统,每个虚拟操作系统可以具有不同的用途,例如,游戏、办公、艺术创作等。现有技术中创建虚拟操作系统的一种方式是通过重量级的虚拟机器(HWVM,Heavyffeight VirtualMachine)建立多个隔离式虚拟操作系统。如果要在虚拟机(VM,Virtual Machine)上安装并运行应用程序,必须先在VM上重新安装一套操作系统(即子操作系统,Guest OS),然后才能正常的安装并运行应用程序。由于VM是需要模拟一个空的机器,因此,在VM里中运行的应用程序在需要调用硬件资源时(例如,读写文件、显示窗体等),下达的每一个指令都必须透过层层转换与传达才能正确运行。在一种虚拟机系统中,可构建多个相互独立的虚拟机,供若干用户同时使用,各虚拟机中的操作系统、应用程序、用户数据等都是各自独立进行处理的,操作数据和文件分别存放在各自的单元中,这样的架构,可以很好地实现虚拟机的备份/恢复功能,但如何协调好各虚拟机的资源分配、各自的逻辑模块运行是需要解决的一个问题!

发明内容
本发明提供一种虚拟机载入器,可使得虚拟机系统顺畅地启动和运行。本发明提供的一种虚拟机载入器,包括内存分配模块,用于分配内存空间给相应进程;连接模块,用于处理动态库之间的相互关联;重定位模块,调整与内存空间大小、位置,使得基于所分配内存可执行相关进程;载入模块,用于载入虚拟机自身的逻辑模块。其中,内存分配模块分配内存空间给相应进程,具体包括为初始进程及其后续子进程预先分配内存空间。更适宜地,其中连接模块处理动态库之间的相互关联,具体为基于所分配的内存建立子进程并暂停新建立的子进程;取代子进程的环境控制表与函数入口点;激活子进程。
其中虚拟机自身的逻辑模块包括虚拟机运行时模块和/或虚拟机逻辑模块。本发明提供一种虚拟机载入器,通过设置用于分配内存空间给相应进程的内存分配模块,用于处理动态库之间的相互关联的连接模块,调整与内存空间大小、位置,使得基于所分配内存可执行相关进程的重定位模块,以及用于载入虚拟机自身的逻辑模块的载入模块,可使得该虚拟机系统顺畅地启动和运行。


图1为本发明实施例中提供的虚拟机系统架构示意图;图2是本发明提供的虚拟及载入器的软件模块构成示意图;图3为本发明实施例中提供的在虚拟环境下接管应用程序的详细处理的流程图;图4为本发明提供的一种虚拟机操作系统运行子进程的流程;图5为本发明实施例中提供的VOS主模块的运行步骤。
具体实施例方式鉴于虚拟机系统启动和运行所面临的问题,本发明提供的一种虚拟机载入器,可接受目的程序,并将这些目的程序连接成一個可以让虚拟机执行的程序。本发明所提供的载入器和一般广义上的载入器功能、用法相近,但是针对性不同,本发明的载入器基于一种虚拟机系统,参照图2,该系统中可构建两个以上相互独立的虚拟机,供若干用户同时使用,各虚拟机中的操作系统、应用程序、用户数据等都是各自独立进行处理的,操作数据和文件分别存放在各自的单元中的架构。针对此种虚拟机而设计的。具体实现方案中,每个载入器有各自的逻辑,但是大体流程相通,所以同传统的载入器工作模式大致相同,本发明提供的载入器具有分配、连接、重定位、载入四大功能。参照图2,本发明提供的一种虚拟机载入器200,包括内存分配模块21,用于分配内存空间给相应进程;连接模块22,用于处理动态库之间的相互关联;重定位模块23,调整与内存空间大小、位置,使得基于所分配内存可执行相关进程;载入模块24,用于载入虚拟机自身的逻辑模块。其中,在本发明的具体实施方案中,内存分配模块21分配内存空间给相应进程,具体包括为初始进程及其后续子进程预先分配内存空间。在本发明的具体实施方案中,连接模块22处理动态库之间的相互关联,具体为基于所分配的内存建立子进程并暂停新建立的子进程;以复制的环境控制表,如Windows访问控制列表(ACL, Access ControlLists),与动态链接库DLL函数入口点取代子进程的环境控制表与DLL函数入口点;检查子进程DLL函数入口点内DLL导入项的文件路径;判断该路径是否是虚拟路径,如果是,则将此DLL导入项删除并保存在DLL虚拟路径表中;激活子进程并将DLL虚拟路径表传给子进程。
所述虚拟机自身的逻辑模块包括虚拟机运行时模块和/或虚拟机逻辑模块。本发明实施例中提供的载入器在虚拟环境下接管应用程序的详细处理的流程图,如图3所示,包括如下处理步骤步骤S301,将欲启动程序的执行文件(exe文件)载入内存;步骤S302,暂时屏蔽系统(主操作系统Host OS)的Manifest检测;步骤S303,以该内存建立子进程并暂停新建立的子进程;步骤S304,将壳层程序载入内存并置于程序容器中;步骤S305,以复制的NT表(Native API)与动态连接库DLL函数入口点取代子进程的NT表与DLL函数入口点;步骤S306,检查子进程DLL函数入口点内DLL导入项的文件路径;步骤S307,判断该路径是否是虚拟路径,如果是,则将此DLL导入项删除并保存在DLL虚拟路径表中,否则执行下一步骤;步骤S308,判断是否有未处理的DLL导入项,如果是,则执行步骤S306,否则进入下一个步骤;步骤S309,将虚拟操作系统VOS模拟器主模块的DLL文件路径插入子进程的DLL函数入口点的表头;步骤S310,清除子进程的dotNET元数据;步骤S311,激活子进程并将DLL虚拟路径表传给子进程,到此转入子进程的运行步骤。接着上面的步骤,以下是转入子进程的运行步骤步骤S401,系统(Host OS)自动载入VOS模拟器主模块;步骤S402,系统(Host OS)自动载入所有非虚拟路径的DLL模块;步骤S403,运行VOS主模块;VOS主模块的运行步骤说明步骤S501,将被取代的NT表与DLL函数入口点还原回原来的表;步骤S502,将Host OS的SysEntry系统服务的进入点改为VOS的SysEntry系统服务的进入点;步骤S503,载入VOS的配置表;步骤S504,根据配置表载入指定的VOS功能模块;步骤S505,初始化VOS功能模块并取得支持的系统函数列表;步骤S506,取得函数列表中的函数记录项;步骤S507、系统判断是否为低阶系统函数;步骤S508,如果判断为是,则向VOS的SysEntry系统服务注册该函数的ID与进入占.步骤S509,如果判断为否,则继续判断是否为NT原生函数;步骤S510,如果判断为是,则Detours NTDLL内相应函数在内存的内容;步骤S511,如果判断为否,则找出该函数在Win32DLL群所在DLL位置再执行Detours该DLL内相应函数在内存的内容;步骤S512,判断是否还有未处理的函数记录,如果判断为是,则回到步骤S507再进行,如果为否,则继续下一个步骤;步骤S513,判断是否有未初始化的功能模块,如果判断为是,则回到步骤S505进行,如果为否,则继续下一个步骤;步骤S514,根据传入的DLL虚拟路径表以VOS的DLL载入功能载入表中所有的DLL ;步骤S515,初始化TLS,修正当前工作目录,清除父进程VOS添加的环境变量;步骤S516,判断是否为dot NET进程,如果判断为是,则载入并启动CLR,如果判断为否,则直接进行步骤S507;步骤S517,调用CLR重新载入子程序的dotNET元数据;步骤S518,VOS主模块根据PE表内的入口点记录调用进程的入口点。针对一种虚拟机系统,该系统中可构建多个相互独立的虚拟机,供若干用户同时使用,各虚拟机中的操作系统、应用程序、用户数据等都是各自独立进行处理的,操作数据和文件分别存放在各自的单元中的架构,本发明提供一种虚拟机载入器,具有用于分配内存空间给相应进程的内存分配模块,用于处理动态库之间的相互关联的连接模块,调整与内存空间大小、位置,使得基于所分配内存可执行相关进程的重定位模块,以及用于载入虚拟机自身的逻辑模块的载入模块,可使得该虚拟机系统顺畅地启动和运行。本发明虽然以示范性实施方案公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本发明的保护范围应当以本发明权利要求所界定的范围为准。本发明虽然以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本发明的保护范围应当以本发明权利要求所界定的范围为准。
权利要求
1.一种虚拟机载入器,其特征在于,包括 内存分配模块,用于分配内存空间给相应进程; 连接模块,用于处理动态库之间的相互关联; 重定位模块,调整与内存空间大小、位置,使得基于所分配内存可执行相关进程; 载入模块,用于载入虚拟机自身的逻辑模块。
2.如权利要求1所述的虚拟机载入器,其特征在于,所述内存分配模块分配内存空间给相应进程,具体包括 为初始进程及其后续子进程预先分配内存空间。
3.如权利要求1所述的虚拟机载入器,其特征在于,所述连接模块处理动态库之间的相互关联,具体为 基于所分配的内存建立子进程并暂停新建立的子进程; 取代子进程的环境控制表与函数入口点; 激活子进程。
4.如权利要求1所述的虚拟机载入器,其特征在于,所述虚拟机自身的逻辑模块包括虚拟机运行时模块和/或虚拟机逻辑模块。
全文摘要
本发明公开了一种虚拟机载入器,包括内存分配模块,用于分配内存空间给相应进程;连接模块,用于处理动态库之间的相互关联;重定位模块,调整与内存空间大小、位置,使得基于所分配内存可执行相关进程;载入模块,用于载入虚拟机自身的逻辑模块。采用本发明提供的载入器可使得虚拟机系统顺畅地启动和运行。
文档编号G06F9/455GK103064718SQ201310025410
公开日2013年4月24日 申请日期2013年1月23日 优先权日2013年1月23日
发明者李瑞平 申请人:北京伸得纬科技有限公司, 国际伸得纬有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1