CN108021448B - 一种内核空间的优化方法及装置 - Google Patents
一种内核空间的优化方法及装置 Download PDFInfo
- Publication number
- CN108021448B CN108021448B CN201711244111.7A CN201711244111A CN108021448B CN 108021448 B CN108021448 B CN 108021448B CN 201711244111 A CN201711244111 A CN 201711244111A CN 108021448 B CN108021448 B CN 108021448B
- Authority
- CN
- China
- Prior art keywords
- kernel
- linked list
- resource
- message
- kernel space
- 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
Images
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/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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本申请涉及计算机技术领域,尤其涉及一种内核空间的优化方法及装置,用以解决现有技术中存在的内核堆容易产生内存碎片,导致内核空间的利用率较低的问题;本申请实施例提供的内核空间的优化方法包括:接收创建内核对象的指令,指令中携带有待创建内核对象的类别信息,且每一类别的内核对象专用一个资源空闲链表,资源空闲链表中存放有该类别的、已被删除的内核对象所释放的地址资源;根据待创建内核对象的类别信息,确定待创建内核对象对应的资源空闲链表;从待创建内核对象对应的资源空闲链表中获取创建内核对象所需的地址资源,利用该地址资源在对应的内核空间中创建内核对象,这样,内核堆中不会再产生内存碎片,因此能够提高内核堆的利用率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种内核空间的优化方法及装置。
背景技术
目前,内核堆创建以后,会在内核堆中创建多种类型的内核对象,如任务对象、管道对象、定时器对象、消息队列对象、进程对象等,其中,同一类型的内核对象具有相同的数据结构。
实际应用中,内核堆中的内核对象会随着系统的运行而不断地发生变化,为了更好地利用内核空间,需要对内核堆进行管理,下面以嵌入式操作系统为例,对现有技术中的内核堆管理方法进行介绍。
如图1a~图1c所示,为系统运行过程中内核堆的变化示意图,其中,深灰色区域代表已分配空间,浅灰色区域代表空闲空间。假设初始时在内核堆中依次创建了任务对象1、消息队列对象2、管道对象3和任务对象4,如图1a所示,系统运行一段时间后,删除了任务对象1和管道对象3,则内存堆中会出现空闲空间,如图1b所示,并且,这些空闲空间的地址资源可以被内核堆的资源管理链表记录下来,之后若需要在内核堆中创建信号量对象5,则可以根据信号量对象5所需的内核空间对资源管理链表进行遍历,假设遍历资源管理链表之后,将信号量对象5存放在地址1和地址2之间的空闲空间中,假设系统运行一段时间之后,需要再创建定时器对象6,根据定时器对象6所需的内核空间,遍历资源管理链表可知,地址2和地址3之间的空闲空间太小,不够存放定时器对象6,而需要将定时器对象6存放在地址4和地址5之间的空闲空间中,此时,又余下了地址5和地址6之间小块空闲空间,如图1c所示。
现有技术中,对所有类型的内核对象都使用内核堆的资源管理链表进行管理,由于不同类型的内核对象具有不同的数据结构、所占用的内核空间大小不同,而在创建内核对象时,一旦根据待创建内核对象的大小,从资源管理链表中遍历到足够大的空闲空间,就直接分配给待创建的内核对象,而不会对资源管理链表中的所有空闲空间进行综合考虑,因此,系统运行一段时间后,内核堆中不可避免地会产生内存碎片,这些内存碎片由于空间太小而无法再次得到利用,白白浪费了内核堆的内存资源,导致内核空间的利用率比较低。
并且,非嵌入式操作系统存在着同样的问题,在此不再赘述。
可见,现有技术中存在着内核堆容易产生内存碎片,导致内核空间的利用率比较低的问题。
发明内容
本申请实施例提供一种内核空间的优化方法及装置,用以解决现有技术中存在着内核堆容易产生内存碎片,导致内核空间的利用率比较低的问题。
本申请实施例提供的一种内核空间的优化方法,包括:
接收创建内核对象的指令,所述指令中携带有待创建内核对象的类别信息,且每一类别的内核对象专用一个资源空闲链表,所述资源空闲链表中存放有该类别的、已被删除的内核对象所释放的地址资源;
根据所述待创建内核对象的类别信息,确定所述待创建内核对象对应的资源空闲链表;
从所述待创建内核对象对应的资源空闲链表中获取创建内核对象所需的地址资源;
利用所述地址资源在对应的内核空间中进行内核对象的创建。
本申请实施例提供的一种内核空间的优化装置,包括:
接收模块,用于接收创建内核对象的指令,所述指令中携带有待创建内核对象的类别信息,且每一类别的内核对象专用一个资源空闲链表,所述资源空闲链表中存放有该类别的、已被删除的内核对象所释放的地址资源;
确定模块,用于根据所述待创建内核对象的类别信息,确定所述待创建内核对象对应的资源空闲链表;
获取模块,用于从所述待创建内核对象对应的资源空闲链表中获取创建内核对象所需的地址资源;
创建模块,用于利用所述地址资源在对应的内核空间中进行内核对象的创建。
本申请实施例提供的一种电子设备,包括至少一个处理单元、以及至少一个存储单元,其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述电子设备执行上述内核空间的优化方法的步骤。
本申请实施例提供的一种计算机可读存储介质,包括程序代码,当所述程序代码在电子设备上运行时,使所述电子设备执行上述内核空间的优化方法的步骤。
本申请实施例中,接收创建内核对象的指令,指令中携带有待创建内核对象的类别信息,且每一类别的内核对象专用一个资源空闲链表,资源空闲链表中存放有该类别的、已被删除的内核对象所释放的地址资源,之后根据待创建内核对象的类别信息,确定待创建内核对象对应的资源空闲链表,进而从待创建内核对象对应的资源空闲链表中获取创建内核对象所需的地址资源,并利用该地址资源在对应的内核空间中进行内核对象的创建,这里,为每一类别的内核对象建立专用的一个资源空闲链表,专用来管理这些内核对象在被从内核堆中删除后所释放的地址资源,当再创建同类别的内核对象时,就可以从对应的资源空闲链表中获取所需的地址资源,因为这地址资源原先就用于存储同类别的内核对象,而同类别的内核对象具有相同的数据结构,即,这些地址资源可全部用于创建新的内核对象,这样,内核堆中不会再产生内存碎片,因此能够大大提高内核堆的利用率,达到对内核空间进行优化的目的。
附图说明
图1a~图1c为现有技术中系统运行过程中内核堆的变化示意图;
图2为本申请实施例提供的内核空间的优化方法流程图;
图3为本申请实施例提供的消息队列对象示意图;
图4为本申请实施例提供的系统运行过程中内核堆的变化示意图;
图5为本申请实施例提供的内核空间的优化装置结构图;
图6为本申请实施例提供的用于实现内核空间的优化方法的电子设备的硬件结构示意图。
具体实施方式
本申请实施例中,接收创建内核对象的指令,指令中携带有待创建内核对象的类别信息,且每一类别的内核对象专用一个资源空闲链表,资源空闲链表中存放有该类别的、已被删除的内核对象所释放的地址资源,之后根据待创建内核对象的类别信息,确定待创建内核对象对应的资源空闲链表,进而从待创建内核对象对应的资源空闲链表中获取创建内核对象所需的地址资源,并利用该地址资源在对应的内核空间中进行内核对象的创建,这里,为每一类别的内核对象建立专用的一个资源空闲链表,专用来管理这些内核对象在被从内核堆中删除后所释放的地址资源,当再创建同类别的内核对象时,就可以从对应的资源空闲链表中获取所需的地址资源,因为这地址资源原先就用于存储同类别的内核对象,而同类别的内核对象具有相同的数据结构,即,这些地址资源可全部用于创建新的内核对象,这样,内核堆中不会再产生内存碎片,因此能够大大提高内核堆的利用率,达到对内核空间进行优化的目的。
需要说明的是,一般在创建内核堆时,开发人员会根据实际需求确定内核堆的大小,并在开辟相应大小的内核堆空间以后,在内核堆中创建一定数量的内核对象,此时并不会产生内存碎片,只有当内核堆中的内核对象被删除、释放了一定量的地址资源以后,再创建内核对象时才需要考虑对空闲地址资源的合理利用问题,因此,本申请实施例尤其适用于内核堆中已删除了内核对象、并且需要再创建内核对象的场景。
下面结合说明书附图对本申请实施例作进一步详细描述。
实施例一
如图2所示,为本申请实施例提供的内核空间的优化方法流程图,包括以下步骤:
S201:接收创建内核对象的指令,指令中携带有待创建内核对象的类别信息,且每一类别的内核对象专用一个资源空闲链表,资源空闲链表中存放有该类别的、已被删除的内核对象所释放的地址资源。
其中,待创建内核对象的类别可以为任务对象、信号量对象、定时器对象、消息队列对象、管道对象等。
S202:根据待创建内核对象的类别信息,确定待创建内核对象对应的资源空闲链表。
在具体实施过程中,为每一类内核对象,都建立有专用的资源空闲链表,每个资源空闲链表专用来管理对应类别的内核对象在被从内核堆中删除后所释放的地址资源,因此,可以为内核对象类别和资源空闲链表建立对应关系,以便在创建内核对象时,快速地找到对应的资源空闲链表,提高内核对象的创建速度。
S203:从待创建内核对象对应的资源空闲链表中获取创建内核对象所需的地址资源。
具体地,可以先判断待创建内核对象对应的资源空闲链表是否不为空,当确定资源空闲链表不为空时,再从资源空闲链表中获取创建内核对象所需的地址资源;当确定资源空闲链表为空时,说明当前内核堆中没有零散的空闲空间,则可以从内存堆的尾部空闲空间中为待创建内核对象分配地址资源。
在具体实施过程中,当待创建内核对象的类别不为消息队列对象时,在从对应的资源空闲链表中获取创建内核对象所需的地址资源时,可以根据待创建内核对象的数据结构,确定创建内核对象所需的内核空间,之后根据确定的内核空间,直接从资源空闲链表中获取相应大小的地址资源。这是因为,对任务对象、信号量对象、定时器对象中的任一类内核对象而言,该类内核对象只有一种数据结构,即该类内核对象在内存堆中占用相同大小的内核空间,这样,在创建同类内核对象时,可以保证从对应的资源空闲链表中获取的地址资源刚好够用于存放新创建的内核对象,进而保证内核堆中不再存在零散的内存碎片。
以对任务对象为例,假设根据任务对象的数据结构,确定任务对象所占用的内核空间为200KB,则任务对象a被删除后释放的内核空间为200KB。当再次创建任务对象b时,由于任务对象b与任务对象a具有相同的数据结构,占用同样大小的内核空间,所以任务对象a释放的内核空间刚好够用于创建任务对象b,此时,可以直接从任务对象对应的资源空闲链表中获取到200KB的地址资源,保证任务对象a被删除后释放的内核空间得到充分利用,杜绝内存碎片的产生。
此外,对消息队列对象而言,由于消息队列对象具有三种数据结构,分别为消息队列对象管理数据结构、消息管理数据结构和消息结构,则一个消息队列对象可以看成由3部分数据组成,其中,第一部分数据为按照消息队列对象管理数据结构组织的消息队列管理数据,第二部分数据为按照消息管理数据结构组织的消息管理数据,第三部分数据为按照消息结构组织的消息数据,如图3所示,为消息队列对象示意图。
其中,对不同的消息队列对象而言,第一部分数据所占用的内核空间是相同的,并且通常在内核空间中占用的为一块连续的内核空间,而第二部分数据和第三部分数据则根据消息队列对象中的消息条数和每条消息的大小而有所不同,并且可以占用多块不连续的内核空间。
为了充分利用内核堆空间,针对消息队列对象的三种数据结构,可以建立3种空闲资源链表,分别为消息队列对象资源空闲链表、消息管理资源空闲链表和消息缓存资源空闲链表,其中,消息队列对象资源空闲链表用于管理消息队列管理数据占用的地址资源;消息管理资源空闲链表用于管理消息管理数据所占用的地址资源;消息缓存资源空闲链表用于消息数据所占用的地址资源。
在具体实施过程中,当待创建内核对象的类别为消息队列对象时,从对应的资源空闲链表中获取创建内核对象所需的地址资源时,包括:根据消息队列对象管理数据结构占用的内核空间,从消息队列对象资源空闲链表中获取相应大小的地址资源;根据消息队列对象中的数据条数和消息管理数据结构占用的内核空间,确定创建消息管理数据所需的内核空间S1;根据确定的内核空间S1,从消息管理资源空闲链表中获取地址资源;根据消息队列对象中的数据条数和消息结构占用的内核空间,确定创建所有消息所需的内核空间S2;根据确定的内核空间S2,从消息缓存资源空闲链表中获取地址资源。
假设,消息队列对象中,消息队列对象管理数据结构占用的内核空间为100KB,消息管理数据结构占用的内核空间为6KB,消息结构占用的内核空间为64KB,进一步假设从内核堆中删除的为消息队列对象a,消息队列对象a中原先存储有10条消息,且每条消息的大小为100KB(使用2个消息结构进行创建,因此占用128KB),则消息队列对象a被从内核堆中删除后,可以将消息队列对象a中消息队列管理数据所占用的100KB的地址资源,存储到消息队列对象资源空闲链表中;将消息队列对象a中消息管理数据所占用的60KB(10×6)的地址资源,存储到消息管理资源空闲链表中;将消息队列对象a中消息数据所占用的1280KB(10×128)的地址资源,存储到消息缓存资源空闲链表中。
进一步地,假设需要创建消息队列对象b,消息队列对象b中可以存储5条消息,每条消息的大小为64KB,因为不同消息队列对象中消息对象管理数据占用的内核大小相同,所以,可以先从消息队列对象资源空闲链表中直接获取100KB的地址资源,用于创建消息队列对象b的消息队列管理数据,之后再从消息管理资源空闲链表中获取30KB(5×6)的地址资源,用于创建消息队列对象b的消息管理数据,因为每条消息队列对象中的消息管理数据结构相同、占用同样大小的内核空间,所以消息管理资源空闲链表中余下的30KB的地址资源,还可以用于创建其它的消息队列对象的消息管理数据,而不会存在空间太小无法利用的情况,最后从消息缓存资源空闲链表获取320KB(5×64)的地址资源,用于创建消息队列对象b的消息数据,同样地,消息缓存资源空闲链表中余下的960KB的地址资源,还可以用于创建其它的消息队列对象的消息数据,而不会存在空间太小无法利用的情况,如图4所示,为本申请实施例提供的系统运行过程中内核堆的变化示意图。
此外,针对消息队列对象,在创建消息管理数据和消息数据时,都还存在着从对应的空闲资源列表中获取的地质资源不足的情况,此时,可以在根据确定的消息管理数据所需的内核空间S1,从消息管理资源空闲链表中获取所需的地址资源之后,计算获取的地址资源对应的内核空间S3,若确定内核空间S3小于内核空间S1,则从内核堆尾部的空闲空间中获取其余的内核空间S1-S3。
并且,在根据创建所有消息所需的内核空间S2,从消息缓存资源空闲链表中获取地址资源之后,计算获取的地址资源对应的内核空间S4;若确定内核空间S4小于内核空间S2,则从内核堆尾部的空闲空间中获取其余的内核空间S2-S4。
沿用上例,比如需要的消息队列对象b中可以存储20条消息,每条消息的大小为128KB,则可以先从消息队列对象资源空闲链表中直接获取100KB的地址资源,用于创建消息队列对象b的消息队列管理数据;计算消息队列对象b中消息管理数据所需的内核空间20×6=120KB,此时,从消息管理资源空闲链表中可以获取60KB的地址资源,还需要从内核堆尾部的空闲空间中获取60KB的地址资源,利用这两部分地址资源创建消息队列对象b的消息管理数据;计算消息队列对象b中消息管理数据所需的内核空间128×20=2560KB,此时,从消息缓存资源空闲链表中可以获取1280KB的地址资源,还需要从内核堆尾部的空闲空间中获取1280KB的地址资源,利用这两部分资源创建消息队列对象b的消息数据。
S204:利用获取的地址资源在对应的内核空间中进行内核对象的创建。
本申请实施例中,接收创建内核对象的指令,指令中携带有待创建内核对象的类别信息,且每一类别的内核对象专用一个资源空闲链表,资源空闲链表中存放有该类别的、已被删除的内核对象所释放的地址资源,之后根据待创建内核对象的类别信息,确定待创建内核对象对应的资源空闲链表,进而从待创建内核对象对应的资源空闲链表中获取创建内核对象所需的地址资源,并利用该地址资源在对应的内核空间中进行内核对象的创建,这里,为每一类别的内核对象建立专用的一个资源空闲链表,专用来管理这些内核对象在被从内核堆中删除后所释放的地址资源,当再创建同类别的内核对象时,就可以从对应的资源空闲链表中获取所需的地址资源,因为这地址资源原先就用于存储同类别的内核对象,而同类别的内核对象具有相同的数据结构,即,这些地址资源可全部用于创建新的内核对象,这样,内核堆中不会再产生内存碎片,因此能够大大提高内核堆的利用率,达到对内核空间进行优化的目的。
实施例二
基于同一发明构思,本申请实施例中还提供了一种与内核空间的优化方法对应的内核空间的优化装置,由于该装置解决问题的原理与本申请实施例内核空间的优化方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图5所示,为本申请实施例提供的内核空间的优化装置结构图,包括:
接收模块501,用于接收创建内核对象的指令,所述指令中携带有待创建内核对象的类别信息,且每一类别的内核对象专用一个资源空闲链表,所述资源空闲链表中存放有该类别的、已被删除的内核对象所释放的地址资源;
确定模块502,用于根据所述待创建内核对象的类别信息,确定所述待创建内核对象对应的资源空闲链表;
获取模块503,用于从所述待创建内核对象对应的资源空闲链表中获取创建内核对象所需的地址资源;
创建模块504,用于利用所述地址资源在对应的内核空间中进行内核对象的创建。
可选地,所述获取模块503具体用于:
判断所述资源空闲链表是否不为空,
确定所述资源空闲链表不为空时,从所述资源空闲链表中获取创建内核对象所需的地址资源。
可选地,当所述待创建内核对象的类别不为消息队列对象时,所述获取模块503具体用于:
根据所述待创建内核对象的数据结构,确定创建内核对象所需的内核空间;
根据确定的内核空间,从所述资源空闲链表中获取相应大小的地址资源。
可选地,当所述待创建内核对象的类别为消息队列对象时,所述获取模块503具体用于:
根据消息队列对象管理数据结构占用的内核空间,从消息队列对象资源空闲链表中获取相应大小的地址资源;
根据消息队列对象中的数据条数和消息管理数据结构占用的内核空间,确定创建消息管理数据所需的内核空间S1;根据确定的内核空间S1,从消息管理资源空闲链表中获取地址资源;
根据消息队列对象中的数据条数和消息结构占用的内核空间,确定创建所有消息所需的内核空间S2;根据确定的内核空间S2,从消息缓存资源空闲链表中获取地址资源。
可选地,所述获取模块503还用于:
根据确定的内核空间S1,从消息管理资源空闲链表中获取所需的地址资源之后,计算所述地址资源对应的内核空间S3;若确定内核空间S3小于内核空间S1,则从内核堆尾部的空闲空间中获取其余的内核空间S1-S3;
根据确定的内核空间S2,从消息缓存资源空闲链表中获取地址资源之后,计算所述地址资源对应的内核空间S4;若确定内核空间S4小于内核空间S2,则从内核堆尾部的空闲空间中获取其余的内核空间S2-S4。
实施例三
如图6所示,为本申请实施例提供的用于实现内核空间管理的电子设备的硬件结构示意图,包括至少一个处理单元601、以及至少一个存储单元602,其中,存储单元存储有程序代码,当程序代码被所述处理单元执行时,使得电子设备执行上述内核空间的优化方法的步骤。
实施例四
本申请实施例提供的一种计算机可读存储介质,包括程序代码,当所述程序代码在电子设备上运行时,使电子设备执行上述内核空间的优化方法的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (8)
1.一种内核空间的优化方法,其特征在于,包括:
接收创建内核对象的指令,所述指令中携带有待创建内核对象的类别信息,且每一类别的内核对象专用一个资源空闲链表,所述资源空闲链表中存放有该类别的、已被删除的内核对象所释放的地址资源;
根据所述待创建内核对象的类别信息,确定所述待创建内核对象对应的资源空闲链表;
从所述待创建内核对象对应的资源空闲链表中获取创建内核对象所需的地址资源;
利用所述地址资源在对应的内核空间中进行内核对象的创建;
其中,消息队列对象包括消息队列管理数据、消息管理数据和消息数据,所述消息管理数据和所述消息数据占用的内核空间根据所述消息队列对象中的消息条数和每条消息的大小确定,不同消息队列对象中的消息队列管理数据占用相同大小的内核空间;除消息队列对象之外的任一类内核对象占用相同大小的内核空间;以及
当所述待创建内核对象的类别为消息队列对象时,从所述资源空闲链表中获取创建内核对象所需的地址资源,包括:
根据消息队列对象管理数据结构占用的内核空间,从消息队列对象资源空闲链表中获取相应大小的地址资源;
根据消息队列对象中的数据条数和消息管理数据结构占用的内核空间,确定创建消息管理数据所需的内核空间S1;根据确定的内核空间S1,从消息管理资源空闲链表中获取地址资源;
根据消息队列对象中的数据条数和消息结构占用的内核空间,确定创建所有消息所需的内核空间S2;根据确定的内核空间S2,从消息缓存资源空闲链表中获取地址资源;
当所述待创建内核对象的类别不为消息队列对象时,从所述资源空闲链表中获取创建内核对象所需的地址资源,包括:
根据所述待创建内核对象的数据结构,确定创建内核对象所需的内核空间;
根据确定的内核空间,从所述资源空闲链表中获取相应大小的地址资源。
2.如权利要求1所述的方法,其特征在于,从所述待创建内核对象对应的资源空闲链表中获取创建内核对象所需的地址资源,包括:
判断所述资源空闲链表是否不为空;
确定所述资源空闲链表不为空时,从所述资源空闲链表中获取创建内核对象所需的地址资源。
3.如权利要求1所述的方法,其特征在于,
根据确定的内核空间S1,从消息管理资源空闲链表中获取地址资源之后,还包括:
计算所述地址资源对应的内核空间S3;
若确定内核空间S3小于内核空间S1,则从内核堆尾部的空闲空间中获取其余的内核空间S1-S3;以及,
根据确定的内核空间S2,从消息缓存资源空闲链表中获取地址资源之后,还包括:
计算所述地址资源对应的内核空间S4;
若确定内核空间S4小于内核空间S2,则从内核堆尾部的空闲空间中获取其余的内核空间S2-S4。
4.一种内核空间的优化装置,其特征在于,包括:
接收模块,用于接收创建内核对象的指令,所述指令中携带有待创建内核对象的类别信息,且每一类别的内核对象专用一个资源空闲链表,所述资源空闲链表中存放有该类别的、已被删除的内核对象所释放的地址资源;
确定模块,用于根据所述待创建内核对象的类别信息,确定所述待创建内核对象对应的资源空闲链表;
获取模块,用于从所述待创建内核对象对应的资源空闲链表中获取创建内核对象所需的地址资源;
创建模块,用于利用所述地址资源在对应的内核空间中进行内核对象的创建;
其中,消息队列对象包括消息队列管理数据、消息管理数据和消息数据,所述消息管理数据和所述消息数据占用的内核空间根据所述消息队列对象中的消息条数和每条消息的大小确定,不同消息队列对象中的消息队列管理数据占用相同大小的内核空间;除消息队列对象之外的任一类内核对象占用相同大小的内核空间;以及
当所述待创建内核对象的类别为消息队列对象时,所述获取模块具体用于:
根据消息队列对象管理数据结构占用的内核空间,从消息队列对象资源空闲链表中获取相应大小的地址资源;
根据消息队列对象中的数据条数和消息管理数据结构占用的内核空间,确定创建消息管理数据所需的内核空间S1;根据确定的内核空间S1,从消息管理资源空闲链表中获取地址资源;
根据消息队列对象中的数据条数和消息结构占用的内核空间,确定创建所有消息所需的内核空间S2;根据确定的内核空间S2,从消息缓存资源空闲链表中获取地址资源;
当所述待创建内核对象的类别不为消息队列对象时,所述获取模块具体用于:
根据所述待创建内核对象的数据结构,确定创建内核对象所需的内核空间;
根据确定的内核空间,从所述资源空闲链表中获取相应大小的地址资源。
5.如权利要求4所述的装置,其特征在于,所述获取模块具体用于:
判断所述资源空闲链表是否不为空;
确定所述资源空闲链表不为空时,从所述资源空闲链表中获取创建内核对象所需的地址资源。
6.如权利要求4所述的装置,其特征在于,所述获取模块还用于:
根据确定的内核空间S1,从消息管理资源空闲链表中获取所需的地址资源之后,计算所述地址资源对应的内核空间S3;若确定内核空间S3小于内核空间S1,则从内核堆尾部的空闲空间中获取其余的内核空间S1-S3;
根据确定的内核空间S2,从消息缓存资源空闲链表中获取地址资源之后,计算所述地址资源对应的内核空间S4;若确定内核空间S4小于内核空间S2,则从内核堆尾部的空闲空间中获取其余的内核空间S2-S4。
7.一种电子设备,其特征在于,包括至少一个处理单元、以及至少一个存储单元,其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述电子设备执行权利要求1~3任一所述方法的步骤。
8.一种计算机可读存储介质,其特征在于,包括程序代码,当所述程序代码在电子设备上运行时,使所述电子设备执行权利要求1~3任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711244111.7A CN108021448B (zh) | 2017-11-30 | 2017-11-30 | 一种内核空间的优化方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711244111.7A CN108021448B (zh) | 2017-11-30 | 2017-11-30 | 一种内核空间的优化方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108021448A CN108021448A (zh) | 2018-05-11 |
CN108021448B true CN108021448B (zh) | 2021-06-15 |
Family
ID=62077807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711244111.7A Active CN108021448B (zh) | 2017-11-30 | 2017-11-30 | 一种内核空间的优化方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108021448B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312522B (zh) * | 2021-06-30 | 2022-01-11 | 科东(广州)软件科技有限公司 | 内核对象的管理方法、装置、存储介质及电子设备 |
CN116139498B (zh) * | 2023-04-18 | 2023-07-04 | 深圳市益玩网络科技有限公司 | 游戏场景下基于内存管理的对象创建方法及相关产品 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101266575A (zh) * | 2007-03-13 | 2008-09-17 | 中兴通讯股份有限公司 | 一种提高内存池利用率的方法 |
CN101271428A (zh) * | 2008-02-25 | 2008-09-24 | 北京理工大学 | 一种对象数据存储管理的装置和方法 |
CN101950273A (zh) * | 2010-09-26 | 2011-01-19 | 中国人民解放军海军工程大学 | 一种dsp数据区动态管理方法 |
CN102955817A (zh) * | 2011-08-30 | 2013-03-06 | 腾讯数码(深圳)有限公司 | 一种基于共享内存的对象管理与恢复方法及系统 |
CN104598208A (zh) * | 2015-02-11 | 2015-05-06 | 四川天邑康和通信股份有限公司 | 一种基于消息队列的单片机操作系统实现方法 |
CN105404592A (zh) * | 2005-06-27 | 2016-03-16 | 起元科技有限公司 | 管理消息队列 |
-
2017
- 2017-11-30 CN CN201711244111.7A patent/CN108021448B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105404592A (zh) * | 2005-06-27 | 2016-03-16 | 起元科技有限公司 | 管理消息队列 |
CN101266575A (zh) * | 2007-03-13 | 2008-09-17 | 中兴通讯股份有限公司 | 一种提高内存池利用率的方法 |
CN101271428A (zh) * | 2008-02-25 | 2008-09-24 | 北京理工大学 | 一种对象数据存储管理的装置和方法 |
CN101950273A (zh) * | 2010-09-26 | 2011-01-19 | 中国人民解放军海军工程大学 | 一种dsp数据区动态管理方法 |
CN102955817A (zh) * | 2011-08-30 | 2013-03-06 | 腾讯数码(深圳)有限公司 | 一种基于共享内存的对象管理与恢复方法及系统 |
CN104598208A (zh) * | 2015-02-11 | 2015-05-06 | 四川天邑康和通信股份有限公司 | 一种基于消息队列的单片机操作系统实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108021448A (zh) | 2018-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10572285B2 (en) | Method and apparatus for elastically scaling virtual machine cluster | |
CN109213600B (zh) | 一种基于ai云的gpu资源调度方法和装置 | |
CN108055343B (zh) | 用于机房的数据同步方法及装置 | |
CN109543455B (zh) | 一种区块链的数据归档方法及装置 | |
US9135071B2 (en) | Selecting processing techniques for a data flow task | |
CN102103497B (zh) | 有限状态机执行装置和方法、在应用中的建立和使用方法 | |
CN105843819B (zh) | 一种数据导出方法及装置 | |
US20150170316A1 (en) | Subgraph-based distributed graph processing | |
CN107908471B (zh) | 一种任务并行处理方法和处理系统 | |
CN109510852B (zh) | 灰度发布的方法及装置 | |
US11726970B2 (en) | Incremental transfer of database segments | |
CN110704438B (zh) | 一种区块链中布隆过滤器的生成方法及装置 | |
CN108021448B (zh) | 一种内核空间的优化方法及装置 | |
CN103927263A (zh) | 垃圾回收方法和装置 | |
CN105653209A (zh) | 一种对象存储数据传输方法及装置 | |
CN112596762A (zh) | 一种滚动升级方法及装置 | |
CN104794155A (zh) | 数据加载的方法、装置及系统 | |
CN106201561A (zh) | 分布式缓存集群的升级方法与设备 | |
CN112948330A (zh) | 数据合并方法、装置、电子设备、存储介质及程序产品 | |
JP6974510B2 (ja) | データを処理するための方法、装置、デバイス及び媒体 | |
CN110134646B (zh) | 知识平台服务数据存储与集成方法及系统 | |
CN106528876B (zh) | 分布式系统的信息处理方法及分布式信息处理系统 | |
CN109684051A (zh) | 一种混合式大数据任务异步提交的方法和系统 | |
KR20220113710A (ko) | Gpu 패킷 집계 시스템 | |
EP3200083A1 (en) | Resource scheduling method and related apparatus |
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 | ||
EE01 | Entry into force of recordation of patent licensing contract | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20180511 Assignee: Kedong (Guangzhou) Software Technology Co., Ltd Assignor: Beijing Dongtu Technology Co., Ltd.|Beijing keyin Jingcheng Technology Co., Ltd Contract record no.: X2020980000255 Denomination of invention: Optimization method and device of kernel space License type: Exclusive License Record date: 20200218 |
|
GR01 | Patent grant | ||
GR01 | Patent grant |