一种内存管理方法、虚拟机监视器及计算机的制作方法

文档序号:6585319阅读:235来源:国知局
专利名称:一种内存管理方法、虚拟机监视器及计算机的制作方法
技术领域
本发明涉及虚拟化技术,特别是一种内存管理方法、虚拟机监视器及计算机。
背景技术
在现有的虚拟化过程中,都有一个通用的虚拟设备平台,包括虚拟声卡、虚拟显 卡、虚拟内存等,由虚拟机监视器(Virtual Machine Monitor,VMM)将客户操作系统(Guest OS, G0S)对虚拟设备平台中的虚拟设备的访问通过服务操作系统(Service OS, SOS)或者 主机操作系统(Host OS)访问到真实的硬件上。发明人在实现本发明实施例的过程中发现,现有的虚拟机技术至少存在如下缺点。现有的虚拟机技术中,在存在多个客户操作系统时,每个操作系统,或者不同操作 系统中的相同的应用程序都需要占用各自独立的物理内存,在运行的客户操作系统较多, 或者运行的应用程序较多时,导致内存需求极大。

发明内容
本发明的目的是提供一种内存管理方法、虚拟机监视器及计算机,降低虚拟化技 术所需求的内存。为了实现上述目的,本发明实施例提供了一种内存管理方法,包括虚拟机监视器接收第一客户操作系统在将待加载数据加载到第一物理内存后下 发的数据加载通知消息;虚拟机监视器根据所述数据加载通知消息判断待加载数据是否与已加载数据中 的任意一个相同,获取一第一判断结果;在第一判断结果指示待加载数据与第二已加载数据相同时,虚拟机监视器释放第 一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,使用另外一个物 理内存中的数据提供访问服务。上述的内存管理方法,其中,所述数据加载通知消息包括待加载数据的第一标识 信息和第一虚拟内存的内存地址,所述虚拟机监视器根据所述第一标识信息和待加载数据 之中的至少一个判断待加载数据是否与已加载数据中的任意一个相同,获取所述第一判断结果。上述的内存管理方法,其中,还包括虚拟机监视器为每个客户操作系统维护一第一对应关系表和第二对应关系表,所 述第一对应关系表用于记录客户操作系统的虚拟内存的内存地址和物理内存的内存地址 之间的对应关系,所述第二对应关系表用于记录客户操作系统的已加载数据所在的物理内 存的内存地址;所述虚拟机监视器在第一客户操作系统的第一对应关系表中记录第一虚拟内存 的内存地址和第一物理内存的内存地址的对应关系;
所述虚拟机监视器释放第一物理内存和第二已加载数据所在的第二物理内存中 的其中一个的数据后,将所有第一对应关系表和第二对应关系表中的被释放的物理内存的 地址修改为第一物理内存和第二已加载数据所在的第二物理内存中的没有被释放的物理 内存的地址。上述的内存管理方法,其中,还包括虚拟机监视器在第二客户操作系统下发对第二数据进行写操作的写请求时,判断 所述第二数据所在的第三物理内存是否被多个客户操作系统所使用,获取一第二判断结 果;在第二判断结果指示第三物理内存被多个客户操作系统所使用时,虚拟机监视器 为所述第三物理内存中的第二数据分配第四物理内存,并将所述第三物理内存中的第二数 据复制到所述第四物理内存;虚拟机监视器将所述第二客户操作系统对应的第一对应关系表和第二对应关系 表中的第三物理内存修改为第四物理内存。上述的内存管理方法,其中,所述虚拟机监视器根据所述第一标识信息和待加载 数据判断待加载数据是否与已加载数据中的任意一个相同,获取所述第一判断结果。上述的内存管理方法,其中,所述虚拟机监视器根据所述第一标识信息和待加载 数据判断待加载数据是否与已加载数据中的任意一个相同,获取所述第一判断结果具体包 括 虚拟机监视器获取所述第一标识信息;虚拟机监视器一一对比所述第一标识信息和所有已加载数据的标识信息;虚拟机监视器获取已加载数据的标识信息中与所述第一标识信息相同的第二标 识信息对应的实际物理内存中的第二已加载数据后,判断第二已加载数据与所述待加载数 据是否相同,如果相同,则指示待加载数据与第二已加载数据相同,否则指示待加载数据与 第二已加载数据不相同。为了实现上述目的,本发明实施例还提供了一种虚拟机监视器,包括接收模块,用于接收第一客户操作系统在将待加载数据加载到第一物理内存后下 发的数据加载通知消息;第一判断模块,用于根据所述数据加载通知消息判断待加载数据是否与已加载数 据中的任意一个相同,获取一第一判断结果;第一处理模块,用于在第一判断结果指示待加载数据与第二已加载数据相同时, 释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,使用另外 一个物理内存中的数据提供访问服务。上述的虚拟机监视器,其中,所述数据加载通知消息包括待加载数据的第一标识 信息和第一虚拟内存的内存地址,所述第一判断模块具体用于根据所述第一标识信息和待 加载数据之中的至少一个判断待加载数据是否与已加载数据中的任意一个相同,获取所述 第一判断结果。上述的虚拟机监视器,其中,还包括维护模块,用于为每个客户操作系统维护一第一对应关系表和第二对应关系表, 所述第一对应关系表用于记录客户操作系统的虚拟内存的内存地址和物理内存的内存地址之间的对应关系,所述第二对应关系表用于记录客户操作系统的已加载数据所在的物理 内存的内存地址;所述第一处理模块还用于在释放第一物理内存和第二已加载数据所在的第二物 理内存中的其中一个的数据后,将所有第一对应关系表和第二对应关系表中的被释放的物 理内存的地址修改为没有被释放的物理内存的地址。上述的虚拟机监视器,其中,还包括第二判断模块,用于在第二客户操作系统下发对第二数据进行写操作的写请求 时,判断所述第二数据所在的第三物理内存是否被多个客户操作系统所使用,获取一第二 判断结果;第二处理模块,用于在第二判断结果指示第三物理内存被多个客户操作系统所使 用时,为所述第三物理内存中的第二数据分配第四物理内存,并将所述第三物理内存中的 第二数据复制到所述第四物理内存;第三处理模块,用于将所述第二客户操作系统对应的第一对应关系表和第二对应 关系表中的第三物理内存修改为第四物理内存。上述的虚拟机监视器,其中,所述虚拟机监视器根据所述第一标识信息和待加载 数据判断待加载数据是否与已加载数据中的任意一个相同,获取所述第一判断结果。上述的虚拟机监视器,其中,所述第一判断模块具体包括获取单元,用于获取所述第一标识信息;第一比较单元,用于一一对比所述第一标识信息和所有已加载数据的标识信息;第二比较单元,用于判断第二已加载数据与所述待加载数据是否相同,如果相同, 则指示待加载数据与第二已加载数据相同,否则指示待加载数据与第二已加载数据不相 同;所述第二已加载数据为已加载数据的标识信息中与所述第一标识信息相同的第 二标识信息对应的实际物理内存中的已加载数据。为了实现上述目的,本发明实施例还提供了一种计算机,包括硬件设备、运行在所 述硬件设备的虚拟机监视器、以及运行在所述虚拟机监视器上的客户操作系统,所述硬件 设备中包括内存,所述虚拟机监视器包括接收模块,用于接收所述客户操作系统中的第一客户操作系统在将待加载数据加 载到第一物理内存后下发的数据加载通知消息;第一判断模块,用于根据所述数据加载通知消息判断待加载数据是否与已加载数 据中的任意一个相同,获取一第一判断结果;第一处理模块,用于在第一判断结果指示待加载数据与第二已加载数据相同时, 释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,使用另外 一个物理内存中的数据提供访问服务。本发明实施例具有以下的有益效果本发明实施例中,虚拟机监视器接收第一客户操作系统在将待加载数据加载到第 一物理内存后下发的数据加载通知消息后,根据所述数据加载通知消息判断待加载数据是 否与已加载数据中的任意一个相同,并在待加载数据与第二已加载数据相同时,虚拟机监 视器释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,使用另外一个物理内存中的数据提供访问服务,因此,相同的数据不再占据多份物理内存,降低 虚拟化技术所需求的内存。


图1为本发明实施例的内存管理方法的流程示意图。图2为本发明实施例的虚拟机监视器的结构示意图。
具体实施例方式本发明实施例中,虚拟机监视器根据客户操作系统下发的数据加载通知消息后, 合并加载数据相同的内存,降低内存需求。本发明实施例的内存管理方法,包括虚拟机监视器在接收到第一客户操作系统在将待加载数据加载到第一物理内存 后下发的数据加载通知消息;虚拟机监视器根据所述数据加载通知消息判断待加载数据是否与已加载数据中 的任意一个相同,获取一第一判断结果;在第一判断结果指示待加载数据与第二已加载数据相同时,虚拟机监视器释放第 一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,使用另外一个物 理内存中的数据提供访问服务。所述数据加载通知消息包括待加载数据的第一标识信息和第一虚拟内存的内存 地址,所述虚拟机监视器根据所述第一标识信息和待加载数据之中的至少一个判断待加载 数据是否与已加载数据中的任意一个相同,获取所述第一判断结果。同时,虚拟机监视器还可以为每个客户操作系统维护一第一对应关系表和第二对 应关系表,所述第一对应关系表用于记录客户操作系统的虚拟内存的内存地址和物理内存 的内存地址之间的对应关系,所述第二对应关系表用于记录客户操作系统的已加载数据所 在的物理内存的内存地址;而所述虚拟机监视器根据该数据加载通知消息在第一客户操作系统的第一对应 关系表中记录第一虚拟内存的内存地址和第一物理内存的内存地址的对应关系;并在释放 第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据后,将所有第一 对应关系表和第二对应关系表中的被释放的物理内存的地址修改为第一物理内存和第二 已加载数据所在的第二物理内存中的没有被释放的物理内存的地址。如图1所示,为本发明实施例的内存管理方法的流程示意图,包括步骤11,虚拟机监视器为每个客户操作系统维护一第一对应关系表和第二对应关 系表,所述第一对应关系表用于记录客户操作系统的虚拟内存的内存地址和分配到的物理 内存的内存地址之间的对应关系,所述第二对应关系表用于记录客户操作系统的已加载数 据所在的物理内存的内存地址;步骤12,虚拟机监视器接收第一客户操作系统在将待加载数据加载到第一物理内 存后下发的包括待加载数据的第一标识信息和第一虚拟内存的内存地址的数据加载通知 消息;步骤13,虚拟机监视器根据所述第一标识信息和待加载数据之中的至少一个判断待加载数据是否与已加载数据中的任意一个相同,获取一第一判断结果;步骤14,在判断结果指示待加载数据与第二已加载数据相同时,虚拟机监视器执 行合并操作,释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数 据,并将第一对应关系表和第二对应关系表中的被释放的物理内存的地址修改为没有被释 放的物理内存的地址。本发明实施例的虚拟机监视器如图2所示,包括维护模块,用于为每个客户操作系统维护第一对应关系表和第二对应关系表,所 述第一对应关系表用于记录客户操作系统的虚拟内存的内存地址和分配到的物理内存的 内存地址之间的对应关系,所述第二对应关系表用于记录客户操作系统的已加载数据所在 的物理内存的内存地址;接收模块,用于在接收到第一客户操作系统下发的包括待加载数据的第一标识信 息和第一虚拟内存的内存地址的数据加载通知消息后,分配第一物理内存,并在第一客户 操作系统的第一对应关系表中记录第一虚拟内存的内存地址和第一物理内存的内存地址 的对应关系,并将待加载数据加载到所述第一物理内存;第一判断模块,用于根据所述第一标识信息和待加载数据之中的至少一个判断待 加载数据是否与已加载数据中的任意一个相同,获取一第一判断结果;第一处理模块,用于在第一判断结果指示待加载数据与第二已加载数据相同时, 虚拟机监视器执行合并操作,释放第一物理内存和第二已加载数据所在的第二物理内存中 的其中一个的数据,并将第一对应关系表和第二对应关系表中的被释放的物理内存的地址 修改为没有被释放的物理内存的地址。在本发明的具体实施例中,该待加载数据可以是客户操作系统自身的数据,也可 以是客户操作系统中运行的应用程序的数据。在本发明的具体实施例中,需要根据所述第一标识信息和待加载数据之中的至少 一个判断待加载数据是否与已加载数据中的任意一个相同,获取一第一判断结果,下面对 各种判断方式进行详细说明。<判断方式一 >通过待加载数据的标识信息来判断。数据的标识信息能够表明数据的身份以及特征,因此通过数据的标识信息即可判 断该待加载数据是不是已经被加载过,详细说明如下。假定在虚拟机系统中已经运行了 1个G0S,其操作系统的类型为A,且对于该G0S, 虚拟机已经记录了如下两个表格的对应关系
权利要求
1.一种内存管理方法,其特征在于,包括虚拟机监视器接收第一客户操作系统在将待加载数据加载到第一物理内存后下发的 数据加载通知消息;虚拟机监视器根据所述数据加载通知消息判断待加载数据是否与已加载数据中的任 意一个相同,获取一第一判断结果;在第一判断结果指示待加载数据与第二已加载数据相同时,虚拟机监视器释放第一物 理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,使用另外一个物理内 存中的数据提供访问服务。
2.根据权利要求1所述的内存管理方法,其特征在于,所述数据加载通知消息包括待 加载数据的第一标识信息和第一虚拟内存的内存地址,所述虚拟机监视器根据所述第一标 识信息和待加载数据之中的至少一个判断待加载数据是否与已加载数据中的任意一个相 同,获取所述第一判断结果。
3.根据权利要求1或2所述的内存管理方法,其特征在于,还包括虚拟机监视器为每个客户操作系统维护一第一对应关系表和第二对应关系表,所述第 一对应关系表用于记录客户操作系统的虚拟内存的内存地址和物理内存的内存地址之间 的对应关系,所述第二对应关系表用于记录客户操作系统的已加载数据所在的物理内存的 内存地址;所述虚拟机监视器在第一客户操作系统的第一对应关系表中记录第一虚拟内存的内 存地址和第一物理内存的内存地址的对应关系;所述虚拟机监视器释放第一物理内存和第二已加载数据所在的第二物理内存中的其 中一个的数据后,将所有第一对应关系表和第二对应关系表中的被释放的物理内存的地址 修改为第一物理内存和第二已加载数据所在的第二物理内存中的没有被释放的物理内存 的地址。
4.根据权利要求3所述的内存管理方法,其特征在于,还包括虚拟机监视器在第二客户操作系统下发对第二数据进行写操作的写请求时,判断所述 第二数据所在的第三物理内存是否被多个客户操作系统所使用,获取一第二判断结果;在第二判断结果指示第三物理内存被多个客户操作系统所使用时,虚拟机监视器为所 述第三物理内存中的第二数据分配第四物理内存,并将所述第三物理内存中的第二数据复 制到所述第四物理内存;虚拟机监视器将所述第二客户操作系统对应的第一对应关系表和第二对应关系表中 的第三物理内存修改为第四物理内存。
5.根据权利要求2所述的内存管理方法,其特征在于,所述虚拟机监视器根据所述第 一标识信息和待加载数据判断待加载数据是否与已加载数据中的任意一个相同,获取所述 第一判断结果。
6.根据权利要求5所述的内存管理方法,其特征在于,所述虚拟机监视器根据所述第 一标识信息和待加载数据判断待加载数据是否与已加载数据中的任意一个相同,获取所述 第一判断结果具体包括虚拟机监视器获取所述第一标识信息;虚拟机监视器一一对比所述第一标识信息和所有已加载数据的标识信息;虚拟机监视器获取已加载数据的标识信息中与所述第一标识信息相同的第二标识信 息对应的实际物理内存中的第二已加载数据后,判断第二已加载数据与所述待加载数据是 否相同,如果相同,则指示待加载数据与第二已加载数据相同,否则指示待加载数据与第二 已加载数据不相同。
7.—种虚拟机监视器,其特征在于,包括接收模块,用于接收第一客户操作系统在将待加载数据加载到第一物理内存后下发的 数据加载通知消息;第一判断模块,用于根据所述数据加载通知消息判断待加载数据是否与已加载数据中 的任意一个相同,获取一第一判断结果;第一处理模块,用于在第一判断结果指示待加载数据与第二已加载数据相同时,释放 第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,使用另外一个 物理内存中的数据提供访问服务。
8.根据权利要求7所述的虚拟机监视器,其特征在于,所述数据加载通知消息包括待 加载数据的第一标识信息和第一虚拟内存的内存地址,所述第一判断模 块具体用于根据所 述第一标识信息和待加载数据之中的至少一个判断待加载数据是否与已加载数据中的任 意一个相同,获取所述第一判断结果。
9.根据权利要求7或8所述的虚拟机监视器,其特征在于,还包括维护模块,用于为每个客户操作系统维护一第一对应关系表和第二对应关系表,所述 第一对应关系表用于记录客户操作系统的虚拟内存的内存地址和物理内存的内存地址之 间的对应关系,所述第二对应关系表用于记录客户操作系统的已加载数据所在的物理内存 的内存地址;所述第一处理模块还用于在释放第一物理内存和第二已加载数据所在的第二物理内 存中的其中一个的数据后,将所有第一对应关系表和第二对应关系表中的被释放的物理内 存的地址修改为没有被释放的物理内存的地址。
10.根据权利要求9所述的虚拟机监视器,其特征在于,还包括第二判断模块,用于在第二客户操作系统下发对第二数据进行写操作的写请求时,判 断所述第二数据所在的第三物理内存是否被多个客户操作系统所使用,获取一第二判断结 果;第二处理模块,用于在第二判断结果指示第三物理内存被多个客户操作系统所使用 时,为所述第三物理内存中的第二数据分配第四物理内存,并将所述第三物理内存中的第 二数据复制到所述第四物理内存;第三处理模块,用于将所述第二客户操作系统对应的第一对应关系表和第二对应关系 表中的第三物理内存修改为第四物理内存。
11.根据权利要求8所述的虚拟机监视器,其特征在于,所述虚拟机监视器根据所述第 一标识信息和待加载数据判断待加载数据是否与已加载数据中的任意一个相同,获取所述 第一判断结果。
12.根据权利要求11所述的虚拟机监视器,其特征在于,所述第一判断模块具体包括获取单元,用于获取所述第一标识信息;第一比较单元,用于一一对比所述第一标识信息和所有已加载数据的标识信息;第二比较单元,用于判断第二已加载数据与所述待加载数据是否相同,如果相同,则指 示待加载数据与第二已加载数据相同,否则指示待加载数据与第二已加载数据不相同;所述第二已加载数据为已加载数据的标识信息中与所述第一标识信息相同的第二标 识信息对应的实际物理内存中的已加载数据。
13. 一种计算机,包括硬件设备、运行在所述硬件设备的虚拟机监视器、以及运行在所 述虚拟机监视器上的客户操作系统,所述硬件设备中包括内存,其特征在于,所述虚拟机监 视器包括接收模块,用于接收所述客户操作系统中的第一客户操作系统在将待加载数据加载到 第一物理内存后下发的数据加载通知消息;第一判断模块,用于根据所述数据加载通知消息判断待加载数据是否与已加载数据中 的任意一个相同,获取一第一判断结果;第一处理模块,用于在第一判断结果指示待加载数据与第二已加载数据相同时,释放 第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,使用另外一个 物理内存中的数据提供访问服务。
全文摘要
本发明提供一种内存管理方法、虚拟机监视器及计算机,该内存管理方法包括虚拟机监视器接收第一客户操作系统在将待加载数据加载到第一物理内存后下发的数据加载通知消息;虚拟机监视器根据所述数据加载通知消息判断待加载数据是否与已加载数据中的任意一个相同,获取一第一判断结果;在第一判断结果指示待加载数据与第二已加载数据相同时,虚拟机监视器释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,使用另外一个物理内存中的数据提供访问服务。本发明降低了虚拟化技术的内存需求。
文档编号G06F9/455GK102103515SQ20091024345
公开日2011年6月22日 申请日期2009年12月22日 优先权日2009年12月22日
发明者汤良 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1