一种针对硬件虚拟化的内存监控方法和系统转让专利

申请号 : CN201210160617.0

文献号 : CN102736969B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 田昕晖高云伟邬小龙孙毓忠叶川

申请人 : 中国科学院计算技术研究所

摘要 :

本发明公开一种针对硬件虚拟化的内存监控方法和系统,所述方法包括:步骤1,建立客户域DomU,根据操作系统的运算能力建立内存监控参数,所述操作系统的运算能力包括32位操作系统和64位操作系统;步骤2,将客户域DomU的配置文件初始化,导入内存监控参数,并对内存监控参数进行映射操作,实现内存监控优化。

权利要求 :

1.一种针对硬件虚拟化的内存监控方法,其特征在于,包括:

步骤1,建立客户域DomU,根据操作系统的运算能力建立内存监控参数,所述操作系统的运算能力包括32位操作系统和64位操作系统;

步骤2,将客户域DomU的配置文件初始化,导入内存监控参数,并对内存监控参数进行映射操作,实现内存监控优化;该步骤2执行32位操作系统时包括:步骤21,用户提供要映射的DomU的进程的pid、DomU的id值以及虚拟地址;

步骤22,若pid为0,则该被监控的虚拟地址属于内核空间;

步骤23,若pid不为0,则该虚拟地址属于pid对应的进程地址空间,由于在用户空间中地址的存在形式为虚拟地址,首先获取该进程的页目录表项基址的虚拟地址,然后转换为其物理地址进行寻址;

该步骤22包括:

步骤31,通过特权虚拟机中实现的访问Xen的内核模块向Xen发送获取要映射的DomU的CR3寄存器中的页目录表物理内存基址;

步骤32,根据页表基址的值和逻辑地址的值,计算出页目录项指针PDPE的物理地址值,之后,需要将该物理地址的内容映射到特权虚拟机的内存中;

步骤33,根据PDPE和虚拟地址的值,计算出页目录项PDE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;

步骤34,根据PDE和虚拟地址的值,计算出页表项PTE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;

步骤35,根据PTE和虚拟地址的值,计算出虚拟地址在DomU中对应的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;

步骤36,得到的特权虚拟机中分配的页中的内容为要监控的虚拟地址的内容,通过对该页的内容进行读取操作完成监控操作。

2.如权利要求1所述的针对硬件虚拟化的内存监控方法,其特征在于,步骤32包括:步骤41,对得到的物理地址值进行计算,得到对应的页框号以及在该页中的偏移量,页框号即该页所在页的起始地址;

步骤42,利用页框号及DomU的id,利用已经实现的特权虚拟机的内核模块的地址映射功能,在特权虚拟机中分配空闲页,将该页框号对应的一页内存的内容映射到该空闲页,即让这页内存对应到DomU中要映射页对应的机器地址中的页上,返回该空闲页;

步骤43,在返回的内存页中利用之前求得的PDPE在页中的偏移量既得PDPE的值;

步骤44,返回PDPE的值。

3.如权利要求1所述的针对硬件虚拟化的内存监控方法,其特征在于,步骤23包括:步骤51,得到pid对应的进程的页目录表基址的虚拟地址;

步骤52,得到的进程的页目录表基地址的虚拟地址属于内核空间,因此,通过步骤22得到其对应的物理地址;

步骤53,利用得到的进程的页目录表基地址的物理地址进行页表查询,重复执行步骤

22完成进程地址空间的内存的监控操作。

4.如权利要求3所述的针对硬件虚拟化的内存监控方法,其特征在于,步骤51包括:步骤61,通过初始化得到DomU的初始进程init task的物理地址、进程结构的偏移量;

步骤62,由于进程在内存中是链表排列的,每个进程结构中都有一个指向下一个进程的指针,因此,从初始进程开始遍历所有的进程,利用获得的pid偏移量得到链表中每个进程的pid的值,与提供的pid进行比对,如果相同,则是要找的进程,否则继续查找;

步骤63,进程的页目录表项基地址的虚拟地址存在于进程结构中,利用之前得到的偏移量以及找到的进程地址即算出该地址。

5.如权利要求1所述的针对硬件虚拟化的内存监控方法,其特征在于,在步骤2执行

64位操作系统时包括:

步骤71,用户提供要映射的DomU的进程的pid、DomU的id值以及虚拟地址;

步骤72,若pid为0,则该被监控的虚拟地址属于内核空间;

步骤73,若pid不为0,则该虚拟地址属于pid对应的进程地址空间,需拿到该进程的页目录表项基址的虚拟地址,再进一步转换为其物理地址进行寻址。

6.如权利要求5所述的针对硬件虚拟化的内存监控方法,其特征在于,步骤72包括:步骤81,通过特权虚拟机中实现的访问Xen的内核模块向Xen发送获取要映射的DomU的CR3寄存器中的页目录表物理内存基址;

步骤82,根据页表基址的值和逻辑地址的值,计算出第四级页表项PML4E的物理地址值,之后,将该物理地址的内容映射到特权虚拟机的内存中;

步骤83,根据PML4E和虚拟地址的值,计算出页目录项指针PDPE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;

步骤84,根据PDPE和虚拟地址的值,计算出页目录项PDE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;

步骤85,根据PDE和虚拟地址的值,计算出页表项PTE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;

步骤86,根据PTE和虚拟地址的值,计算出虚拟地址在DomU中对应的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;

步骤87,得到的特权虚拟机中分配的页中的内容既是要监控的虚拟地址的内容,通过对该页的内容读取操作完成监控操作。

7.如权利要求6所述的针对硬件虚拟化的内存监控方法,其特征在于,步骤82包括:步骤91,对得到的物理地址值进行计算,得到对应的页框号以及在该页中的偏移量,页框号即该页所在页的起始地址;

步骤92,利用页框号及DomU的id,利用已经实现的特权虚拟机的内核模块的地址映射功能,在特权虚拟机中分配一页空闲页,将该页框号对应的一页内存的内容映射到该空闲页,即让这页内存对应到DomU中要映射页对应的机器地址中的页上,返回该空闲页;

步骤93,在返回的内存页中利用之前求得的PML4E在页中的偏移量既得PML4E的值;

步骤94,返回PML4E的值。

8.如权利要求5所述的针对硬件虚拟化的内存监控方法,其特征在于,步骤73包括:步骤101,得到pid对应的进程的页目录表基址的虚拟地址;

步骤102,利用得到的进程的页目录表基地址的虚拟地址通过A2步骤可以得到其对应的物理地址;

步骤103,利用得到的进程的页目录表基地址的物理地址进行页表查询,重复执行步骤

72,从而完成进程地址空间的内存的监控操作。

9.如权利要求8所述的针对硬件虚拟化的内存监控方法,其特征在于,步骤101包括:步骤111,通过初始化得到DomU的初始进程init task的物理地址、进程结构的偏移量;

步骤112,由于进程在内存中是链表排列的,每个进程结构中都有一个指向下一个进程的指针,因此,从初始进程开始遍历所有的进程,利用获得的pid偏移量得到链表中每个进程的pid的值,与提供的pid进行比对,如果相同,则是要找的进程,否则继续查找;

步骤113,进程的页目录表项基地址的虚拟地址存在于进程结构中,利用之前得到的偏移量以及找到的进程地址即算出该地址。

10.一种针对硬件虚拟化的内存监控系统,其特征在于,包括:

建立监控参数模块,用于建立客户域DomU,根据操作系统的运算能力建立内存监控参数,所述操作系统的运算能力包括32位操作系统和64位操作系统;

监控优化模块,用于将客户域DomU的配置文件初始化,导入内存监控参数,并对内存监控参数进行映射操作,实现内存监控优化;该32位操作系统的监控优化模块包括:提供信息模块,用于用户提供要映射的DomU的进程的pid、DomU的id值以及虚拟地址;

指向内核空间模块,用于若pid为0,则该被监控的虚拟地址属于内核空间;

指向进程地址空间模块,用于若pid不为0,则该虚拟地址属于pid对应的进程地址空间,由于在用户空间中地址的存在形式为虚拟地址,首先获取该进程的页目录表项基址的虚拟地址,然后转换为其物理地址进行寻址;

该指向内核空间模块包括:

发送地址模块,用于通过特权虚拟机中实现的访问Xen的内核模块向Xen发送获取要映射的DomU的CR3寄存器中的页目录表物理内存基址;

计算模块,用于根据页表基址的值和逻辑地址的值,计算出页目录项指针PDPE的物理地址值,之后,需要将该物理地址的内容映射到特权虚拟机的内存中;根据PDPE和虚拟地址的值,计算出页目录项PDE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;根据PDE和虚拟地址的值,计算出页表项PTE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;根据PTE和虚拟地址的值,计算出虚拟地址在DomU中对应的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;

获得虚拟地址模块,用于得到的特权虚拟机中分配的页中的内容为要监控的虚拟地址的内容,通过对该页的内容进行读取操作完成监控操作。

11.如权利要求10所述的针对硬件虚拟化的内存监控系统,其特征在于,计算模块还包括:对得到的物理地址值进行计算,得到对应的页框号以及在该页中的偏移量,页框号即该页所在页的起始地址;利用页框号及DomU的id,利用已经实现的特权虚拟机的内核模块的地址映射功能,在特权虚拟机中分配空闲页,将该页框号对应的一页内存的内容映射到该空闲页,即让这页内存对应到DomU中要映射页对应的机器地址中的页上,返回该空闲页;在返回的内存页中利用之前求得的PDPE在页中的偏移量既得PDPE的值;返回PDPE的值。

12.如权利要求10所述的针对硬件虚拟化的内存监控系统,其特征在于,指向进程地址空间模块包括:获得虚拟地址模块,用于得到pid对应的进程的页目录表基址的虚拟地址;

获得物理地址模块,用于得到的进程的页目录表基地址的虚拟地址属于内核空间,因此,通过指向内核空间模块得到其对应的物理地址;

页表查询模块,用于利用得到的进程的页目录表基地址的物理地址进行页表查询,重复执行指向内核空间模块完成进程地址空间的内存的监控操作。

13.如权利要求12所述的针对硬件虚拟化的内存监控系统,其特征在于,获得虚拟地址模块包括:通过初始化得到DomU的初始进程init task的物理地址、进程结构的偏移量;由于进程在内存中是链表排列的,每个进程结构中都有一个指向下一个进程的指针,因此,从初始进程开始遍历所有的进程,利用获得的pid偏移量得到链表中每个进程的pid的值,与提供的pid进行比对,如果相同,则是要找的进程,否则继续查找;进程的页目录表项基地址的虚拟地址存在于进程结构中,利用之前得到的偏移量以及找到的进程地址即算出该地址。

14.如权利要求10所述的针对硬件虚拟化的内存监控系统,其特征在于,在64位操作系统的监控优化模块包括:提供信息模块,用于用户提供要映射的DomU的进程的pid、DomU的id值以及虚拟地址;

指向内核空间模块,用于若pid为0,则该被监控的虚拟地址属于内核空间;

指向进程地址空间模块,用于若pid不为0,则该虚拟地址属于pid对应的进程地址空间,需拿到该进程的页目录表项基址的虚拟地址,再进一步转换为其物理地址进行寻址。

15.如权利要求14所述的针对硬件虚拟化的内存监控系统,其特征在于,指向内核空间模块还包括:发送地址模块,用于通过特权虚拟机中实现的访问Xen的内核模块向Xen发送获取要映射的DomU的CR3寄存器中的页目录表物理内存基址;

计算模块,用于根据页表基址的值和逻辑地址的值,计算出第四级页表项PML4E的物理地址值,之后,将该物理地址的内容映射到特权虚拟机的内存中;根据PML4E和虚拟地址的值,计算出页目录项指针PDPE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;根据PDPE和虚拟地址的值,计算出页目录项PDE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;根据PDE和虚拟地址的值,计算出页表项PTE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;根据PTE和虚拟地址的值,计算出虚拟地址在DomU中对应的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;

获得虚拟地址模块,用于得到的特权虚拟机中分配的页中的内容既是要监控的虚拟地址的内容,通过对该页的内容读取操作完成监控操作。

16.如权利要求15所述的针对硬件虚拟化的内存监控系统,其特征在于,计算模块还包括:对得到的物理地址值进行计算,得到对应的页框号以及在该页中的偏移量,页框号即该页所在页的起始地址;利用页框号及DomU的id,利用已经实现的特权虚拟机的内核模块的地址映射功能,在特权虚拟机中分配一页空闲页,将该页框号对应的一页内存的内容映射到该空闲页,即让这页内存对应到DomU中要映射页对应的机器地址中的页上,返回该空闲页;在返回的内存页中利用之前求得的PML4E在页中的偏移量既得PML4E的值;返回PML4E的值。

17.如权利要求14所述的针对硬件虚拟化的内存监控系统,其特征在于,指向进程地址空间模块包括:获得虚拟地址模块,用于得到pid对应的进程的页目录表基址的虚拟地址;

获得物理地址模块,用于利用得到的进程的页目录表基地址的虚拟地址通过A2步骤可以得到其对应的物理地址;

页表查询模块,用于利用得到的进程的页目录表基地址的物理地址进行页表查询,重复执行指向内核空间模块,从而完成进程地址空间的内存的监控操作。

18.如权利要求17所述的针对硬件虚拟化的内存监控系统,其特征在于,获得虚拟地址模块包括:通过初始化得到DomU的初始进程init task的物理地址、进程结构的偏移量;由于进程在内存中是链表排列的,每个进程结构中都有一个指向下一个进程的指针,因此,从初始进程开始遍历所有的进程,利用获得的pid偏移量得到链表中每个进程的pid的值,与提供的pid进行比对,如果相同,则是要找的进程,否则继续查找;进程的页目录表项基地址的虚拟地址存在于进程结构中,利用之前得到的偏移量以及找到的进程地址即算出该地址。

说明书 :

一种针对硬件虚拟化的内存监控方法和系统

技术领域

[0001] 本发明涉及虚拟化环境Xen,具体涉及一种在虚拟化环境Xen中利用Windows特权虚拟机监控其他HVM虚拟机内存的方法及系统,属于计算机体系结构领域。

背景技术

[0002] 近年来,随着处理器速度的不断提升和网络带宽的持续增长,虚拟化技术得到了广泛的重视。在数据中心中,虚拟化技术得到了广泛的应用。Xen是由剑桥大学计算机实验室系统研究组开发的虚拟机监视器,以其高效性和灵活性而著称。其作为一个高性能的开源的虚拟机软件,也引起了业界极大的关注,其良好的性能表现,比物理机仅低3%~5%的性能,也赢得了市场的一片好评。
[0003] Xen属于硬件级虚拟化软件,即直接运行在硬件级上,为其上运行的操作系统内核提供虚拟化的硬件环境。Xen的结构包括一个虚拟机管理层(Virtual Machine Monitor,以下简称VMM),在Xen中也称作管理程序(Xen Hypervisor),一个特权域(Privileged Domain),还有其他的客户域(Domain),特权域和客户域都可以被称为虚拟机。其中,特权域成为Domain 0(Dom0),主要功能是辅助Xen管理其他Domain,提供相应的虚拟资源服务,其他则称为Domain U(DomU)。
[0004] 由于目前市场占有率比较高的x86架构的处理器在设计之初未考虑支持虚拟化技术,其本身的结构和复杂性使得在其之上进行虚拟化非常困难,因此,在Xen设计之初,采用的是一种半虚拟化的解决方案,即通过对客户机的操作系统(Guest OS)进行代码级修改来避开x86架构带来的弊端,但这种做法十分繁琐,且带来了一些系统指令级别的冲突以及运行效率的问题。目前Intel与AMD在硬件级都提供了对虚拟化的支持,能够支持未经修改的Guest OS直接运行,减少了虚拟机运行的系统开销,这些利用硬件进行虚拟化的虚拟机被称为硬件虚拟域(Hardware-based Virtual Machine,简称HVM)。Xen中已经提供了对HVM用户的支持。
[0005] 内存中存有操作系统的内核以及执行的进程的内容,因此,通过对内存中内容的监控,可以获得执行中的进程信息以及操作系统内核中主要数据的信息,从而更好地分析操作系统的运行状况,识别出进程的恶意行为,由于每台虚拟机的内存之间是隔离的,利用虚拟化技术来进行监控与本机上进行内存监控的方法相比具有天生的优势。文献1“Bryan D Payne,Martin D P De A Carbone,Wenke Lee.Secure and Flexible Monitoring of Virtual Machines.ACSAC 2007”中提到一种利用Xen提供的借口在Dom0中建立一套监控DomU的内存及磁盘信息的方法,但以此种方法为代表的目前虚拟机内存监控技术都是以Dom0为监控端,且仅能够监控装有32位操作系统的DomU,这对于64位操作系统越来越普遍的当前形势来说具有很大的局限性。本发明是在一台装有Windows系统的特权虚拟机上实现的针对HVM虚拟机的内存监控,且对于32位操作系统和64位操作系统的DomU都能进行监控,比现有的内存监控技术更加先进。

发明内容

[0006] 本发明目的在于提供一种使用HVM特权虚拟机作为监控端,获取其他DomU内存信息的方法及其系统,其中,特权指的是该虚拟机具有与Xen的hypervisor通信的能力,内存地址形式主要是虚拟地址,DomU上安装的操作系统涉及32位与64位的Linux和windows操作系统,由于PAE模式已经使用得比较普遍,32位系统部分将默认采取PAE模式。
[0007] 为了让HVM特权虚拟机能够使用Xen提供的Hypercall以及映射机制,我们在该特权虚拟机中添加IOCTL设备驱动,该设备驱动模拟Dom0与Xen的交互模式,提供给特权虚拟机与Xen进行交互的功能,该功能包括使用Xen提供的Hypercall以及映射机制。
[0008] 本发明公开一种针对硬件虚拟化的内存监控方法,包括:
[0009] 步骤1,建立客户域DomU,根据操作系统的运算能力建立内存监控参数,所述操作系统的运算能力包括32位操作系统和64位操作系统;
[0010] 步骤2,将客户域DomU的配置文件初始化,导入内存监控参数,并对内存监控参数进行映射操作,实现内存监控优化。
[0011] 所述的针对硬件虚拟化的内存监控方法,在步骤2执行32位操作系统时包括:
[0012] 步骤21,用户提供要映射的DomU的进程的pid、DomU的id值以及虚拟地址;
[0013] 步骤22,若pid为0,则该被监控的虚拟地址属于内核空间;
[0014] 步骤23,若pid不为0,则该虚拟地址属于pid对应的进程地址空间,由于在用户空间中地址的存在形式为虚拟地址,首先获取该进程的页目录表项基址的虚拟地址,然后转换为其物理地址进行寻址。
[0015] 所述的针对硬件虚拟化的内存监控方法,步骤22包括:
[0016] 步骤31,通过特权虚拟机中实现的访问Xen的内核模块向Xen发送获取要映射的DomU的CR3寄存器中的页目录表物理内存基址;
[0017] 步骤32,根据页表基址的值和逻辑地址的值,计算出页目录项指针PDPE的物理地址值,之后,需要将该物理地址的内容映射到特权虚拟机的内存中;
[0018] 步骤33,根据PDPE和虚拟地址的值,计算出页目录项PDE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;
[0019] 步骤34,根据PDE和虚拟地址的值,计算出页表项PTE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;
[0020] 步骤35,根据PTE和虚拟地址的值,计算出虚拟地址在DomU中对应的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;
[0021] 步骤36,得到的特权虚拟机中分配的页中的内容为要监控的虚拟地址的内容,通过对该页的内容进行读取操作完成监控操作。
[0022] 所述的针对硬件虚拟化的内存监控方法,步骤32包括:
[0023] 步骤41,对得到的物理地址值进行计算,得到对应的页框号以及在该页中的偏移量,页框号即该页所在页的起始地址;
[0024] 步骤42,利用页框号及DomU的id,利用已经实现的特权虚拟机的内核模块的地址映射功能,在特权虚拟机中分配空闲页,将该页框号对应的一页内存的内容映射到该空闲页,即让这页内存对应到DomU中要映射页对应的机器地址中的页上,返回该空闲页;
[0025] 步骤43,在返回的内存页中利用之前求得的PDPE在页中的偏移量既得PDPE的值;
[0026] 步骤44,返回PDPE的值。
[0027] 所述的针对硬件虚拟化的内存监控方法,步骤23包括:
[0028] 步骤51,得到pid对应的进程的页目录表基址的虚拟地址;
[0029] 步骤52,得到的进程的页目录表基地址的虚拟地址属于内核空间,因此,通过步骤22得到其对应的物理地址;
[0030] 步骤53,利用得到的进程的页目录表基地址的物理地址进行页表查询,重复执行步骤22完成进程地址空间的内存的监控操作。
[0031] 所述的针对硬件虚拟化的内存监控方法,步骤51包括:
[0032] 步骤61,通过初始化得到DomU的初始进程init task的物理地址、进程结构的偏移量;
[0033] 步骤62,由于进程在内存中是链表排列的,每个进程结构中都有一个指向下一个进程的指针,因此,从初始进程开始遍历所有的进程,利用获得的pid偏移量得到链表中每个进程的pid的值,与提供的pid进行比对,如果相同,则是要找的进程,否则继续查找;
[0034] 步骤63,进程的页目录表项基地址的虚拟地址存在于进程结构中,利用之前得到的偏移量以及找到的进程地址即算出该地址。
[0035] 所述的针对硬件虚拟化的内存监控方法,在步骤2执行64位操作系统时包括:
[0036] 步骤71,用户提供要映射的DomU的进程的pid、DomU的id值以及虚拟地址;
[0037] 步骤72,若pid为0,则该被监控的虚拟地址属于内核空间;
[0038] 步骤73,若pid不为0,则该虚拟地址属于pid对应的进程地址空间,需拿到该进程的页目录表项基址的虚拟地址,再进一步转换为其物理地址进行寻址。
[0039] 所述的针对硬件虚拟化的内存监控方法,步骤72包括:
[0040] 步骤81,通过特权虚拟机中实现的访问Xen的内核模块向Xen发送获取要映射的DomU的CR3寄存器中的页目录表物理内存基址;
[0041] 步骤82,根据页表基址的值和逻辑地址的值,计算出第四级页表项PML4E的物理地址值,之后,将该物理地址的内容映射到特权虚拟机的内存中;
[0042] 步骤83,根据PML4E和虚拟地址的值,计算出页目录项指针PDPE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;
[0043] 步骤84,根据PDPE和虚拟地址的值,计算出页目录项PDE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;
[0044] 步骤85,根据PDE和虚拟地址的值,计算出页表项PTE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;
[0045] 步骤86,根据PTE和虚拟地址的值,计算出虚拟地址在DomU中对应的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;
[0046] 步骤87,得到的特权虚拟机中分配的页中的内容既是要监控的虚拟地址的内容,通过对该页的内容读取操作完成监控操作。
[0047] 所述的针对硬件虚拟化的内存监控方法,步骤82包括:
[0048] 步骤91,对得到的物理地址值进行计算,得到对应的页框号以及在该页中的偏移量,页框号即该页所在页的起始地址;
[0049] 步骤92,利用页框号及DomU的id,利用已经实现的特权虚拟机的内核模块的地址映射功能,在特权虚拟机中分配一页空闲页,将该页框号对应的一页内存的内容映射到该空闲页,即让这页内存对应到DomU中要映射页对应的机器地址中的页上,返回该空闲页;
[0050] 步骤93,在返回的内存页中利用之前求得的PML4E在页中的偏移量既得PML4E的值;
[0051] 步骤94,返回PML4E的值。
[0052] 所述的针对硬件虚拟化的内存监控方法,步骤73包括:
[0053] 步骤101,得到pid对应的进程的页目录表基址的虚拟地址;
[0054] 步骤102,利用得到的进程的页目录表基地址的虚拟地址通过A2步骤可以得到其对应的物理地址;
[0055] 步骤103,利用得到的进程的页目录表基地址的物理地址进行页表查询,重复执行步骤72,从而完成进程地址空间的内存的监控操作。
[0056] 所述的针对硬件虚拟化的内存监控方法,步骤101包括:
[0057] 步骤111,通过初始化得到DomU的初始进程init task的物理地址、进程结构的偏移量;
[0058] 步骤112,由于进程在内存中是链表排列的,每个进程结构中都有一个指向下一个进程的指针,因此,从初始进程开始遍历所有的进程,利用获得的pid偏移量得到链表中每个进程的pid的值,与提供的pid进行比对,如果相同,则是要找的进程,否则继续查找;
[0059] 步骤113,进程的页目录表项基地址的虚拟地址存在于进程结构中,利用之前得到的偏移量以及找到的进程地址即算出该地址。
[0060] 本发明公开一种针对硬件虚拟化的内存监控系统,包括:
[0061] 建立监控参数模块,用于建立客户域DomU,根据操作系统的运算能力建立内存监控参数,所述操作系统的运算能力包括32位操作系统和64位操作系统;
[0062] 监控优化模块,用于将客户域DomU的配置文件初始化,导入内存监控参数,并对内存监控参数进行映射操作,实现内存监控优化。
[0063] 所述的针对硬件虚拟化的内存监控系统,在32位操作系统的监控优化模块包括:
[0064] 提供信息模块,用于用户提供要映射的DomU的进程的pid、DomU的id值以及虚拟地址;
[0065] 指向内核空间模块,用于若pid为0,则该被监控的虚拟地址属于内核空间;
[0066] 指向进程地址空间模块,用于若pid不为0,则该虚拟地址属于pid对应的进程地址空间,由于在用户空间中地址的存在形式为虚拟地址,首先获取该进程的页目录表项基址的虚拟地址,然后转换为其物理地址进行寻址。
[0067] 所述的针对硬件虚拟化的内存监控系统,指向内核空间模块包括:
[0068] 发送地址模块,用于通过特权虚拟机中实现的访问Xen的内核模块向Xen发送获取要映射的DomU的CR3寄存器中的页目录表物理内存基址;
[0069] 计算模块,用于根据页表基址的值和逻辑地址的值,计算出页目录项指针PDPE的物理地址值,之后,需要将该物理地址的内容映射到特权虚拟机的内存中;根据PDPE和虚拟地址的值,计算出页目录项PDE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;根据PDE和虚拟地址的值,计算出页表项PTE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;根据PTE和虚拟地址的值,计算出虚拟地址在DomU中对应的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;
[0070] 获得虚拟地址模块,用于得到的特权虚拟机中分配的页中的内容为要监控的虚拟地址的内容,通过对该页的内容进行读取操作完成监控操作。
[0071] 所述的针对硬件虚拟化的内存监控系统,计算模块还包括:
[0072] 对得到的物理地址值进行计算,得到对应的页框号以及在该页中的偏移量,页框号即该页所在页的起始地址;利用页框号及DomU的id,利用已经实现的特权虚拟机的内核模块的地址映射功能,在特权虚拟机中分配空闲页,将该页框号对应的一页内存的内容映射到该空闲页,即让这页内存对应到DomU中要映射页对应的机器地址中的页上,返回该空闲页;在返回的内存页中利用之前求得的PDPE在页中的偏移量既得PDPE的值;返回PDPE的值。
[0073] 所述的针对硬件虚拟化的内存监控系统,指向进程地址空间模块包括:
[0074] 获得虚拟地址模块,用于得到pid对应的进程的页目录表基址的虚拟地址;
[0075] 获得物理地址模块,用于得到的进程的页目录表基地址的虚拟地址属于内核空间,因此,通过指向内核空间模块得到其对应的物理地址;
[0076] 页表查询模块,用于利用得到的进程的页目录表基地址的物理地址进行页表查询,重复执行指向内核空间模块完成进程地址空间的内存的监控操作。
[0077] 所述的针对硬件虚拟化的内存监控系统,获得虚拟地址模块包括:
[0078] 通过初始化得到DomU的初始进程init task的物理地址、进程结构的偏移量;由于进程在内存中是链表排列的,每个进程结构中都有一个指向下一个进程的指针,因此,从初始进程开始遍历所有的进程,利用获得的pid偏移量得到链表中每个进程的pid的值,与提供的pid进行比对,如果相同,则是要找的进程,否则继续查找;进程的页目录表项基地址的虚拟地址存在于进程结构中,利用之前得到的偏移量以及找到的进程地址即算出该地址。
[0079] 所述的针对硬件虚拟化的内存监控系统,在64位操作系统的监控优化模块包括:
[0080] 提供信息模块,用于用户提供要映射的DomU的进程的pid、DomU的id值以及虚拟地址;
[0081] 指向内核空间模块,用于若pid为0,则该被监控的虚拟地址属于内核空间;
[0082] 指向进程地址空间模块,用于若pid不为0,则该虚拟地址属于pid对应的进程地址空间,需拿到该进程的页目录表项基址的虚拟地址,再进一步转换为其物理地址进行寻址。
[0083] 所述的针对硬件虚拟化的内存监控系统,指向内核空间模块还包括:
[0084] 发送地址模块,用于通过特权虚拟机中实现的访问Xen的内核模块向Xen发送获取要映射的DomU的CR3寄存器中的页目录表物理内存基址;
[0085] 计算模块,用于根据页表基址的值和逻辑地址的值,计算出第四级页表项PML4E的物理地址值,之后,将该物理地址的内容映射到特权虚拟机的内存中;根据PML4E和虚拟地址的值,计算出页目录项指针PDPE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;根据PDPE和虚拟地址的值,计算出页目录项PDE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;根据PDE和虚拟地址的值,计算出页表项PTE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;根据PTE和虚拟地址的值,计算出虚拟地址在DomU中对应的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;
[0086] 获得虚拟地址模块,用于得到的特权虚拟机中分配的页中的内容既是要监控的虚拟地址的内容,通过对该页的内容读取操作完成监控操作。
[0087] 所述的针对硬件虚拟化的内存监控系统,计算模块还包括:
[0088] 对得到的物理地址值进行计算,得到对应的页框号以及在该页中的偏移量,页框号即该页所在页的起始地址;利用页框号及DomU的id,利用已经实现的特权虚拟机的内核模块的地址映射功能,在特权虚拟机中分配一页空闲页,将该页框号对应的一页内存的内容映射到该空闲页,即让这页内存对应到DomU中要映射页对应的机器地址中的页上,返回该空闲页;在返回的内存页中利用之前求得的PML4E在页中的偏移量既得PML4E的值;返回PML4E的值。
[0089] 所述的针对硬件虚拟化的内存监控系统,指向进程地址空间模块包括:
[0090] 获得虚拟地址模块,用于得到pid对应的进程的页目录表基址的虚拟地址;
[0091] 获得物理地址模块,用于利用得到的进程的页目录表基地址的虚拟地址通过A2步骤可以得到其对应的物理地址;
[0092] 页表查询模块,用于利用得到的进程的页目录表基地址的物理地址进行页表查询,重复执行指向内核空间模块,从而完成进程地址空间的内存的监控操作。
[0093] 所述的针对硬件虚拟化的内存监控系统,获得虚拟地址模块包括:
[0094] 通过初始化得到DomU的初始进程init task的物理地址、进程结构的偏移量;由于进程在内存中是链表排列的,每个进程结构中都有一个指向下一个进程的指针,因此,从初始进程开始遍历所有的进程,利用获得的pid偏移量得到链表中每个进程的pid的值,与提供的pid进行比对,如果相同,则是要找的进程,否则继续查找;进程的页目录表项基地址的虚拟地址存在于进程结构中,利用之前得到的偏移量以及找到的进程地址即算出该地址。
[0095] 本发明的有益效果为:使用特权虚拟机代替Dom0来进行内存监控,且对于装有32位操作系统和64位操作系统的DomU都可以进行内存监控,这样设计既可以将内存监控功能独立管理,也减轻了Dom0的性能负担,提供了一种针对虚拟化架构实用性强的内存监控技术,为检测病毒特征、恶意软件攻击行为以及分析操作系统运行机理等提供了一种高效实用的手段。

附图说明

[0096] 图1为本发明特权虚拟机内存监控流程示意图;
[0097] 图2为本发明特权虚拟机内核模块内存映射流程示意图;
[0098] 图3为本发明针对硬件虚拟化的内存监控方法流程图;
[0099] 图4为本发明针对硬件虚拟化的内存监控系统流程图。

具体实施方式

[0100] 下面给出本发明的具体实施方式,结合附图对本发明做出了详细描述。
[0101] 本方法针对两种平台。在内存监控的程序中,需要对32位和64位系统采取独立的步骤,通过用户给定的一台DomU需要监控进程号(系统中以pid表示)以及该进程中要监控的虚拟地址来对该地址的内容进行监控的步骤如下:
[0102] 当DomU的操作系统为32位操作系统的PAE模式时,步骤如下,流程如图1所示:
[0103] A1.用户提供要映射的DomU的进程的pid、DomU的id值以及虚拟地址。
[0104] A2.若pid为0,则该被监控的虚拟地址属于内核空间,具体实施步骤如下:
[0105] 1.通过特权虚拟机中实现的访问Xen的内核模块向Xen发送获取要映射的DomU的CR3寄存器中的页目录表物理内存基址。
[0106] 2.根据页表基址的值和逻辑地址的值,计算出页目录项指针(PageDirectory Pointer Entry,以下简称PDPE)的物理地址值,之后,需要将该物理地址的内容映射到特权虚拟机的内存中,具体步骤如下:
[0107] 1).对得到的物理地址值进行计算,得到对应的页框号以及在该页中的偏移量,页框号即该页所在页的起始地址。
[0108] 2).利用页框号及DomU的id,利用已经实现的特权虚拟机的内核模块的地址映射功能,在特权虚拟机中分配一页空闲页,将该页框号对应的一页内存的内容映射到该空闲页,即让这页内存对应到DomU中要映射页对应的机器地址中的页上,返回该空闲页,如图2所示。
[0109] 3).在返回的内存页中利用之前求得的PDPE在页中的偏移量既得PDPE的值。
[0110] 4).返回PDPE的值。
[0111] 3.根据PDPE和虚拟地址的值,计算出页目录项(Page Directory Entry,以下简称PDE)的物理地址值,并将DomU中该物理地址的内容映射过来,具体步骤参见A2的步骤2,其中的PDPE在本例中是PDE。
[0112] 4.根据PDE和虚拟地址的值,计算出页表项(Page Table Entry,以下简称PTE)的物理地址值,并将DomU中该物理地址的内容映射过来,具体步骤参见A2的步骤2,其中的PDPE在本例中是PTE。
[0113] 5.根据PTE和虚拟地址的值,计算出虚拟地址在DomU中对应的物理地址值,并将DomU中该物理地址的内容映射过来,具体步骤参见A2的步骤2,其中的PDPE在本例中要求的虚拟地址对应的物理地址值
[0114] 6.得到的特权虚拟机中分配的页中的内容既是要监控的虚拟地址的内容,这时候就可以通过对该页的内容读取操作完成监控功能。
[0115] A3.若pid不为0,则该虚拟地址属于pid对应的进程地址空间,由于在用户空间中地址的存在形式都是虚拟地址,因此首先需要拿到该进程的页目录表项基址的虚拟地址,再进一步转换为其物理地址进行寻址。具体实施步骤如下:
[0116] 1.得到pid对应的进程的页目录表基址的虚拟地址,具体实施步骤如下:
[0117] 1).通过初始化得到DomU的初始进程(init task)的物理地址、进程结构中的一些项的偏移量(如pid在进程结构中的偏移量)。
[0118] 2).由于进程在内存中是链表排列的,每个进程结构中都有一个指向下一个进程的指针,因此,可以从初始进程开始遍历所有的进程,利用获得的pid偏移量得到链表中每个进程的pid的值,与提供的pid进行比对,如果相同,则是要找的进程,否则继续查找;
[0119] 3).进程的页目录表项基地址的虚拟地址存在于进程结构中,利用之前得到的偏移量以及找到的进程地址即算出该地址;
[0120] 2.得到的进程的页目录表基地址的虚拟地址属于内核空间,因此,通过A2步骤可以得到其对应的物理地址。
[0121] 3.利用得到的进程的页目录表基地址的物理地址进行页表查询,具体步骤同A2,如此,完成了进程地址空间的内存的监控功能。
[0122] 当DomU的操作系统为64位时,步骤如下,流程图可参考图1,比上种情况多一层映射。
[0123] A1.用户提供要映射的DomU的进程的pid、DomU的id值以及虚拟地址。
[0124] A2.若pid为0,则该被监控的虚拟地址属于内核空间,具体实施步骤如下:
[0125] 1.通过特权虚拟机中实现的访问Xen的内核模块向Xen发送获取要映射的DomU的CR3寄存器中的页目录表物理内存基址。
[0126] 2.根据页表基址的值和逻辑地址的值,计算出第四级页表项(Page Map Level 4 Entry,以下简称PML4E)的物理地址值,之后,需要将该物理地址的内容映射到特权虚拟机的内存中,具体步骤如下:
[0127] 1).对得到的物理地址值进行计算,得到对应的页框号以及在该页中的偏移量,页框号即该页所在页的起始地址;
[0128] 2).利用页框号及DomU的id,利用已经实现的特权虚拟机的内核模块的地址映射功能,在特权虚拟机中分配一页空闲页,将该页框号对应的一页内存的内容映射到该空闲页,即让这页内存对应到DomU中要映射页对应的机器地址中的页上,返回该空闲页;
[0129] 3).在返回的内存页中利用之前求得的PML4E在页中的偏移量既得PML4E的值;
[0130] 4).返回PML4E的值;
[0131] 3.根据PML4E和虚拟地址的值,计算出页目录项指针(Page Directory Pointer Entry,以下简称PDPE)的物理地址值,并将DomU中该物理地址的内容映射过来,具体步骤参见A2的步骤2,其中的PML4E在本例中是PDPE;
[0132] 4.根据PDPE和虚拟地址的值,计算出页目录项(Page Directory Entry,以下简称PDE)的物理地址值,并将DomU中该物理地址的内容映射过来,具体步骤参见A2的步骤2,其中的PML4E在本例中是PDE;
[0133] 5.根据PDE和虚拟地址的值,计算出页表项(Page Table Entry,以下简称PTE)的物理地址值,并将DomU中该物理地址的内容映射过来,具体步骤参见A2的步骤2,其中的PML4E在本例中是PTE;
[0134] 6.根据PTE和虚拟地址的值,计算出虚拟地址在DomU中对应的物理地址值,并将DomU中该物理地址的内容映射过来,具体步骤参见A2的步骤2,其中的PML4E在本例中是求的虚拟地址对应的物理地址值;
[0135] 7.得到的特权虚拟机中分配的页中的内容既是要监控的虚拟地址的内容,这时候就可以通过对该页的内容读取操作完成监控功能。
[0136] A3.若pid不为0,则该虚拟地址属于pid对应的进程地址空间,需拿到该进程的页目录表项基址的虚拟地址,再进一步转换为其物理地址进行寻址。具体实施步骤如下:
[0137] 1.得到pid对应的进程的页目录表基址的虚拟地址,具体实施步骤同第一种情况的A3中步骤1;
[0138] 2.利用得到的进程的页目录表基地址的虚拟地址通过A2步骤可以得到其对应的物理地址;
[0139] 3.利用得到的进程的页目录表基地址的物理地址进行页表查询,具体步骤同A2,如此,完成了进程地址空间的内存的监控功能。
[0140] 实现的系统基于Xen架构,特权虚拟机的操作系统为windows server 2003,32位的DomU的操作系统为windows xp sp3,支持PAE模式,64位的DomU的系统为SUSE 11 SP1。
[0141] 具体实施方式为:a)构建可以与Xen进行通信的特权虚拟机,该虚拟机为HVM形式,装有windows 2003操作系统;b)利用该虚拟机,在32位PAE模式HVM DomU运行过程中对其虚拟地址对应的内存内容进行监控;c)利用该虚拟机,在64位HVM DomU运行过程中对其虚拟地址对应的内存内容进行监控。
[0142] 具体步骤如下:
[0143] 1、构建HVM特权虚拟机,具体实现方法如下:
[0144] a)启动Xen
[0145] b)启动该特权虚拟机,安装windows 2003操作系统
[0146] c)安装具备与Xen通信功能的驱动模块
[0147] d)开启监控程序,等待输入参数
[0148] 2、对运行态的32位PAE模式的装有windows xp sp3的HVM虚拟机进行内存监控,具体实现方法如下:
[0149] a)输入监控参数,包括DomU的id值、要监控的进程pid、要监控的虚拟内存地址。
[0150] b)读取对应DomU的配置文件进行初始化,这个文件需要用户提供,包括操作系统类型、起始进程地址、进程结构偏移量、进程pid偏移量、进程页目录表基址偏移量。
[0151] c)申请内存空间,根据参数进行映射操作,返回给用户该内存空间的指针。
[0152] 对运行态的64位的装有SUSE11 SP1的HVM虚拟机进行内存监控,具体实现方法同2。
[0153] 如图3所示,本发明公开一种针对硬件虚拟化的内存监控方法,包括:
[0154] 步骤1,建立客户域DomU,根据操作系统的运算能力建立内存监控参数,所述操作系统的运算能力包括32位操作系统和64位操作系统;
[0155] 步骤2,将客户域DomU的配置文件初始化,导入内存监控参数,并对内存监控参数进行映射操作,实现内存监控优化。
[0156] 所述的针对硬件虚拟化的内存监控方法,在步骤2执行32位操作系统时包括:
[0157] 步骤21,用户提供要映射的DomU的进程的pid、DomU的id值以及虚拟地址;
[0158] 步骤22,若pid为0,则该被监控的虚拟地址属于内核空间;
[0159] 步骤23,若pid不为0,则该虚拟地址属于pid对应的进程地址空间,由于在用户空间中地址的存在形式为虚拟地址,首先获取该进程的页目录表项基址的虚拟地址,然后转换为其物理地址进行寻址。
[0160] 所述的针对硬件虚拟化的内存监控方法,步骤22包括:
[0161] 步骤31,通过特权虚拟机中实现的访问Xen的内核模块向Xen发送获取要映射的DomU的CR3寄存器中的页目录表物理内存基址;
[0162] 步骤32,根据页表基址的值和逻辑地址的值,计算出页目录项指针PDPE的物理地址值,之后,需要将该物理地址的内容映射到特权虚拟机的内存中;
[0163] 步骤33,根据PDPE和虚拟地址的值,计算出页目录项PDE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;
[0164] 步骤34,根据PDE和虚拟地址的值,计算出页表项PTE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;
[0165] 步骤35,根据PTE和虚拟地址的值,计算出虚拟地址在DomU中对应的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;
[0166] 步骤36,得到的特权虚拟机中分配的页中的内容为要监控的虚拟地址的内容,通过对该页的内容进行读取操作完成监控操作。
[0167] 所述的针对硬件虚拟化的内存监控方法,步骤32包括:
[0168] 步骤41,对得到的物理地址值进行计算,得到对应的页框号以及在该页中的偏移量,页框号即该页所在页的起始地址;
[0169] 步骤42,利用页框号及DomU的id,利用已经实现的特权虚拟机的内核模块的地址映射功能,在特权虚拟机中分配空闲页,将该页框号对应的一页内存的内容映射到该空闲页,即让这页内存对应到DomU中要映射页对应的机器地址中的页上,返回该空闲页;
[0170] 步骤43,在返回的内存页中利用之前求得的PDPE在页中的偏移量既得PDPE的值;
[0171] 步骤44,返回PDPE的值。
[0172] 所述的针对硬件虚拟化的内存监控方法,步骤23包括:
[0173] 步骤51,得到pid对应的进程的页目录表基址的虚拟地址;
[0174] 步骤52,得到的进程的页目录表基地址的虚拟地址属于内核空间,因此,通过步骤22得到其对应的物理地址;
[0175] 步骤53,利用得到的进程的页目录表基地址的物理地址进行页表查询,重复执行步骤22完成进程地址空间的内存的监控操作。
[0176] 所述的针对硬件虚拟化的内存监控方法,步骤51包括:
[0177] 步骤61,通过初始化得到DomU的初始进程init task的物理地址、进程结构的偏移量;
[0178] 步骤62,由于进程在内存中是链表排列的,每个进程结构中都有一个指向下一个进程的指针,因此,从初始进程开始遍历所有的进程,利用获得的pid偏移量得到链表中每个进程的pid的值,与提供的pid进行比对,如果相同,则是要找的进程,否则继续查找;
[0179] 步骤63,进程的页目录表项基地址的虚拟地址存在于进程结构中,利用之前得到的偏移量以及找到的进程地址即算出该地址。
[0180] 所述的针对硬件虚拟化的内存监控方法,在步骤2执行64位操作系统时包括:
[0181] 步骤71,用户提供要映射的DomU的进程的pid、DomU的id值以及虚拟地址;
[0182] 步骤72,若pid为0,则该被监控的虚拟地址属于内核空间;
[0183] 步骤73,若pid不为0,则该虚拟地址属于pid对应的进程地址空间,需拿到该进程的页目录表项基址的虚拟地址,再进一步转换为其物理地址进行寻址。
[0184] 所述的针对硬件虚拟化的内存监控方法,步骤72包括:
[0185] 步骤81,通过特权虚拟机中实现的访问Xen的内核模块向Xen发送获取要映射的DomU的CR3寄存器中的页目录表物理内存基址;
[0186] 步骤82,根据页表基址的值和逻辑地址的值,计算出第四级页表项PML4E的物理地址值,之后,将该物理地址的内容映射到特权虚拟机的内存中;
[0187] 步骤83,根据PML4E和虚拟地址的值,计算出页目录项指针PDPE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;
[0188] 步骤84,根据PDPE和虚拟地址的值,计算出页目录项PDE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;
[0189] 步骤85,根据PDE和虚拟地址的值,计算出页表项PTE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;
[0190] 步骤86,根据PTE和虚拟地址的值,计算出虚拟地址在DomU中对应的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;
[0191] 步骤87,得到的特权虚拟机中分配的页中的内容既是要监控的虚拟地址的内容,通过对该页的内容读取操作完成监控操作。
[0192] 所述的针对硬件虚拟化的内存监控方法,步骤82包括:
[0193] 步骤91,对得到的物理地址值进行计算,得到对应的页框号以及在该页中的偏移量,页框号即该页所在页的起始地址;
[0194] 步骤92,利用页框号及DomU的id,利用已经实现的特权虚拟机的内核模块的地址映射功能,在特权虚拟机中分配一页空闲页,将该页框号对应的一页内存的内容映射到该空闲页,即让这页内存对应到DomU中要映射页对应的机器地址中的页上,返回该空闲页;
[0195] 步骤93,在返回的内存页中利用之前求得的PML4E在页中的偏移量既得PML4E的值;
[0196] 步骤94,返回PML4E的值。
[0197] 所述的针对硬件虚拟化的内存监控方法,步骤73包括:
[0198] 步骤101,得到pid对应的进程的页目录表基址的虚拟地址;
[0199] 步骤102,利用得到的进程的页目录表基地址的虚拟地址通过A2步骤可以得到其对应的物理地址;
[0200] 步骤103,利用得到的进程的页目录表基地址的物理地址进行页表查询,重复执行步骤72,从而完成进程地址空间的内存的监控操作。
[0201] 所述的针对硬件虚拟化的内存监控方法,步骤101包括:
[0202] 步骤111,通过初始化得到DomU的初始进程init task的物理地址、进程结构的偏移量;
[0203] 步骤112,由于进程在内存中是链表排列的,每个进程结构中都有一个指向下一个进程的指针,因此,从初始进程开始遍历所有的进程,利用获得的pid偏移量得到链表中每个进程的pid的值,与提供的pid进行比对,如果相同,则是要找的进程,否则继续查找;
[0204] 步骤113,进程的页目录表项基地址的虚拟地址存在于进程结构中,利用之前得到的偏移量以及找到的进程地址即算出该地址。
[0205] 如图4所示,本发明公开一种针对硬件虚拟化的内存监控系统,包括:
[0206] 建立监控参数模块10,用于建立客户域DomU,根据操作系统的运算能力建立内存监控参数,所述操作系统的运算能力包括32位操作系统和64位操作系统;
[0207] 监控优化模块20,用于将客户域DomU的配置文件初始化,导入内存监控参数,并对内存监控参数进行映射操作,实现内存监控优化。
[0208] 所述的针对硬件虚拟化的内存监控系统,在32位操作系统的监控优化模块包括:
[0209] 提供信息模块,用于用户提供要映射的DomU的进程的pid、DomU的id值以及虚拟地址;
[0210] 指向内核空间模块,用于若pid为0,则该被监控的虚拟地址属于内核空间;
[0211] 指向进程地址空间模块,用于若pid不为0,则该虚拟地址属于pid对应的进程地址空间,由于在用户空间中地址的存在形式为虚拟地址,首先获取该进程的页目录表项基址的虚拟地址,然后转换为其物理地址进行寻址。
[0212] 所述的针对硬件虚拟化的内存监控系统,指向内核空间模块包括:
[0213] 发送地址模块,用于通过特权虚拟机中实现的访问Xen的内核模块向Xen发送获取要映射的DomU的CR3寄存器中的页目录表物理内存基址;
[0214] 计算模块,用于根据页表基址的值和逻辑地址的值,计算出页目录项指针PDPE的物理地址值,之后,需要将该物理地址的内容映射到特权虚拟机的内存中;根据PDPE和虚拟地址的值,计算出页目录项PDE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;根据PDE和虚拟地址的值,计算出页表项PTE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;根据PTE和虚拟地址的值,计算出虚拟地址在DomU中对应的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;
[0215] 获得虚拟地址模块,用于得到的特权虚拟机中分配的页中的内容为要监控的虚拟地址的内容,通过对该页的内容进行读取操作完成监控操作。
[0216] 所述的针对硬件虚拟化的内存监控系统,计算模块还包括:
[0217] 对得到的物理地址值进行计算,得到对应的页框号以及在该页中的偏移量,页框号即该页所在页的起始地址;利用页框号及DomU的id,利用已经实现的特权虚拟机的内核模块的地址映射功能,在特权虚拟机中分配空闲页,将该页框号对应的一页内存的内容映射到该空闲页,即让这页内存对应到DomU中要映射页对应的机器地址中的页上,返回该空闲页;在返回的内存页中利用之前求得的PDPE在页中的偏移量既得PDPE的值;返回PDPE的值。
[0218] 所述的针对硬件虚拟化的内存监控系统,指向进程地址空间模块包括:
[0219] 获得虚拟地址模块,用于得到pid对应的进程的页目录表基址的虚拟地址;
[0220] 获得物理地址模块,用于得到的进程的页目录表基地址的虚拟地址属于内核空间,因此,通过指向内核空间模块得到其对应的物理地址;
[0221] 页表查询模块,用于利用得到的进程的页目录表基地址的物理地址进行页表查询,重复执行指向内核空间模块完成进程地址空间的内存的监控操作。
[0222] 所述的针对硬件虚拟化的内存监控系统,获得虚拟地址模块包括:
[0223] 通过初始化得到DomU的初始进程init task的物理地址、进程结构的偏移量;由于进程在内存中是链表排列的,每个进程结构中都有一个指向下一个进程的指针,因此,从初始进程开始遍历所有的进程,利用获得的pid偏移量得到链表中每个进程的pid的值,与提供的pid进行比对,如果相同,则是要找的进程,否则继续查找;进程的页目录表项基地址的虚拟地址存在于进程结构中,利用之前得到的偏移量以及找到的进程地址即算出该地址。
[0224] 所述的针对硬件虚拟化的内存监控系统,在64位操作系统的监控优化模块包括:
[0225] 提供信息模块,用于用户提供要映射的DomU的进程的pid、DomU的id值以及虚拟地址;
[0226] 指向内核空间模块,用于若pid为0,则该被监控的虚拟地址属于内核空间;
[0227] 指向进程地址空间模块,用于若pid不为0,则该虚拟地址属于pid对应的进程地址空间,需拿到该进程的页目录表项基址的虚拟地址,再进一步转换为其物理地址进行寻址。
[0228] 所述的针对硬件虚拟化的内存监控系统,指向内核空间模块还包括:
[0229] 发送地址模块,用于通过特权虚拟机中实现的访问Xen的内核模块向Xen发送获取要映射的DomU的CR3寄存器中的页目录表物理内存基址;
[0230] 计算模块,用于根据页表基址的值和逻辑地址的值,计算出第四级页表项PML4E的物理地址值,之后,将该物理地址的内容映射到特权虚拟机的内存中;根据PML4E和虚拟地址的值,计算出页目录项指针PDPE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;根据PDPE和虚拟地址的值,计算出页目录项PDE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;根据PDE和虚拟地址的值,计算出页表项PTE的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;根据PTE和虚拟地址的值,计算出虚拟地址在DomU中对应的物理地址值,并将DomU中该物理地址的内容映射到特权虚拟机的内存中;
[0231] 获得虚拟地址模块,用于得到的特权虚拟机中分配的页中的内容既是要监控的虚拟地址的内容,通过对该页的内容读取操作完成监控操作。
[0232] 所述的针对硬件虚拟化的内存监控系统,计算模块还包括:
[0233] 对得到的物理地址值进行计算,得到对应的页框号以及在该页中的偏移量,页框号即该页所在页的起始地址;利用页框号及DomU的id,利用已经实现的特权虚拟机的内核模块的地址映射功能,在特权虚拟机中分配一页空闲页,将该页框号对应的一页内存的内容映射到该空闲页,即让这页内存对应到DomU中要映射页对应的机器地址中的页上,返回该空闲页;在返回的内存页中利用之前求得的PML4E在页中的偏移量既得PML4E的值;返回PML4E的值。
[0234] 所述的针对硬件虚拟化的内存监控系统,指向进程地址空间模块包括:
[0235] 获得虚拟地址模块,用于得到pid对应的进程的页目录表基址的虚拟地址;
[0236] 获得物理地址模块,用于利用得到的进程的页目录表基地址的虚拟地址通过A2步骤可以得到其对应的物理地址;
[0237] 页表查询模块,用于利用得到的进程的页目录表基地址的物理地址进行页表查询,重复执行指向内核空间模块,从而完成进程地址空间的内存的监控操作。
[0238] 所述的针对硬件虚拟化的内存监控系统,获得虚拟地址模块包括:
[0239] 通过初始化得到DomU的初始进程init task的物理地址、进程结构的偏移量;由于进程在内存中是链表排列的,每个进程结构中都有一个指向下一个进程的指针,因此,从初始进程开始遍历所有的进程,利用获得的pid偏移量得到链表中每个进程的pid的值,与提供的pid进行比对,如果相同,则是要找的进程,否则继续查找;进程的页目录表项基地址的虚拟地址存在于进程结构中,利用之前得到的偏移量以及找到的进程地址即算出该地址。
[0240] 本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。