CN102103515B - 一种内存管理方法、虚拟机监视器及计算机 - Google Patents

一种内存管理方法、虚拟机监视器及计算机 Download PDF

Info

Publication number
CN102103515B
CN102103515B CN200910243453.6A CN200910243453A CN102103515B CN 102103515 B CN102103515 B CN 102103515B CN 200910243453 A CN200910243453 A CN 200910243453A CN 102103515 B CN102103515 B CN 102103515B
Authority
CN
China
Prior art keywords
data
loaded
memory
physical memory
virtual machine
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.)
Active
Application number
CN200910243453.6A
Other languages
English (en)
Other versions
CN102103515A (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.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing 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 Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CN200910243453.6A priority Critical patent/CN102103515B/zh
Publication of CN102103515A publication Critical patent/CN102103515A/zh
Application granted granted Critical
Publication of CN102103515B publication Critical patent/CN102103515B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种内存管理方法、虚拟机监视器及计算机,该内存管理方法包括:虚拟机监视器接收第一客户操作系统在将待加载数据加载到第一物理内存后下发的数据加载通知消息;虚拟机监视器根据所述数据加载通知消息判断待加载数据是否与已加载数据中的任意一个相同,获取一第一判断结果;在第一判断结果指示待加载数据与第二已加载数据相同时,虚拟机监视器释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,使用另外一个物理内存中的数据提供访问服务。本发明降低了虚拟化技术的内存需求。

Description

一种内存管理方法、虚拟机监视器及计算机
技术领域
本发明涉及虚拟化技术,特别是一种内存管理方法、虚拟机监视器及计算机。
背景技术
在现有的虚拟化过程中,都有一个通用的虚拟设备平台,包括虚拟声卡、虚拟显卡、虚拟内存等,由虚拟机监视器(Virtual Machine Monitor,VMM)将客户操作系统(Guest OS,GOS)对虚拟设备平台中的虚拟设备的访问通过服务操作系统(Service OS,SOS)或者主机操作系统(Host OS)访问到真实的硬件上。
发明人在实现本发明实施例的过程中发现,现有的虚拟机技术至少存在如下缺点:
现有的虚拟机技术中,在存在多个客户操作系统时,每个操作系统,或者不同操作系统中的相同的应用程序都需要占用各自独立的物理内存,在运行的客户操作系统较多,或者运行的应用程序较多时,导致内存需求极大。
发明内容
本发明的目的是提供一种内存管理方法、虚拟机监视器及计算机,降低虚拟化技术所需求的内存。
为了实现上述目的,本发明实施例提供了一种内存管理方法,包括:
虚拟机监视器接收第一客户操作系统在将待加载数据加载到第一物理内存后下发的数据加载通知消息;
虚拟机监视器根据所述数据加载通知消息判断待加载数据是否与已加载数据中的任意一个相同,获取一第一判断结果;
在第一判断结果指示待加载数据与第二已加载数据相同时,虚拟机监视器释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,使用另外一个物理内存中的数据提供访问服务。
上述的内存管理方法,其中,所述数据加载通知消息包括待加载数据的第一标识信息和第一虚拟内存的内存地址,所述虚拟机监视器根据所述第一标识信息和待加载数据之中的至少一个判断待加载数据是否与已加载数据中的任意一个相同,获取所述第一判断结果。
上述的内存管理方法,其中,还包括:
虚拟机监视器为每个客户操作系统维护一第一对应关系表和第二对应关系表,所述第一对应关系表用于记录客户操作系统的虚拟内存的内存地址和物理内存的内存地址之间的对应关系,所述第二对应关系表用于记录客户操作系统的已加载数据所在的物理内存的内存地址;
所述虚拟机监视器在第一客户操作系统的第一对应关系表中记录第一虚拟内存的内存地址和第一物理内存的内存地址的对应关系;
所述虚拟机监视器释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据后,将所有第一对应关系表和第二对应关系表中的被释放的物理内存的地址修改为第一物理内存和第二已加载数据所在的第二物理内存中的没有被释放的物理内存的地址。
上述的内存管理方法,其中,还包括:
虚拟机监视器在第二客户操作系统下发对第二数据进行写操作的写请求时,判断所述第二数据所在的第三物理内存是否被多个客户操作系统所使用,获取一第二判断结果;
在第二判断结果指示第三物理内存被多个客户操作系统所使用时,虚拟机监视器为所述第三物理内存中的第二数据分配第四物理内存,并将所述第三物理内存中的第二数据复制到所述第四物理内存;
虚拟机监视器将所述第二客户操作系统对应的第一对应关系表和第二对应关系表中的第三物理内存修改为第四物理内存。
上述的内存管理方法,其中,所述虚拟机监视器根据所述第一标识信息和待加载数据判断待加载数据是否与已加载数据中的任意一个相同,获取所述第一判断结果。
上述的内存管理方法,其中,所述虚拟机监视器根据所述第一标识信息和待加载数据判断待加载数据是否与已加载数据中的任意一个相同,获取所述第一判断结果具体包括:
虚拟机监视器获取所述第一标识信息;
虚拟机监视器一一对比所述第一标识信息和所有已加载数据的标识信息;
虚拟机监视器获取已加载数据的标识信息中与所述第一标识信息相同的第二标识信息对应的实际物理内存中的第二已加载数据后,判断第二已加载数据与所述待加载数据是否相同,如果相同,则指示待加载数据与第二已加载数据相同,否则指示待加载数据与第二已加载数据不相同。
为了实现上述目的,本发明实施例还提供了一种虚拟机监视器,包括:
接收模块,用于接收第一客户操作系统在将待加载数据加载到第一物理内存后下发的数据加载通知消息;
第一判断模块,用于根据所述数据加载通知消息判断待加载数据是否与已加载数据中的任意一个相同,获取一第一判断结果;
第一处理模块,用于在第一判断结果指示待加载数据与第二已加载数据相同时,释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,使用另外一个物理内存中的数据提供访问服务。
上述的虚拟机监视器,其中,所述数据加载通知消息包括待加载数据的第一标识信息和第一虚拟内存的内存地址,所述第一判断模块具体用于根据所述第一标识信息和待加载数据之中的至少一个判断待加载数据是否与已加载数据中的任意一个相同,获取所述第一判断结果。
上述的虚拟机监视器,其中,还包括:
维护模块,用于为每个客户操作系统维护一第一对应关系表和第二对应关系表,所述第一对应关系表用于记录客户操作系统的虚拟内存的内存地址和物理内存的内存地址之间的对应关系,所述第二对应关系表用于记录客户操作系统的已加载数据所在的物理内存的内存地址;
所述第一处理模块还用于在释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据后,将所有第一对应关系表和第二对应关系表中的被释放的物理内存的地址修改为没有被释放的物理内存的地址。
上述的虚拟机监视器,其中,还包括:
第二判断模块,用于在第二客户操作系统下发对第二数据进行写操作的写请求时,判断所述第二数据所在的第三物理内存是否被多个客户操作系统所使用,获取一第二判断结果;
第二处理模块,用于在第二判断结果指示第三物理内存被多个客户操作系统所使用时,为所述第三物理内存中的第二数据分配第四物理内存,并将所述第三物理内存中的第二数据复制到所述第四物理内存;
第三处理模块,用于将所述第二客户操作系统对应的第一对应关系表和第二对应关系表中的第三物理内存修改为第四物理内存。
上述的虚拟机监视器,其中,所述虚拟机监视器根据所述第一标识信息和待加载数据判断待加载数据是否与已加载数据中的任意一个相同,获取所述第一判断结果。
上述的虚拟机监视器,其中,所述第一判断模块具体包括:
获取单元,用于获取所述第一标识信息;
第一比较单元,用于一一对比所述第一标识信息和所有已加载数据的标识信息;
第二比较单元,用于判断第二已加载数据与所述待加载数据是否相同,如果相同,则指示待加载数据与第二已加载数据相同,否则指示待加载数据与第二已加载数据不相同;
所述第二已加载数据为已加载数据的标识信息中与所述第一标识信息相同的第二标识信息对应的实际物理内存中的已加载数据。
为了实现上述目的,本发明实施例还提供了一种计算机,包括硬件设备、运行在所述硬件设备的虚拟机监视器、以及运行在所述虚拟机监视器上的客户操作系统,所述硬件设备中包括内存,所述虚拟机监视器包括:
接收模块,用于接收所述客户操作系统中的第一客户操作系统在将待加载数据加载到第一物理内存后下发的数据加载通知消息;
第一判断模块,用于根据所述数据加载通知消息判断待加载数据是否与已加载数据中的任意一个相同,获取一第一判断结果;
第一处理模块,用于在第一判断结果指示待加载数据与第二已加载数据相同时,释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,使用另外一个物理内存中的数据提供访问服务。
本发明实施例具有以下的有益效果:
本发明实施例中,虚拟机监视器接收第一客户操作系统在将待加载数据加载到第一物理内存后下发的数据加载通知消息后,根据所述数据加载通知消息判断待加载数据是否与已加载数据中的任意一个相同,并在待加载数据与第二已加载数据相同时,虚拟机监视器释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,使用另外一个物理内存中的数据提供访问服务,因此,相同的数据不再占据多份物理内存,降低虚拟化技术所需求的内存。
附图说明
图1为本发明实施例的内存管理方法的流程示意图。
图2为本发明实施例的虚拟机监视器的结构示意图。
具体实施方式
本发明实施例中,虚拟机监视器根据客户操作系统下发的数据加载通知消息后,合并加载数据相同的内存,降低内存需求。
本发明实施例的内存管理方法,包括:
虚拟机监视器在接收到第一客户操作系统在将待加载数据加载到第一物理内存后下发的数据加载通知消息;
虚拟机监视器根据所述数据加载通知消息判断待加载数据是否与已加载数据中的任意一个相同,获取一第一判断结果;
在第一判断结果指示待加载数据与第二已加载数据相同时,虚拟机监视器释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,使用另外一个物理内存中的数据提供访问服务。
所述数据加载通知消息包括待加载数据的第一标识信息和第一虚拟内存的内存地址,所述虚拟机监视器根据所述第一标识信息和待加载数据之中的至少一个判断待加载数据是否与已加载数据中的任意一个相同,获取所述第一判断结果。
同时,虚拟机监视器还可以为每个客户操作系统维护一第一对应关系表和第二对应关系表,所述第一对应关系表用于记录客户操作系统的虚拟内存的内存地址和物理内存的内存地址之间的对应关系,所述第二对应关系表用于记录客户操作系统的已加载数据所在的物理内存的内存地址;
而所述虚拟机监视器根据该数据加载通知消息在第一客户操作系统的第一对应关系表中记录第一虚拟内存的内存地址和第一物理内存的内存地址的对应关系;并在释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据后,将所有第一对应关系表和第二对应关系表中的被释放的物理内存的地址修改为第一物理内存和第二已加载数据所在的第二物理内存中的没有被释放的物理内存的地址。
如图1所示,为本发明实施例的内存管理方法的流程示意图,包括:
步骤11,虚拟机监视器为每个客户操作系统维护一第一对应关系表和第二对应关系表,所述第一对应关系表用于记录客户操作系统的虚拟内存的内存地址和分配到的物理内存的内存地址之间的对应关系,所述第二对应关系表用于记录客户操作系统的已加载数据所在的物理内存的内存地址;
步骤12,虚拟机监视器接收第一客户操作系统在将待加载数据加载到第一物理内存后下发的包括待加载数据的第一标识信息和第一虚拟内存的内存地址的数据加载通知消息;
步骤13,虚拟机监视器根据所述第一标识信息和待加载数据之中的至少一个判断待加载数据是否与已加载数据中的任意一个相同,获取一第一判断结果;
步骤14,在判断结果指示待加载数据与第二已加载数据相同时,虚拟机监视器执行合并操作,释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,并将第一对应关系表和第二对应关系表中的被释放的物理内存的地址修改为没有被释放的物理内存的地址。
本发明实施例的虚拟机监视器如图2所示,包括:
维护模块,用于为每个客户操作系统维护第一对应关系表和第二对应关系表,所述第一对应关系表用于记录客户操作系统的虚拟内存的内存地址和分配到的物理内存的内存地址之间的对应关系,所述第二对应关系表用于记录客户操作系统的已加载数据所在的物理内存的内存地址;
接收模块,用于在接收到第一客户操作系统下发的包括待加载数据的第一标识信息和第一虚拟内存的内存地址的数据加载通知消息后,分配第一物理内存,并在第一客户操作系统的第一对应关系表中记录第一虚拟内存的内存地址和第一物理内存的内存地址的对应关系,并将待加载数据加载到所述第一物理内存;
第一判断模块,用于根据所述第一标识信息和待加载数据之中的至少一个判断待加载数据是否与已加载数据中的任意一个相同,获取一第一判断结果;
第一处理模块,用于在第一判断结果指示待加载数据与第二已加载数据相同时,虚拟机监视器执行合并操作,释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,并将第一对应关系表和第二对应关系表中的被释放的物理内存的地址修改为没有被释放的物理内存的地址。
在本发明的具体实施例中,该待加载数据可以是客户操作系统自身的数据,也可以是客户操作系统中运行的应用程序的数据。
在本发明的具体实施例中,需要根据所述第一标识信息和待加载数据之中的至少一个判断待加载数据是否与已加载数据中的任意一个相同,获取一第一判断结果,下面对各种判断方式进行详细说明。
<判断方式一>
通过待加载数据的标识信息来判断。
数据的标识信息能够表明数据的身份以及特征,因此通过数据的标识信息即可判断该待加载数据是不是已经被加载过,详细说明如下。
假定在虚拟机系统中已经运行了1个GOS,其操作系统的类型为A,且对于该GOS,虚拟机已经记录了如下两个表格的对应关系:
  虚拟内存的内存地址   物理内存的内存地址
  [A1 A2]   [B1 B2]
  [A2 A3]   [B2 B3]
  ...   ...
  [An An+1]   [Bn Bn+1]
  ...   ...
  已加载数据的标识信息   物理内存的内存地址
  X1   [C1 C2]
  X2   [D1 D2]
  ...   ...
  Xn   [X1 X2]
  ...   ...
此时,虚拟机系统需要启动第二个GOS,其对应的操作系统与第一个GOS中运行的操作系统完全相同,这种情况下,假定物理内存的内存地址[C1 C2]中加载的数据(对应的标识信息为X1)为操作系统的代码段内容,第二GOS同样也需要加载与第一个GOS同样的代码段,此时,第二GOS会向VMM发送数据加载通知消息,通知VMM其在第一虚拟内存(假定为[Am Am+1],对应于物理内存[Y1 Y2])上加载了同样的代码段,VMM在接收到该数据加载通知消息后,为第二个GOS建立如下的对应关系:
  虚拟内存的内存地址   物理内存的内存地址
  [Am Am+1]   [Y1 Y2]
  已加载数据的标识信息   物理内存的内存地址
  X1   [Y1 Y2]
其中虚拟内存的[Am Am+1]对应于物理内存的[Y1 Y2]。
此后,VMM分析该代码段是否与已加载数据中的任意一个相同,在第一种实现方式中,利用数据的标识信息来进行判断,说明如下。
VMM根据第二个GOS下发的数据加载通知消息,获取待加载数据的标识信息,然后与第一个GOS的已加载数据的标识信息一一对比,直至找到相同的标识信息或者比较结束,一旦从已加载数据的标识信息中找到与待加载数据的标识信息相同的标识信息,则表明该数据此前已经被加载过,可以共享使用,因此,VMM会释放[Y1 Y2]中的数据,同时将为第二个GOS建立如下的对应关系修改如下:
  虚拟内存的内存地址   物理内存的内存地址
  [Am Am+1]   [C1 C2]
  已加载数据的标识信息   物理内存的内存地址
  X1   [C1 C2]
此后,第一个GOS和第二个GOS如果需要读取代码段的内容,都会从同一段内存([C1 C2])中读取,而不需要向现有技术那样,使用两段内存来分别保存相同的数据,造成内存资源的浪费。
<判断方式二>
在上述的判断方式一,直接以数据的标识信息来判断,为了提高准确度,在实现方式二中,根据待加载数据本身来进行比较,详细说明如下。
假定在虚拟机系统中已经运行了1个GOS,其操作系统的类型为A,且对于该GOS,虚拟机已经记录了如下两个表格的对应关系:
  虚拟内存的内存地址   物理内存的内存地址
  [A1 A2]   [B1 B2]
  [A2 A3]   [B2 B3]
  ...   ...
  [An An+1]   [Bn Bn+1]
  ...   ...
  已加载数据的标识信息   物理内存的内存地址
  X1   [C1 C2]
  X2   [D1 D2]
  ...   ...
  Xn   [X1 X2]
此时,虚拟机系统需要启动第二个GOS,其对应的操作系统与第一个GOS中运行的操作系统完全相同,这种情况下,假定物理内存的内存地址[C1 C2]中加载的数据(对应的标识信息为X1)为操作系统的代码段内容,第二GOS同样也需要加载与第一个GOS同样的代码段,此时,第二GOS会向VMM发送数据加载通知消息,通知VMM其在第一虚拟内存(假定为[Am Am+1],对应于物理内存[Y1 Y2])上加载了同样的代码段,VMM在接收到该数据加载通知消息后,为第二个GOS建立如下的对应关系:
  虚拟内存的内存地址   物理内存的内存地址
  [Am Am+1]   [Y1 Y2]
  已加载数据的标识信息   物理内存的内存地址
  X1   [Y1 Y2]
其中虚拟内存的[Am Am+1]对应于物理内存的[Y1 Y2]。
然后VMM根据会比较待加载数据与内存中的其他数据,判断是否存在与待加载数据相同的已加载数据,由于在此之前,第一个GOS已经记载了相同的数据,此时VMM会发现[C1 C2]中的已加载数据与待加载数据完全相同,则释放[Y1 Y2]中的数据,同时将为第二个GOS建立如下的对应关系修改如下:
  虚拟内存的内存地址   物理内存的内存地址
  [Am Am+1]   [C1 C2]
  已加载数据的标识信息   物理内存的内存地址
  X1   [C1 C2]
此后,第一个GOS和第二个GOS如果需要读取代码段的内容,都会从同一段内存([C1 C2])中读取,而不需要向现有技术那样,使用两段内存来分别保存相同的数据,造成内存资源的浪费。
相对于方式一,方式二比较保险,因为其比较的是实际的数据。
<判断方式三>
在上述的判断方式二,根据待加载数据本身来进行比较,但可以看出,其需要比较所有的内存中的数据,比较操作较多,为了降低比较的数据量,在实现方式三中,根据标识信息和待加载数据本身来进行比较,详细说明如下。
假定在虚拟机系统中已经运行了1个GOS,其操作系统的类型为A,且对于该GOS,虚拟机已经记录了如下两个表格的对应关系:
  虚拟内存的内存地址   物理内存的内存地址
  [A1 A2]   [B1 B2]
  [A2 A3]   [B2 B3]
  ...   ...
  [An An+1]   [Bn Bn+1]
  ...   ...
  已加载数据的标识信息   物理内存的内存地址
  X1   [C1 C2]
  X2   [D1 D2]
  ...   ...
  Xn   [X1 X2]
  ...   ...
此时,虚拟机系统需要启动第二个GOS,其对应的操作系统与第一个GOS中运行的操作系统完全相同,这种情况下,假定物理内存的内存地址[C1 C2]中加载的数据(对应的标识信息为X1)为操作系统的代码段内容,第二GOS同样也需要加载与第一个GOS同样的代码段,此时,第二GOS会向VMM发送数据加载通知消息,通知VMM其在第一虚拟内存(假定为[Am Am+1],对应于物理内存[Y1 Y2])上加载了同样的代码段,VMM在接收到该数据加载通知消息后,为第二个GOS建立如下的对应关系:
  虚拟内存的内存地址   物理内存的内存地址
  [Am Am+1]   [Y1 Y2]
  已加载数据的标识信息   物理内存的内存地址
  X1   [Y1 Y2]
然后VMM根据第二个GOS下发的数据加载通知消息,获取待加载数据的标识信息,然后与第一个GOS的已加载数据的标识信息一一对比,直至找到相同的标识信息或者比较结束,一旦从已加载数据的标识信息中找到与待加载数据的标识信息相同的标识信息,则根据该标识信息加载了该已加载数据的实际物理内存的地址([C1 C2]),然后比较[Y1 Y2]和[C1 C2]中实际数据,判断数据是否完全相同,如果相同,则释放[Y1 Y2]中的数据,同时将为第二个GOS建立如下的对应关系修改如下:
  虚拟内存的内存地址   物理内存的内存地址
  [Am Am+1]   [C1 C2]
  已加载数据的标识信息   物理内存的内存地址
  X1   [C1 C2]
此后,第一GOS和第二GOS如果需要读取代码段的内容,都会从同一段内存([C1 C2])中读取,并返回给GOS,而不需要向现有技术那样,使用两段内存来分别保存相同的数据,造成内存资源的浪费。
相对于方式一,方式三更加保险,因为其比较的是实际的数据。
同时,相对于方式二,方式三能够降低比较的数据量。
同时,应当理解的是,上述的3种方式都是修改的第二GOS的对应关系表中的物理内存的内存地址,但应当理解的是,也可以释放第一GOS的已加载数据,并修改第一GOS的对应关系表中的物理内存的内存地址。
在本发明的具体实施例中,有部分物理内存被多个GOS共享,此时一旦该物理内存中的部分数据需要被某一个GOS修改,此时,如果还设置共享,就可能会导致其他的操作系统出错,因为其他操作系统并没有修改这部分数据,为了解决这个问题,在本发明的具体实施例中,VMM中还包括:
第二判断模块,用于在第二客户操作系统下发对第二数据进行写操作的写请求时,判断所述第二数据所在的第三物理内存是否被多个客户操作系统所使用,获取一第二判断结果;
第二处理模块,用于在第二判断结果指示第三物理内存被多个客户操作系统所使用时,为所述第三物理内存中的第二数据分配第四物理内存,并将所述第三物理内存中的第二数据复制到所述第四物理内存;
第三处理模块,用于将所述第二客户操作系统对应的第一对应关系表和第二对应关系表的第三物理内存修改为所述第四物理内存。
本发明具体实施例中,该待加载数据可以是操作系统自身的数据,也可以是运行在操作系统中的应用程序的数据,对于任何一种数据,其处理方式都相同,其差别仅在于数据本身的差别。
本发明实施例的计算机,包括硬件设备、运行在所述硬件设备的虚拟机监视器,以及运行在所述虚拟机监视器上的客户操作系统,所述硬件设备中包括内存,所述虚拟机监视器包括:
接收模块,用于接收第一客户操作系统在将待加载数据加载到第一物理内存后下发的数据加载通知消息;
第一判断模块,用于根据所述数据加载通知消息判断待加载数据是否与已加载数据中的任意一个相同,获取一第一判断结果;
第一处理模块,用于在第一判断结果指示待加载数据与第二已加载数据相同时,释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,使用另外一个物理内存中的数据提供访问服务。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (12)

1.一种内存管理方法,其特征在于,包括:
虚拟机监视器接收第一客户操作系统在将待加载数据加载到第一物理内存后下发的数据加载通知消息;
虚拟机监视器根据所述数据加载通知消息判断待加载数据是否与已加载数据中的任意一个相同,获取一第一判断结果;
在第一判断结果指示待加载数据与第二已加载数据相同时,虚拟机监视器释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,使用另外一个物理内存中的数据提供访问服务。
2.根据权利要求1所述的内存管理方法,其特征在于,所述数据加载通知消息包括待加载数据的第一标识信息和第一虚拟内存的内存地址,所述虚拟机监视器根据所述第一标识信息和待加载数据之中的至少一个判断待加载数据是否与已加载数据中的任意一个相同,获取所述第一判断结果。
3.根据权利要求1或2所述的内存管理方法,其特征在于,还包括:
虚拟机监视器为每个客户操作系统维护一第一对应关系表和第二对应关系表,所述第一对应关系表用于记录客户操作系统的虚拟内存的内存地址和物理内存的内存地址之间的对应关系,所述第二对应关系表用于记录客户操作系统的已加载数据所在的物理内存的内存地址;
所述虚拟机监视器在第一客户操作系统的第一对应关系表中记录第一虚拟内存的内存地址和第一物理内存的内存地址的对应关系;
所述虚拟机监视器释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据后,将所有第一对应关系表和第二对应关系表中的被释放的物理内存的地址修改为第一物理内存和第二已加载数据所在的第二物理内存中的没有被释放的物理内存的地址。
4.根据权利要求3所述的内存管理方法,其特征在于,还包括:
虚拟机监视器在第二客户操作系统下发对第二数据进行写操作的写请求时,判断所述第二数据所在的第三物理内存是否被多个客户操作系统所使用,获取一第二判断结果;
在第二判断结果指示第三物理内存被多个客户操作系统所使用时,虚拟机监视器为所述第三物理内存中的第二数据分配第四物理内存,并将所述第三物理内存中的第二数据复制到所述第四物理内存;
虚拟机监视器将所述第二客户操作系统对应的第一对应关系表和第二对应关系表中的第三物理内存修改为第四物理内存。
5.根据权利要求2所述的内存管理方法,其特征在于,所述虚拟机监视器根据所述第一标识信息和待加载数据判断待加载数据是否与已加载数据中的任意一个相同,获取所述第一判断结果。
6.根据权利要求5所述的内存管理方法,其特征在于,所述虚拟机监视器根据所述第一标识信息和待加载数据判断待加载数据是否与已加载数据中的任意一个相同,获取所述第一判断结果具体包括:
虚拟机监视器获取所述第一标识信息;
虚拟机监视器一一对比所述第一标识信息和所有已加载数据的标识信息;
虚拟机监视器获取已加载数据的标识信息中与所述第一标识信息相同的第二标识信息对应的实际物理内存中的第二已加载数据后,判断第二已加载数据与所述待加载数据是否相同,如果相同,则指示待加载数据与第二已加载数据相同,否则指示待加载数据与第二已加载数据不相同。
7.一种内存管理装置,其特征在于,包括:
接收模块,用于虚拟机监视器接收第一客户操作系统在将待加载数据加载到第一物理内存后下发的数据加载通知消息;
第一判断模块,用于虚拟机监视器根据所述数据加载通知消息判断待加载数据是否与已加载数据中的任意一个相同,获取一第一判断结果;
第一处理模块,用于在第一判断结果指示待加载数据与第二已加载数据相同时,虚拟机监视器释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据,使用另外一个物理内存中的数据提供访问服务。
8.根据权利要求7所述的内存管理装置,其特征在于,所述数据加载通知消息包括待加载数据的第一标识信息和第一虚拟内存的内存地址,所述第一判断模块具体用于根据所述第一标识信息和待加载数据之中的至少一个判断待加载数据是否与已加载数据中的任意一个相同,获取所述第一判断结果。
9.根据权利要求7或8所述的内存管理装置,其特征在于,还包括:
维护模块,用于虚拟机监视器为每个客户操作系统维护一第一对应关系表和第二对应关系表,所述第一对应关系表用于记录客户操作系统的虚拟内存的内存地址和物理内存的内存地址之间的对应关系,所述第二对应关系表用于记录客户操作系统的已加载数据所在的物理内存的内存地址;
记录模块,用于所述虚拟机监视器在第一客户操作系统的第一对应关系表中记录第一虚拟内存的内存地址和第一物理内存的内存地址的对应关系;
所述第一处理模块还用于在虚拟机监视器释放第一物理内存和第二已加载数据所在的第二物理内存中的其中一个的数据后,将所有第一对应关系表和第二对应关系表中的被释放的物理内存的地址修改为没有被释放的物理内存的地址。
10.根据权利要求9所述的内存管理装置,其特征在于,还包括:
第二判断模块,用于虚拟机监视器在第二客户操作系统下发对第二数据进行写操作的写请求时,判断所述第二数据所在的第三物理内存是否被多个客户操作系统所使用,获取一第二判断结果;
第二处理模块,用于在第二判断结果指示第三物理内存被多个客户操作系统所使用时,虚拟机监视器为所述第三物理内存中的第二数据分配第四物理内存,并将所述第三物理内存中的第二数据复制到所述第四物理内存;
第三处理模块,用于虚拟机监视器将所述第二客户操作系统对应的第一对应关系表和第二对应关系表中的第三物理内存修改为第四物理内存。
11.根据权利要求8所述的内存管理装置,其特征在于,所述虚拟机监视器根据所述第一标识信息和待加载数据判断待加载数据是否与已加载数据中的任意一个相同,获取所述第一判断结果。
12.根据权利要求11所述的内存管理装置,其特征在于,所述第一判断模块具体包括:
获取单元,用于虚拟机监视器获取所述第一标识信息;
第一比较单元,用于虚拟机监视器一一对比所述第一标识信息和所有已加载数据的标识信息;
第二比较单元,用于虚拟机监视器判断第二已加载数据与所述待加载数据是否相同,如果相同,则指示待加载数据与第二已加载数据相同,否则指示待加载数据与第二已加载数据不相同。
CN200910243453.6A 2009-12-22 2009-12-22 一种内存管理方法、虚拟机监视器及计算机 Active CN102103515B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910243453.6A CN102103515B (zh) 2009-12-22 2009-12-22 一种内存管理方法、虚拟机监视器及计算机

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910243453.6A CN102103515B (zh) 2009-12-22 2009-12-22 一种内存管理方法、虚拟机监视器及计算机

Publications (2)

Publication Number Publication Date
CN102103515A CN102103515A (zh) 2011-06-22
CN102103515B true CN102103515B (zh) 2014-07-02

Family

ID=44156307

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910243453.6A Active CN102103515B (zh) 2009-12-22 2009-12-22 一种内存管理方法、虚拟机监视器及计算机

Country Status (1)

Country Link
CN (1) CN102103515B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105335306B (zh) * 2014-06-30 2018-02-13 华为技术有限公司 一种内存控制方法和装置
CN111338796B (zh) * 2020-02-18 2023-07-18 广州虎牙科技有限公司 应用内存优化方法、装置、终端设备及可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101149688A (zh) * 2006-09-19 2008-03-26 株式会社理光 虚拟化系统、内存管理方法及控制程序

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008033392A (ja) * 2006-07-26 2008-02-14 Nec Corp 仮想計算機システム及びその動作方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101149688A (zh) * 2006-09-19 2008-03-26 株式会社理光 虚拟化系统、内存管理方法及控制程序

Also Published As

Publication number Publication date
CN102103515A (zh) 2011-06-22

Similar Documents

Publication Publication Date Title
US10671541B2 (en) System and method for one step address translation of graphics addresses in virtualization
CN100578471C (zh) 用于在虚拟机之间共享页的方法和系统
CN100570562C (zh) 显卡、应用该显卡的虚拟机系统及显示处理方法
US20050216696A1 (en) Multi-processor system and memory accessing method
US7876328B2 (en) Managing multiple contexts in a decentralized graphics processing unit
CN102831069B (zh) 内存处理方法、内存管理设备
CN102110196A (zh) 并行运行多用户操作系统间的数据安全传输方法及系统
CN103577345A (zh) 提高由多个系统共享的存储高速缓存灵活性的方法和结构
EP1785831A3 (en) Method of inheriting information identifying virtual volume and storage system using the same
US20100031268A1 (en) Thread ordering techniques
CN103440206A (zh) 一种固态硬盘及其混合映射方法
CN103955441A (zh) 一种设备管理系统、方法及一种io扩展接口
CN102308274A (zh) 一种访问关机硬盘的方法、网卡和硬盘卡
US20100250893A1 (en) Batched virtual memory remapping for efficient garbage collection of large object areas
US20080294866A1 (en) Method And Apparatus For Memory Management
CN102103515B (zh) 一种内存管理方法、虚拟机监视器及计算机
CN104182352B (zh) 用于访问4gb以上物理内存地址空间的方法及装置
US20150195236A1 (en) Techniques for implementing a secure mailbox in resource-constrained embedded systems
US9003129B1 (en) Techniques for inter-storage-processor cache communication using tokens
CN101308474A (zh) 存储系统及存储装置
CN110730228A (zh) 数据存储方法、电子设备、系统及介质
CN101751283A (zh) 虚拟机监视器,虚拟机系统及客户操作系统状态获取方法
CN113485835B (zh) 一种多场景下共享内存的实现方法、系统、设备及介质
CN103164290A (zh) 应用内存管理方法和装置
CN114201466A (zh) 防缓存击穿方法、装置、设备及可读存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant