内存块类型处理方法、装置、电子设备及可读存储介质与流程

文档序号:11323147阅读:159来源:国知局
内存块类型处理方法、装置、电子设备及可读存储介质与流程

本发明涉及计算机存储技术领域,具体而言,涉及一种内存块类型处理方法、装置、电子设备及可读存储介质。



背景技术:

当内存碎片化问题发生后,需要花费一定时间与资源进行内存重整,让可使用的内存相邻,以合成为一整块连续的存储空间,这在一定程度上会影响用户的正常操作,造成能源消耗。

为解决上述问题,在现有技术中,一般将内存分成三种类型内存分区:不可移动、可移动及可回收。它们之间可以互相使用,在满足特定条件时,某一类型分区允许使用其他分区的内存块并将转换该内存块的类型。当不可移动内存分区所包含的内存不足时,可以询问可回收和/或可移动内存分区是否存在足够的内存块,如果存在,直接使用该内存块并将此内存块的类型转换为不可移动,以此缓和内存碎片化问题。

采用上述方案的问题在于,若不可移动分区借用可回收和/或可移动内存分区的内存块并把内存块类型转换为不可移动后,即使之后该内存块被释放归还,内存块类型还是会保持转换后的不可移动类型。由此,可能导致可回收和/或可移动内存分区被占用太多,在进行内存重整时,影响内存重整机制的工作效率,缓和内存碎片化效果不佳。



技术实现要素:

为了克服现有技术中的上述不足,本发明提供一种内存块类型处理方法、装置、电子设备及可读存储介质,其能够保证可回收和/或可移动类型内存分区的区域范围,在内存重整时,能够有效地重整出足够的连续内存供给用户使用,缓和内存碎片化问题。

本发明的第一目的在于提供一种内存块类型处理方法,应用于电子设备,所述电子设备的内存包括多个可移动类型的内存块、多个可回收类型的内存块及多个不可移动类型的内存块,所述方法包括:

对所述电子设备中各个内存块的状态进行监测;

当监测到有内存块被释放时,对被释放内存块的类型进行检测;

在检测到的被释放内存块的原始类型与当前类型不一致时,对被释放内存块的内存释放容量进行检测;

根据检测到的内存释放容量对所述被释放内存块的当前类型进行调整。

本发明的第二目的在于提供一种内存块类型处理装置,应用于电子设备,所述电子设备的内存包括多个可移动类型的内存块、多个可回收类型的内存块及多个不可移动类型的内存块,所述装置包括:

监测模块,用于对所述电子设备中各个内存块的状态进行监测;

类型检测模块,用于当监测到有内存块被释放时,对被释放内存块的类型进行检测;

容量检测模块,用于在检测到的被释放内存块的原始类型与当前类型不一致时,对被释放内存块的内存释放容量进行检测;

调整模块,用于根据检测到的内存释放容量对所述被释放内存块的当前类型进行调整。

本发明的第三目的在于提供一种电子设备,所述电子设备包括:

存储器;

处理器;

以及

内存块类型处理装置,所述内存块类型处理装置安装于所述存储器中并包括一个或多个由所述处理器执行的软件功能模块,所述装置包括:

监测模块,用于对所述电子设备中各个内存块的状态进行监测;

类型检测模块,用于当监测到有内存块被释放时,对被释放内存块的类型进行检测;

容量检测模块,用于在检测到的被释放内存块的原始类型与当前类型不一致时,对被释放内存块的内存释放容量进行检测;

调整模块,用于根据检测到的内存释放容量对所述被释放内存块的当前类型进行调整。

本发明的第四目的在于提供一种可读存储介质,所述可读存储介质包括计算机程序,所述计算机程序运行时控制所述可读存储介质所在电子设备执行上述内存块类型处理方法。

相对于现有技术而言,本发明具有以下有益效果:

本发明提供一种内存块类型处理方法、装置、电子设备及可读存储介质。所述方法应用于电子设备,所述电子设备的内存包括多个可移动类型的内存块、多个可回收类型的内存块及多个不可移动类型的内存块。所述方法包括:对所述电子设备中各个内存块的状态进行监测。当监测到有内存块被释放时,对被释放内存块的类型进行检测。在检测到的被释放内存块的原始类型与当前类型不一致时,对被释放内存块的内存释放容量进行检测。根据检测到的内存释放容量对所述被释放内存块的当前类型进行调整。由此,能够保证可回收和/或可移动类型内存分区的区域范围,在内存重整时,能够有效地重整出足够的连续内存供给用户使用,缓和内存碎片化问题。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1是本发明较佳实施例提供的电子设备的方框示意图。

图2是本发明较佳实施例提供的内存块类型处理方法的步骤流程图之一。

图3为本发明较佳实施例提供的图2中步骤s120的子步骤的流程示意图。

图4为本发明较佳实施例提供的图2中步骤s130的子步骤的流程示意图。

图5是本发明较佳实施例提供的内存块类型处理方法的步骤流程图之二。

图6是本发明较佳实施例提供的内存块类型处理装置的功能模块框图。

图标:100-电子设备;110-存储器;120-处理器;130-网络模块;200-内存块类型处理装置;210-监测模块;220-类型检测模块;230-容量检测模块;240-调整模块。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供了一种电子设备100。请参照图1,图1是本发明较佳实施例提供的电子设备100的方框示意图。所述电子设备100包括存储器110、处理器120、网络模块130及内存块类型处理装置200。

所述存储器110、处理器120及网络模块130相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通信总线或信号线实现电性连接。存储器110中存储有内存块类型处理装置200,所述内存块类型处理装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器110中的软件功能模块,所述处理器120通过运行存储在存储器110内的软件程序以及模块,从而执行各种功能应用以及数据处理。

其中,所述存储器110可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器110用于存储程序,所述处理器120在接收到执行指令后,执行所述程序。进一步地,上述存储器110内的软件程序以及模块还可包括操作系统,其可包括各种用于管理系统任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动,并可与各种硬件或软件组件相互通信,从而提供其他软件组件的运行环境。

所述处理器120可以是一种集成电路芯片,具有信号的处理能力。上述的处理器120可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等。还可以是数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

网络模块130用于通过网络建立电子设备100与外部设备之间的通信连接,实现网络信号及数据的收发操作。

可以理解,图1所述的结构仅为示意,电子设备100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。

本发明实施例提供一种可读存储介质,所述可读存储介质包括计算机程序。所述计算机程序运行时控制所述可读存储介质所在电子设备100执行下面的内存块类型处理方法。

当不可移动的内存分区包含的连续内存不足时,可以询问可回收和/或可移动的内存分区是否存在足够的内存块,如果存在,可以借用可回收和/或可移动的内存块,并将借用的该内存块的类型转换为不可移动。如果不存在,则发生内存碎片化问题,所述电子设备100进行内存重整,以提供足够的连续内存空间,满足用户存储需求。

在本实施例中,内存碎片化(memoryfragmentation)是指:当用户需要一块n大小且连续的内存块时,虽然可使用内存总量大于n,但是每一个内存块的容量大小都小于用户需求的n,导致用户需求无法被满足。内存重整(memorycompaction)是指:在操作系统中,虚拟地址跟实际内存是需要映射转换的,一般存在两种映射,一种是可移动的映射,虚拟地址跟实际内存地址能够动态调整(例如:用户使用到的内存是相同的虚拟地址,但可以动态映射到不同的实际内存地址)。另一种是不可移动的映射,虚拟地址跟实际内存地址之间的映射不能改动。

在本实施例中,内存重整是针对可移动内存块进行内存重整移动工作,若能保持可移动类型内存分区的区域越大,则表明内存重整程度越好,可有效缓和内存碎片化问题。

第一实施例

为了实现上述效果,本发明实施例提供一种内存块类型处理方法。所述方法能够保证可回收和/或可移动类型内存分区的区域范围,在内存重整时,能够更有效地重整出足够的连续内存供给用户使用,能够延长下一次内存碎片化问题发生的时间。

请参照图2,图2是本发明较佳实施例提供的内存块类型处理方法的步骤流程图之一。所述内存块类型处理方法,应用于电子设备100,所述电子设备100的内存包括多个可移动类型的内存块、多个可回收类型的内存块及多个不可移动类型的内存块。下面对内存块类型处理方法的具体流程进行详细阐述。

步骤s110,对所述电子设备100中各个内存块的状态进行监测。

在本实施例中,所述电子设备100会监测内存中各个内存块的状态,以便于当监测到内存块被占用或释放时,对该内存块进行相关检测。

步骤s120,当监测到有内存块被释放时,对被释放内存块的类型进行检测。

在本实施例中,所述被释放内存块的类型是指内存常用的划分类型,可以包括,但不限于:不可移动(unmoveable)、可移动(movable)及可回收(reclaimable)。不可移动类型的内存分区是指:内存分区在内存中的位置必须固定,无法移动到其他地方,核心内核的分配大部分都属于这一类。可回收的内存分区是指:内存分区在内存中不能直接移动,但可以回收。可移动的内存分区是指:内存分区在内存中可以随意移动。

请参阅图3,图3为本发明较佳实施例提供的图2中步骤s120的子步骤的流程示意图,所述步骤s120可以包括子步骤s121、子步骤s122及子步骤s123。

子步骤s121,对所述被释放内存块的当前类型及所述被释放内存块的原始类型进行检测。

在本实施例中,所述当前类型是指当前检测到的所述被释放内存块的类型,所述当前类型可能是所述被释放内存块经过借用转换后得到的类型。所述原始类型是指在进行初始内存配置时,所述被释放内存块原始所属的类型,即所述被释放内存块未经借用转换的类型。

子步骤s122,当检测到所述被释放内存块的当前类型为不可移动类型,所述被释放内存块的原始类型为可移动类型或可回收类型时,判定所述被释放内存块的原始类型与当前类型不一致。

在本实施例中,所述被释放内存块的原始类型与当前类型不一致表明所述被释放内存块已被借用,所述被释放内存块的类型已被转换。

子步骤s123,当检测到所述被释放内存块的当前类型与所述被释放内存块的原始类型相符时,判定所述被释放内存块的原始类型与当前类型一致。

在本实施例中,所述被释放内存块的原始类型与当前类型一致表明所述被释放内存块未被借用,类型未被转换。

请再次参照图2,所述方法还包括:步骤s130。

步骤s130,在检测到的被释放内存块的原始类型与当前类型不一致时,对被释放内存块的内存释放容量进行检测。

请参阅图4,图4为本发明较佳实施例提供的图2中步骤s130的子步骤的流程示意图,所述步骤s130可以包括子步骤s131及子步骤s132。

子步骤s131,检测所述被释放内存块的内存释放容量。

在本实施例中,当被释放内存块的原始类型与当前类型不一致时,所述电子设备100会检测所述被释放内存块的内存释放容量。

子步骤s132,将检测到的所述内存释放容量与一预设容量阈值进行比对。

在本实施例中,所述电子设备100会将检测到的所述内存释放容量与一预设容量阈值进行比对,以判断是否满足类型切换条件,在满足类型切换条件时,即检测到的内存释放容量不小于所述预设容量阈值时,执行步骤s140。其中,所述预设容量阈值可根据实际需求进行设定,例如,可将所述预设容量阈值设定为64kb。

步骤s140,根据检测到的内存释放容量对所述被释放内存块的当前类型进行调整。

在本实施例中,当检测到的内存释放容量不小于所述预设容量阈值时,将所述被释放内存块的当前类型调整为所述被释放内存块的原始类型。

在本实施例中,将所述被释放内存块的当前类型调整为所述被释放内存块的原始类型的方式包括:

在所述被释放内存块的原始类型为可回收类型时,将所述被释放内存块的当前类型调整为可回收。

在所述被释放内存块的原始类型为可移动类型时,将所述被释放内存块的当前类型调整为可移动。

由此,可对内存块的类型进行调整,确保可移动类型内存分区不会被越用越少,保证可回收和/或可移动类型内存分区的区域范围,在内存重整时,能够有效地重整出足够的连续内存供给用户使用,延长下一次内存碎片化问题发生的时间。

请参照图5,图5是本发明较佳实施例提供的内存块类型处理方法的步骤流程图之二。所述方法还包括:步骤s150。

步骤s150,在检测到的被释放内存块的原始类型与当前类型一致时,不对所述被释放内存块的当前类型进行调整。

在本实施例中,所述被释放内存块的原始类型与当前类型一致表明所述被释放内存块未被借用,类型未被转换,所述电子设备100可直接释放所述内存块占用的资源,无需对所述被释放内存块的当前类型进行调整。

第二实施例

请参照图6,图6是本发明较佳实施例提供的内存块类型处理装置200的功能模块框图。所述内存块类型处理装置200应用于电子设备100。所述装置包括:监测模块210、类型检测模块220、容量检测模块230及调整模块240。

监测模块210,用于对所述电子设备100中各个内存块的状态进行监测。

在本实施例中,所述监测模块210用于执行图2中的步骤s110,关于所述监测模块210的具体描述可以参照步骤s110的描述。

类型检测模块220,用于当监测到有内存块被释放时,对被释放内存块的类型进行检测。

在本实施例中,所述类型检测模块220用于执行图2中的步骤s120,关于所述类型检测模块220的具体描述可以参照步骤s120的描述。

容量检测模块230,用于在检测到的被释放内存块的原始类型与当前类型不一致时,对被释放内存块的内存释放容量进行检测。

在本实施例中,所述容量检测模块230用于执行图2中的步骤s130,关于所述容量检测模块230的具体描述可以参照步骤s130的描述。

调整模块240,用于根据检测到的内存释放容量对所述被释放内存块的当前类型进行调整。

在本实施例中,所述调整模块240用于执行图2中的步骤s140,关于所述调整模块240的具体描述可以参照步骤s140的描述。

综上所述,本发明提供一种内存块类型处理方法、装置、电子设备及可读存储介质。所述方法应用于电子设备,所述电子设备的内存包括多个可移动类型的内存块、多个可回收类型的内存块及多个不可移动类型的内存块。所述方法包括:对所述电子设备中各个内存块的状态进行监测。当监测到有内存块被释放时,对被释放内存块的类型进行检测。在检测到的被释放内存块的原始类型与当前类型不一致时,对被释放内存块的内存释放容量进行检测。根据检测到的内存释放容量对所述被释放内存块的当前类型进行调整。

由此,能够保证可回收和/或可移动类型内存分区的区域范围,在内存重整时,能够有效地重整出足够的连续内存供给用户使用,缓和内存碎片化问题。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1