CN111352703B - 一种数据处理的方法及装置、电子设备、存储介质 - Google Patents
一种数据处理的方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN111352703B CN111352703B CN202010153659.6A CN202010153659A CN111352703B CN 111352703 B CN111352703 B CN 111352703B CN 202010153659 A CN202010153659 A CN 202010153659A CN 111352703 B CN111352703 B CN 111352703B
- Authority
- CN
- China
- Prior art keywords
- memory space
- memory
- candidate
- operating system
- attribute information
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例提供了一种数据处理的方法及装置、电子设备、存储介质,所述方法包括:当检测到所述模拟器提交的内存请求事件时,确定所述内存请求事件对应的目标内存属性信息;在所述第一操作系统提供的可用内存空间中,确定所述目标内存属性信息对应的目标内存空间;针对所述内存请求事件,申请在所述目标内存空间中分配内存,实现了对内存空间的多样化配置,可以根据内存请求事件分配对应类型的内存空间,避免了在为虚拟化程序提供内存空间时统一采用reserve方式,增加了内存空间权限设置的灵活性,并且,降低了内存空间分配冲突的发生概率,可以在终端设备中安全运行虚拟化程序。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据处理的方法及装置、电子设备、存储介质。
背景技术
模拟器是一种可以通过软件模拟硬件处理器功能和指令系统的程序,通过在终端设备中运行模拟器,可以使计算机或者其他多媒体平台运行在指定平台上执行的软件。
在现有技术中,Windows操作系统针对Windows进程有特定的内存空间管理算法,而Linux操作系统对Linux程序的内存空间也有另一种特定的内存空间管理算法。
当在Windows操作系统上模拟Linux或其他操作系统时,Linux系统可以被模拟为一个Windows程序在Windows操作系统上执行。两者在使用不同的内存空间管理算法的同时,却管理着同一内存空间,由此带来的Linux内存空间管理和Windows内存空间管理的冲突问题,可以通过对系统进行内存排布解决,例如,为模拟的Linux系统或其他操作系统(即虚拟化程序)提供预留地址。
然而,在Windows系统分配内存空间以供Windows进程使用时,例如进行DLL(Dynamic Link Library,动态链接库)加载或者Heap(堆)分配,由于不与虚拟化程序进行信息交互,Windows系统加载的地址是任意的,这部分地址很可能是为虚拟化程序提供的预留地址,导致预留地址和对应的内存空间被Windows系统占用,内存空间分配发生冲突的情况经常发生。
若使用Windows系统提供的reserve(预留)类型的内存空间预留操作,虽然可以保证Windows系统不会在加载DLL或者Heap使用同样的地址,但一旦对内存空间进行reserve操作后,除非发生page fault(页面错误),否则无法修改该内存空间的权限。
发明内容
鉴于上述问题,提出了以便提供克服上述问题或者至少部分地解决上述问题的一种数据处理的方法及装置、电子设备、存储介质,包括:
一种数据处理的方法,所述方法应用于模拟器,所述模拟器运行于终端设备的用户空间,所述终端设备采用第一操作系统,所述模拟器采用与所述第一操作系统异构的第二操作系统,包括:
当检测到所述模拟器提交的内存请求事件时,确定所述内存请求事件对应的目标内存属性信息;
在所述第一操作系统提供的可用内存空间中,确定所述目标内存属性信息对应的目标内存空间;
针对所述内存请求事件,申请在所述目标内存空间中分配内存。
可选地,在所述当检测到所述模拟器提交的内存请求事件时,确定所述内存请求事件对应的目标内存属性信息之前,还包括:
将所述第一操作系统提供的可用内存空间划分为多个候选内存空间;
确定多个候选内存属性信息,并建立所述多个候选内存属性信息与所述多个候选内存空间的对应关系。
可选地,所述可用内存空间包括最低地址和中间地址,所述将所述第一操作系统提供的可用内存空间划分为多个候选内存空间,包括:
从所述最低地址至所述中间地址,依次划分第一候选内存空间、第二候选内存空间,以及第三候选内存空间。
可选地,所述在所述第一操作系统提供的可用内存空间中,确定所述目标内存属性信息对应的目标内存空间,包括:
在所述目标内存属性信息为立即分配类型或较少需求内存时,确定所述目标内存属性信息对应的目标内存空间为所述第一候选内存空间和/或所述第三候选内存空间;
在所述目标内存属性信息为预留类型时,确定所述目标内存属性信息对应的目标内存空间为所述第二候选内存空间;其中,所述第二候选内存空间为进行预留操作的内存空间。
可选地,所述多个候选内存空间还包括最低候选内存空间,所述最低候选内存空间为所述最低地址与所述第一候选内存空间之间的内存空间。
可选地,所述可用内存空间包括中间地址和最高地址,所述将所述第一操作系统提供的可用内存空间划分为多个候选内存空间,包括:
从所述中间地址至所述最高地址,依次划分第四候选内存空间和第五候选内存空间。
可选地,所述在所述第一操作系统提供的可用内存空间中,确定所述目标内存属性信息对应的目标内存空间,包括:
在所述目标内存属性信息为第一内存等级时,确定所述目标内存属性信息对应的目标内存空间为所述第四候选内存空间;
在所述目标内存属性信息为第二内存等级时,确定所述目标内存属性信息对应的目标内存空间为所述第五候选内存空间;其中,所述第二内存等级高于所述第一内存等级。
可选地,所述在所述第一操作系统提供的可用内存空间中,确定所述目标内存属性信息对应的目标内存空间,包括:
在所述目标内存属性信息为文件映射类型时,确定所述目标内存属性信息对应的目标内存空间为所述第四候选内存空间和/或所述第五候选内存空间。
可选地,所述多个候选内存空间还包括最高候选内存空间,所述最高候选内存空间为所述第五候选内存空间与所述最高地址之间的内存空间。
可选地,在所述将所述第一操作系统提供的可用内存空间划分为多个候选内存空间之前,还包括:
检测所述第一操作系统提供的原始内存空间;
拓展所述原始内存空间,得到所述第一操作系统提供的可用内存空间。
可选地,所述模拟器以32位程序运行于所述第一操作系统用户空间,其对应的用户空间的所述可用内存空间的大小为4GB。
可选地,所述第一操作系统为Windows操作系统,所述第二操作系统为Linux操作系统。
一种数据处理的装置,所述装置应用于模拟器,所述模拟器运行于终端设备的用户空间,所述终端设备采用第一操作系统,所述模拟器采用与所述第一操作系统异构的第二操作系统,包括:
目标内存属性信息确定模块,用于当检测到所述模拟器提交的内存请求事件时,确定所述内存请求事件对应的目标内存属性信息;
目标内存空间确定模块,用于在所述第一操作系统提供的可用内存空间中,确定所述目标内存属性信息对应的目标内存空间;
分配内存申请模块,用于针对所述内存请求事件,申请在所述目标内存空间中分配内存。
一种电子设备,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上所述的数据处理的方法的步骤。
一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如上所述的数据处理的方法的步骤。
本申请实施例具有以下优点:
在本申请实施例中,通过当检测到模拟器提交的内存请求事件时,确定内存请求事件对应的目标内存属性信息,在第一操作系统提供的可用内存空间中,确定目标内存属性信息对应的目标内存空间,针对所述内存请求事件,申请在目标内存空间中分配内存,实现了对内存空间的多样化配置,可以根据内存请求事件分配对应类型的内存空间,避免了在为虚拟化程序提供内存空间时统一采用reserve方式,增加了内存空间权限设置的灵活性,并且,降低了内存空间分配冲突的发生概率,可以在终端设备中安全运行虚拟化程序。
附图说明
为了更清楚地说明本申请的技术方案,下面将对本申请的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一实施例提供的一种数据处理的方法的步骤流程图;
图2是本申请一实施例提供的另一种数据处理的方法的步骤流程图;
图3是本申请一实施例提供的另一种数据处理的方法的步骤流程图;
图4是本申请一实施例提供的内存空间地址划分的示意图;
图5是本申请一实施例提供的一种数据处理的装置的结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
随着科技的发展,出现了轻量级虚拟化内核,例如,Linux操作系统下的UML(UserMode Linux,用户模式Linux),通过直接使用Linux内核对物理内存进行管理,而谷歌gVisor的内存空间也是通过使用相同内核的mmap(内存映射文件方法)实现,暂未出现在Windows操作系统中的内存空间模拟Linux操作系统内存管理方法的技术。
在模拟器场景中,针对采用不同内存空间管理算法的操作系统和虚拟化程序,例如Windows操作系统的内存采用64KB作为最小申请维度,而Linux系统(即虚拟化程序)则采用4KB页管理,导致两者内存块管理相冲突。在Windows系统上模拟Linux系统时,可以为虚拟化程序提供预留地址和预留地址对应的内存空间。
但在实际应用中,在虚拟化程序不使用预留地址对应的内存空间时,Windows系统本身也会随机抢占当前未被占用的内存空间以供Windows进程使用,例如在加载DLL或者分配Heap时。其中,DLL是Windows系统自动加载的共享库,例如“ntdll.dll”,通过运行DLL,可以为Windows系统提供系统功能,当Windows系统需要调用一系统功能时,可以从随机生成的地址加载对应的DLL文件,该地址可以是预留地址。Heap是Windows进程的堆,每一个进程在生成的时候可以创建一个默认的堆,其他的DLL或者程序都可以有对应的Heap。
当模拟器需要使用预留地址对应的内存空间时,Windows系统可以提供reserve类型的内存空间预留操作(reserve),当通过reserve进行地址预留时,可以提前占用预留地址对应的内存空间,使该内存空间处于被占用、但不实际使用的状态,在降低物理内存占用率的情况下,使得虚拟化程序可以随时调用该内存空间。
而在采用reserve进行内存空间预留时,由于并不实际占用物理内存,若虚拟化程序需要使用预留的内存空间,还需进行commit操作分配对应的物理内存,以真正使用内存空间,若只进行reserve,则虚拟化程序和Windows进程都无法使用该内存空间。
通过该方法可以优化虚拟化程序的内存管理,达到不进行物理内存的实际分配。然而,这要求为虚拟化程序提供内存空间时,需要进行reserve或者commit操作,若所有内存空间都进行commit操作,则会导致物理内存使用量急剧上升,造成内存浪费;reserve操作虽然可以为虚拟化程序预留内存空间,但reserve操作只适用于非文件映射类型的内存,并且在内存空间进行reserve后,内存空间难以管理,基于此,本申请提供了一种数据处理的方法及装置、电子设备、存储介质。
参照图1,示出了本申请一实施例提供的一种数据处理的方法的步骤流程图,可以应用在模拟器,模拟器可以运行于终端设备的用户空间,终端设备可以采用第一操作系统,模拟器可以采用与第一操作系统异构的第二操作系统。
其中,第一操作系统可以是Windows操作系统,第二操作系统可以是Linux操作系统,模拟器可以通过32位程序运行于第一操作系统的用户空间。
具体的,可以包括如下步骤:
步骤101,当检测到所述模拟器提交的内存请求事件时,确定所述内存请求事件对应的目标内存属性信息;
作为一示例,内存属性信息可以标识内存空间的分配特征。
在实际应用中,内存空间可以具有对应的内存地址,在不同区间段的内存地址可以具有不同的分配特征。
当采用第二操作系统的模拟器需要使用终端设备的内存空间时,可以创建内存请求事件。则在检测到内存请求事件时,模拟器可以确定与内存请求事件对应的目标内存属性信息。
具体的,可以预先生成内存请求事件与目标内存属性信息的对应关系,模拟器在检测到内存请求事件时,可以从对应关系中查找到目标内存属性信息。或者,也可以在内存请求事件中添加目标内存属性信息,则可以直接中确定目标内存属性信息。
步骤102,在所述第一操作系统提供的可用内存空间中,确定所述目标内存属性信息对应的目标内存空间;
作为一示例,用户空间对应的可用内存空间的大小可以是4GB。
在具体实现中,当模拟器通过32位程序在第一操作系统的用户空间中运行时,用户空间对应的内存空间大小可以是2GB。当第一操作系统为64位的操作系统,若要运行32位的程序,可以采用WoW64(Windows-on-Windows 64-bit)技术使32位程序运行在64位的操作系统中。
Windows操作系统的WOW64是Windows操作系统的子系统,它为32位应用程序提供了32位的模拟,可以使32位应用程序在无需修改的情况下运行在Windows 64位的版本。
虽然通过WoW64技术可以使32位程序运行在64位的第一操作系统中,但程序可用的内存空间仍然为2GB,为了增加可用内存空间,可以在WoW64技术的基础上,进一步使用4GT技术,该技术可用于将可用内存空间从2GB拓展至4GB。
在确定目标内存属性信息后,可以在第一操作系统提供的可用内存空间中,确定与目标属性信息对应的目标内存空间。
步骤103,针对所述内存请求事件,申请在所述目标内存空间中分配内存。
在确定目标内存空间后,可以为内存请求事件申请分配目标内存空间中的内存。
具体的,在确定目标内存空间后,可以生成包含目标内存空间标识的内存分配请求,并将该请求提交至第一操作系统,在接收到内存分配请求时,第一操作系统可以将目标内存空间中的内存空间分配至模拟器。
在本申请实施例中,通过当检测到模拟器提交的内存请求事件时,确定内存请求事件对应的目标内存属性信息,在第一操作系统提供的可用内存空间中,确定目标内存属性信息对应的目标内存空间,针对所述内存请求事件,申请在目标内存空间中分配内存,实现了对内存空间的多样化配置,可以根据内存请求事件分配对应类型的内存空间,避免了在为虚拟化程序提供内存空间时统一采用reserve方式,增加了内存空间权限设置的灵活性,并且,降低了内存空间分配冲突的发生概率,可以在终端设备中安全运行虚拟化程序。
参照图2,示出了本申请一实施例提供的另一种数据处理的方法的步骤流程图,可以应用在模拟器,模拟器可以运行于终端设备的用户空间,终端设备可以采用第一操作系统,模拟器可以采用与第一操作系统异构的第二操作系统。
其中,第一操作系统可以是Windows操作系统,第二操作系统可以是Linux操作系统,模拟器可以通过32位程序运行在第一操作系统的用户空间中。
具体的,可以包括如下步骤:
步骤201,检测所述第一操作系统提供的原始内存空间;
作为一示例,原始内存空间可以是模拟器在第一操作系统运行时,初始可以调用的内存空间;第一操作系统可以具有不同的版本,针对不同的版本,第一操作系统可以具有不同的内存空间,例如,在64位的第一操作系统可以具有4GB的内存空间。
在实际应用中,模拟器可以通过32位程序和WoW64在64位的第一操作系统用户空间中运行,但第一操作系统为模拟器提供的原始内存空间可以小于第一操作系统的内存空间,例如,当第一操作系统的内存空间为4GB时,可以提供2GB内存空间。基于此,模拟器可以检测第一操作系统提供的原始内存空间。
步骤202,拓展所述原始内存空间,得到所述第一操作系统提供的可用内存空间;
在确定原始内存空间后,若原始内存空间小于第一操作系统的内存空间,可以对原始内存空间进行拓展,得到第一操作系统提供的可用内存空间。
例如,在第一操作系统的内存空间为4GB,而原始内存空间为2GB时,可以采用4GT技术,将2GB的原始内存空间拓展为4GB的可用内存空间。
步骤203,将所述第一操作系统提供的可用内存空间划分为多个候选内存空间;
在得到第一操作系统提供的可用内存空间后,模拟器可以将可用内存空间划分为多个候选内存空间。在进行划分时,可以结合第一操作系统的内存分配规律对可用内存空间进行划分。
在本申请一实施例中,可用内存空间可以包括最低地址和中间地址,步骤203可以包括:
从所述最低地址至所述中间地址,依次划分第一候选内存空间、第二候选内存空间,以及第三候选内存空间。
作为一示例,最低地址可以是0地址,中间地址可以是将可用内存空间划分为两部分的地址,例如,在4GB内存中,中间地址可以是“0x80000000”。
在得到最低地址和中间地址后,可以依次划分为第一候选内存空间、第二候选内存空间以及第三候选内存空间。
在具体实现中,可以结合第一操作系统中内存分配的规律,将可用内存空间划分为多个候选内存空间。
在Windows操作系统中,每一地址可以对应一内存空间,在为Heap分配内存空间时,可以从0地址到0x80000000地址自下而上进行内存空间分配;而在为DLL分配时,则可以从0x80000000地址到0地址自上而下随机选取地址进行内存空间分配;针对Heap和DLL的内存空间分配主要发生在进程启动时。
由于在进程启动时,0地址到0x20000000地址,以及0x60000000地址到0x80000000地址的使用非常密集,也即在进程启动时,0地址到0x20000000地址,以及0x60000000地址到0x80000000地址对应的内存空间被频繁占用,若模拟器在进程启动时使用该内存空间,将导致大量的冲突问题,则可以将0地址到0x20000000地址对应的内存空间划分为第一候选内存空间,将0x60000000地址到0x80000000地址对应的内存空间划分为第三候选内存空间,第一候选内存空间和第三候选内存空间也可以称为高成本高竞争区域。
在0x20000000地址到0x60000000地址这一区间对应的内存空间仍然被被使用,但是使用频率低于高成本高竞争区域的使用频率,可以将0x20000000地址到0x60000000地址对应的内存空间划分为第二候选内存空间。
在一示例中,多个候选内存空间还可以包括最低候选内存空间,最低候选内存空间可以是最低地址与第一候选内存空间之间的内存空间。
在实际应用中,以最低地址为起点的预设区间内,可以是第一操作系统专用的地址。基于此,在划分第一候选内存空间时,可以预设区间的边界为起点划分第一候选内存空间,最低地址与第一候选内存空间之间的内存空间,可以划分为最低候选内存空间。例如,第一候选内存空间可以是从0x10000000地址到0x20000000地址对应的空间,最低候选内存空间可以是0x10000000以下的地址到最低地址对应的空间。
步骤204,确定多个候选内存属性信息,并建立所述多个候选内存属性信息与所述多个候选内存空间的对应关系;
作为一示例,候选内存属性信息可以包括以下一项或多项:
立即分配类型、较少需求内存、预留类型。
在划分为多个候选内存空间后,可以针对每一候选内存空间确定候选内存属性信息,并建立多个候选内存属性信息与多个候选内存空间的对应关系。
步骤205,当检测到所述模拟器提交的内存请求事件时,确定所述内存请求事件对应的目标内存属性信息;
步骤206,在所述目标内存属性信息为立即分配类型或较少需求内存时,确定所述目标内存属性信息对应的目标内存空间为所述第一候选内存空间和/或所述第三候选内存空间;
在目标内存属性信息为立即分配类型或较少需求内存时,可以结合预先确定的对应关系,确定目标内存属性信息对应的目标内存空间为第一候选内存空间或者第三候选内存空间。
在实际应用中,由于第一候选内存空间和第三候选内存空间在Windows进程启动时使用频率较高,针对第一候选内存空间和第三候选内存空间,可以在需要使用内存空间时立即进行分配以提早抢占。或者,对于进程启动时内存空间需求小于预设阈值的进程,可以使用第一候选内存空间或第三候选内存空间,降低在进程启动阶段和Windows进程争抢内存空间的概率,例如,栈内存和其他统计发现的内存,在启动阶段内存空间的需求较少。基于此,第一候选内存空间和第三候选内存空间对应的候选内存属性信息可以是立即分配类型或较少需求类型。
步骤207,在所述目标内存属性信息为预留类型时,确定所述目标内存属性信息对应的目标内存空间为所述第二候选内存空间;其中,所述第二候选内存空间为进行预留操作的内存空间;
在具体实现中,第二候选内存空间的内存使用频率低于第一候选内存空间和第三候选内存空间,在进行内存空间分配时,可以对第二候选内存空间执行预留操作(reserve),在实际使用时可以进行替代分配。通过进行预留操作的内存空间,可以使用在不需要马上分配内存空间的内存请求事件中,例如共享内存。
相应地,可以针对第二候选内存空间设置对应的候选内存属性信息为预留类型。则在目标内存属性信息为预留类型时,可以确定目标内存属性信息对应的目标内存空间是第二候选内存空间。
步骤208,针对所述内存请求事件,申请在所述目标内存空间中分配内存。
在本申请实施例中,通过在目标内存属性信息为立即分配类型或较少需求内存时,确定目标内存空间为第一候选内存空间或第三候选内存空间,在目标内存属性信息为预留类型时,确定目标内存空间为第二候选内存空间,第二候选内存空间可以是进行了预留操作的内存空间,实现了对内存空间的多样化划分和配置,可以根据Windows进程对内存空间的使用特点,将内存空间划分为不同的区域,并且,可以根据内存空间的属性,为虚拟化程序分配内存空间,提高了内存空间的使用效率和分配效率。
参照图3,示出了本申请一实施例提供的另一种数据处理的方法的步骤流程图,可以应用在模拟器,模拟器可以运行于终端设备的用户空间,终端设备可以采用第一操作系统,模拟器可以采用与第一操作系统异构的第二操作系统。
具体的,可以如下步骤:
步骤301,检测所述第一操作系统提供的原始内存空间;
步骤302,拓展所述原始内存空间,得到所述第一操作系统提供的可用内存空间;
步骤303,将所述第一操作系统提供的可用内存空间划分为多个候选内存空间;
在得到第一操作系统提供的可用内存空间后,模拟器可以将可用内存空间划分为多个候选内存空间。在进行划分时,可以结合第一操作系统的内存分配规律对可用内存空间进行划分。
在本申请一实施例中,可用内存空间包括中间地址和最高地址,步骤303可以包括如下子步骤:
从所述中间地址至所述最高地址,依次划分第四候选内存空间和第五候选内存空间;
其中,最高地址可以是0xFFFFFFFF,中间地址可以是将可用内存空间划分为两部分的地址,例如,在4GB内存中,中间地址可以是“0x80000000”。
在得到可用内存空间并确定中间地址和最高地址后,可以在中间地址和最高地址之间进行划分,依次划分为第四候选内存空间和第五候选内存空间。
例如,当中间地址为0x80000000,最高地址为0xFFFFFFFF时,可以0xE0000000为边界,划分为0x80000000地址到0xE0000000地址的第四候选内存空间,和0xE0000001地址至0xFFFFFFFF地址的第五候选内存空间。
在另一示例中,多个候选内存空间中还可以包括最高候选内存空间,最高候选内存空间可以是第五候选内存空间与最高地址之间的内存空间。具体的,在划分第五候选内存空间时,可以将第四候选内存空间与最高地址之间的内存空间,划分为两个部分,与第四候选内存空间相连的空间为第五候选内存空间,第五候选内存空间与最高地址之间的内存空间为最高候选内存空间,最高候选内存空间可以是第一操作系统专用的内存空间。
步骤304,确定多个候选内存属性信息,并建立所述多个候选内存属性信息与所述多个候选内存空间的对应关系;
步骤305,当检测到所述模拟器提交的内存请求事件时,确定所述内存请求事件对应的目标内存属性信息;
步骤306,在所述目标内存属性信息为第一内存等级时,确定所述目标内存属性信息对应的目标内存空间为所述第四候选内存空间;
作为一示例,第一内存等级可以是针对被Windows进程使用的频率低于预设使用频率的内存空间,该内存空间极少被Windows进程使用,可以将其分配至模拟器,排布重要的地址空间。
在通过4GT技术对原始内存空间进行拓展后,Windows操作系统可以从最高地址自上而下分配内存空间(TOPDOWN),但在实际应用中,从中间地址至最高地址之间的内存空间,使用频率远低于中间地址至最低地址间内存空间的使用频率,例如,从0x80000000地址至0xFFFFFFFF地址的内存空间并没有充分使用。
在目标内存属性信息为第一内存等级时,可以确定目标内存属性信息对应的目标内存空间为第四候选内存空间。
步骤307,在所述目标内存属性信息为第二内存等级时,确定所述目标内存属性信息对应的目标内存空间为所述第五候选内存空间;其中,所述第二内存等级高于所述第一内存等级;
作为一示例,第二内存等级可以是针对不被Windows进程使用的内存空间,在模拟器使用该内存空间时,不需要与Windows进程竞争以抢占地址,第二内存等级可以高于第一内存等级。
在目标内存属性信息为第二内存等级时,可以确定目标内存等级信息对应的目标内存空间是第五候选内存空间。
由于Windows进程并不使用第五候选内存空间,即第五候选内存空间可以是干净的、无竞争的,在实际应用中,可以将模拟器重要程度或复杂程度最高的内存请求排布在第五候选内存空间。
步骤308,在所述目标内存属性信息为文件映射类型时,确定所述目标内存属性信息对应的目标内存空间为所述第四候选内存空间和/或所述第五候选内存空间;
在具体实现中,由于Windows中的reserve操作不适用于文件映射类的内存空间,在预留文件映射类型的内存空间时,可以提供使用频率极低的第四候选内存空间或者Windows进程不使用的第五候选内存空间。
在目标内存属性信息为文件映射类型时,可以确定目标内存属性信息对应的目标内存空间为第四候选内存空间或者第五候选内存空间。
步骤309,针对所述内存请求事件,申请在所述目标内存空间中分配内存。
在本申请实施例中,通过在目标内存属性信息为文件映射类型时,确定目标内存属性信息对应的目标内存空间为第四候选内存空间或第五候选内存空间,实现了无需采用reserve操作仍然可以为虚拟化程序提供文件映射类型的内存空间,并且,通过对Windows进程极少使用的内存空间进行分配,避免了Windows进程与虚拟化程序对内存空间抢占情况的发生,提高了内存空间的使用效率和分配效率。
为了使本领域技术人员能够更好地理解上述步骤,以下通过一个例子对本申请实施例加以示例性说明,但应当理解的是,本申请实施例并不限于此。
如图4所示,可以是内存空间划分的示意图,第一操作系统的原始内存空间的大小可以是2GB,在进行拓展后可以得到4G大小的可用内存空间。在划分时,可以依次进行如下划分:0地址与0x10000000地址间的内存空间,可以划分为Windows专用内存空间(即最低候选空间);0x10000000地址与0x20000000地址间的内存空间,可以划分为最低端内存空间(即第一候选内存空间);0x20000000地址与0x60000000地址间的内存空间,可以划分为低端自下而上内存空间(即第二候选内存空间);0x60000000地址与0x80000000地址间的内存空间,可以划分为低端自上而下内存空间(即第三候选内存空间);0x80000000地址可以是中间地址,从0x80000000地址到0xE0000000地址间的内存空间,可以划分为高端自下而上内存空间(即第四候选内存空间);从0xE0000000地址到0xFFFFFFFF地址附近一A地址间的内存空间,可以划分为高端自下而上内存空间(即第五候选内存空间);从A地址到0xFFFFFFFF地址间的内存空间,可以划分为最高端内存空间(即最高候选空间)。
在实际应用中,Windows操作系统对最低端内存空间和最高端内存空间的使用频率可以是最高的,而低端自下而上内存空间和低端自上而下内存空间,Windows操作系统虽然有使用,但是在使用过程中与虚拟化系统使用冲突概率较低,而在高端自下而上内存空间和高端自下而上内存空间,使用冲突概率可以为零。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
参照图5,示出了本申请一实施例提供的一种数据处理的装置的结构示意图,可以应用于模拟器,模拟器可以运行于终端设备的用户空间,终端设备可以采用第一操作系统,模拟器可以采用与第一操作系统异构的第二操作系统,可以包括:
目标内存属性信息确定模块501,用于当检测到所述模拟器提交的内存请求事件时,确定所述内存请求事件对应的目标内存属性信息;
目标内存空间确定模块502,用于在所述第一操作系统提供的可用内存空间中,确定所述目标内存属性信息对应的目标内存空间;
分配内存申请模块503,用于针对所述内存请求事件,申请在所述目标内存空间中分配内存。
在本申请一实施例中,所述装置还包括:
可用内存空间划分模块,用于将所述第一操作系统提供的可用内存空间划分为多个候选内存空间;
候选内存属性信息确定模块,用于确定多个候选内存属性信息,并建立所述多个候选内存属性信息与所述多个候选内存空间的对应关系。
在本申请一实施例中,所述可用内存空间包括最低地址和中间地址,所述可用内存空间划分模块包括:
第一划分子模块,用于从所述最低地址至所述中间地址,依次划分第一候选内存空间、第二候选内存空间,以及第三候选内存空间。
在本申请另一实施例中,所述目标内存空间确定模块502包括:
第一内存空间确定子模块,用于在所述目标内存属性信息为立即分配类型或较少需求内存时,确定所述目标内存属性信息对应的目标内存空间为所述第一候选内存空间和/或所述第三候选内存空间;
第二内存空间确定子模块,用于在所述目标内存属性信息为预留类型时,确定所述目标内存属性信息对应的目标内存空间为所述第二候选内存空间;其中,所述第二候选内存空间为进行预留操作的内存空间。
在本申请另一实施例中,所述多个候选内存空间还包括最低候选内存空间,所述最低候选内存空间为所述最低地址与所述第一候选内存空间之间的内存空间。
在本申请一实施例中,所述可用内存空间包括中间地址和最高地址,所述可用内存空间划分模块包括:
第二划分子模块,用于从所述中间地址至所述最高地址,依次划分第四候选内存空间和第五候选内存空间。
在本申请一实施例中,所述目标内存空间确定模块502包括:
第三内存空间确定子模块,用于在所述目标内存属性信息为第一内存等级时,确定所述目标内存属性信息对应的目标内存空间为所述第四候选内存空间;
第四内存空间确定子模块,用于在所述目标内存属性信息为第二内存等级时,确定所述目标内存属性信息对应的目标内存空间为所述第五候选内存空间;其中,所述第二内存等级高于所述第一内存等级。
在本申请一实施例中,所述目标内存空间确定模块502包括:
第五内存空间确定子模块,用于在所述目标内存属性信息为文件映射类型时,确定所述目标内存属性信息对应的目标内存空间为所述第四候选内存空间和/或所述第五候选内存空间。
在本申请一实施例中,所述多个候选内存空间还包括最高候选内存空间,所述最高候选内存空间为所述第五候选内存空间与所述最高地址之间的内存空间。
在本申请另一实施例中,所述装置还包括:
原始内存空间检测模块,用于检测所述第一操作系统提供的原始内存空间;
原始内存空间拓展模块,用于拓展所述原始内存空间,得到所述第一操作系统提供的可用内存空间。
在本申请一实施例中,所述模拟器以32位程序运行于所述第一操作系统用户空间,所述可用内存空间的大小为4GB。
在本申请一实施例中,所述第一操作系统为Windows操作系统,所述第二操作系统为Linux操作系统。
在本申请实施例中,通过当检测到模拟器提交的内存请求事件时,确定内存请求事件对应的目标内存属性信息,在第一操作系统提供的可用内存空间中,确定目标内存属性信息对应的目标内存空间,针对所述内存请求事件,申请在目标内存空间中分配内存,实现了对内存空间的多样化配置,可以根据内存请求事件分配对应类型的内存空间,避免了在为虚拟化程序提供内存空间时统一采用reserve方式,增加了内存空间权限设置的灵活性,并且,降低了内存空间分配冲突的发生概率,可以在终端设备中安全运行虚拟化程序。
本申请一实施例还提供了一种电子设备,可以包括处理器、存储器及存储在存储器上并能够在处理器上运行的计算机程序,计算机程序被处理器执行时实现如上数据处理的方法的步骤。
本申请一实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如上数据处理的方法的步骤。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对所提供的一种数据处理的方法及装置、电子设备、存储介质,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (15)
1.一种数据处理的方法,其特征在于,所述方法应用于模拟器,所述模拟器运行于终端设备的用户空间,所述终端设备采用第一操作系统,所述模拟器采用与所述第一操作系统异构的第二操作系统,包括:
当检测到所述模拟器提交的内存请求事件时,确定所述内存请求事件对应的目标内存属性信息;其中,所述目标内存属性信息包括立即分配类型、较少需求内存、预留类型中任一项;
在所述第一操作系统提供的可用内存空间中,确定所述目标内存属性信息对应的目标内存空间;
针对所述内存请求事件,申请在所述目标内存空间中分配内存。
2.根据权利要求1所述的方法,其特征在于,在所述当检测到所述模拟器提交的内存请求事件时,确定所述内存请求事件对应的目标内存属性信息之前,还包括:
将所述第一操作系统提供的可用内存空间划分为多个候选内存空间;
确定多个候选内存属性信息,并建立所述多个候选内存属性信息与所述多个候选内存空间的对应关系。
3.根据权利要求2所述的方法,其特征在于,所述可用内存空间包括最低地址和中间地址,所述将所述第一操作系统提供的可用内存空间划分为多个候选内存空间,包括:
从所述最低地址至所述中间地址,依次划分第一候选内存空间、第二候选内存空间,以及第三候选内存空间。
4.根据权利要求3所述的方法,其特征在于,所述在所述第一操作系统提供的可用内存空间中,确定所述目标内存属性信息对应的目标内存空间,包括:
在所述目标内存属性信息为立即分配类型或较少需求内存时,确定所述目标内存属性信息对应的目标内存空间为所述第一候选内存空间和/或所述第三候选内存空间;
在所述目标内存属性信息为预留类型时,确定所述目标内存属性信息对应的目标内存空间为所述第二候选内存空间;其中,所述第二候选内存空间为进行预留操作的内存空间。
5.根据权利要求4所述的方法,其特征在于,所述多个候选内存空间还包括最低候选内存空间,所述最低候选内存空间为所述最低地址与所述第一候选内存空间之间的内存空间。
6.根据权利要求2或3或4或5所述的方法,其特征在于,所述可用内存空间包括中间地址和最高地址,所述将所述第一操作系统提供的可用内存空间划分为多个候选内存空间,包括:
从所述中间地址至所述最高地址,依次划分第四候选内存空间和第五候选内存空间。
7.根据权利要求6所述的方法,其特征在于,所述在所述第一操作系统提供的可用内存空间中,确定所述目标内存属性信息对应的目标内存空间,包括:
在所述目标内存属性信息为第一内存等级时,确定所述目标内存属性信息对应的目标内存空间为所述第四候选内存空间;
在所述目标内存属性信息为第二内存等级时,确定所述目标内存属性信息对应的目标内存空间为所述第五候选内存空间;其中,所述第二内存等级高于所述第一内存等级。
8.根据权利要求6所述的方法,其特征在于,所述在所述第一操作系统提供的可用内存空间中,确定所述目标内存属性信息对应的目标内存空间,包括:
在所述目标内存属性信息为文件映射类型时,确定所述目标内存属性信息对应的目标内存空间为所述第四候选内存空间和/或所述第五候选内存空间。
9.根据权利要求7或8所述的方法,其特征在于,所述多个候选内存空间还包括最高候选内存空间,所述最高候选内存空间为所述第五候选内存空间与所述最高地址之间的内存空间。
10.根据权利要求2所述的方法,其特征在于,在所述将所述第一操作系统提供的可用内存空间划分为多个候选内存空间之前,还包括:
检测所述第一操作系统提供的原始内存空间;
拓展所述原始内存空间,得到所述第一操作系统提供的可用内存空间。
11.根据权利要求1所述的方法,其特征在于,所述模拟器以32位程序运行于所述第一操作系统用户空间,其对应的用户空间的所述可用内存空间的大小为4GB。
12.根据权利要求1所述的方法,其特征在于,所述第一操作系统为Windows操作系统,所述第二操作系统为Linux操作系统。
13.一种数据处理的装置,其特征在于,所述装置应用于模拟器,所述模拟器运行于终端设备的用户空间,所述终端设备采用第一操作系统,所述模拟器采用与所述第一操作系统异构的第二操作系统,包括:
目标内存属性信息确定模块,用于当检测到所述模拟器提交的内存请求事件时,确定所述内存请求事件对应的目标内存属性信息;其中,所述目标内存属性信息包括立即分配类型、较少需求内存、预留类型中任一项;
目标内存空间确定模块,用于在所述第一操作系统提供的可用内存空间中,确定所述目标内存属性信息对应的目标内存空间;
分配内存申请模块,用于针对所述内存请求事件,申请在所述目标内存空间中分配内存。
14.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并能够在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至12中任一项所述的数据处理的方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1至12中任一项所述的数据处理的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010153659.6A CN111352703B (zh) | 2020-03-06 | 2020-03-06 | 一种数据处理的方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010153659.6A CN111352703B (zh) | 2020-03-06 | 2020-03-06 | 一种数据处理的方法及装置、电子设备、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111352703A CN111352703A (zh) | 2020-06-30 |
CN111352703B true CN111352703B (zh) | 2023-09-08 |
Family
ID=71195976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010153659.6A Active CN111352703B (zh) | 2020-03-06 | 2020-03-06 | 一种数据处理的方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111352703B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008023220A1 (en) * | 2006-08-23 | 2008-02-28 | Chan Kam-Fu | Running operating system on dynamic virtual memory |
CN101853215A (zh) * | 2010-06-01 | 2010-10-06 | 恒生电子股份有限公司 | 一种内存分配方法及装置 |
CN104750557A (zh) * | 2013-12-27 | 2015-07-01 | 华为技术有限公司 | 一种内存管理方法和内存管理装置 |
CN109656836A (zh) * | 2018-12-24 | 2019-04-19 | 新华三技术有限公司 | 一种数据处理方法及装置 |
CN109753363A (zh) * | 2019-01-31 | 2019-05-14 | 深兰科技(上海)有限公司 | 一种嵌入式系统内存管理方法及装置 |
-
2020
- 2020-03-06 CN CN202010153659.6A patent/CN111352703B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008023220A1 (en) * | 2006-08-23 | 2008-02-28 | Chan Kam-Fu | Running operating system on dynamic virtual memory |
CN101853215A (zh) * | 2010-06-01 | 2010-10-06 | 恒生电子股份有限公司 | 一种内存分配方法及装置 |
CN104750557A (zh) * | 2013-12-27 | 2015-07-01 | 华为技术有限公司 | 一种内存管理方法和内存管理装置 |
CN109656836A (zh) * | 2018-12-24 | 2019-04-19 | 新华三技术有限公司 | 一种数据处理方法及装置 |
CN109753363A (zh) * | 2019-01-31 | 2019-05-14 | 深兰科技(上海)有限公司 | 一种嵌入式系统内存管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111352703A (zh) | 2020-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10222985B2 (en) | Autonomous dynamic optimization of platform resources | |
US20150309735A1 (en) | Techniques for reducing read i/o latency in virtual machines | |
US20150277944A1 (en) | Method and Apparatus for Allocating a Virtual Machine | |
CN110750336B (zh) | 一种OpenStack虚拟机内存热扩容方法 | |
CN109379398B (zh) | 一种数据同步方法及装置 | |
CN109960569B (zh) | 一种虚拟化处理方法及装置 | |
CN104268229A (zh) | 一种基于多进程浏览器的资源获得方法及装置 | |
KR20170031230A (ko) | 메모리 할당 방법 및 장치 | |
CN111522659B (zh) | 一种空间使用方法和装置 | |
US9292452B2 (en) | Identification of page sharing opportunities within large pages | |
JP2020194522A (ja) | データを処理するための方法、装置、デバイス及び媒体 | |
CN108108300B (zh) | 一种操作系统的资源配置检测方法和装置 | |
CN111352703B (zh) | 一种数据处理的方法及装置、电子设备、存储介质 | |
CN112181637B (zh) | 一种内存资源分配方法及装置 | |
US9330037B2 (en) | Dynamically resizing direct memory access (DMA) windows | |
CN105677481A (zh) | 一种数据处理方法、系统及电子设备 | |
CN107766122B (zh) | 一种宿主机的可用内存空间设置方法和装置 | |
CN116107753A (zh) | 一种任务节点分配方法、装置、电子设备及存储介质 | |
WO2017142525A1 (en) | Allocating a zone of a shared memory region | |
CN113986451A (zh) | 虚拟机迁移方法、装置、电子设备和存储介质 | |
CN110851181B (zh) | 数据处理方法、装置及计算设备 | |
CN113961302A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
CN111459849B (zh) | 一种内存的设置方法及装置、电子设备、存储介质 | |
CN112000471B (zh) | 内存优化方法及装置 | |
CN117171065B (zh) | 地址管理方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |