CN100395712C - 软件***的资源管理方法 - Google Patents

软件***的资源管理方法 Download PDF

Info

Publication number
CN100395712C
CN100395712C CNB2005101322041A CN200510132204A CN100395712C CN 100395712 C CN100395712 C CN 100395712C CN B2005101322041 A CNB2005101322041 A CN B2005101322041A CN 200510132204 A CN200510132204 A CN 200510132204A CN 100395712 C CN100395712 C CN 100395712C
Authority
CN
China
Prior art keywords
resource
unit
cell
software systems
array
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.)
Expired - Fee Related
Application number
CNB2005101322041A
Other languages
English (en)
Other versions
CN1866218A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CNB2005101322041A priority Critical patent/CN100395712C/zh
Publication of CN1866218A publication Critical patent/CN1866218A/zh
Application granted granted Critical
Publication of CN100395712C publication Critical patent/CN100395712C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

本发明提供了一种软件***的资源管理方法,该方法主要包括:建立描述软件***的***资源的使用情况的数据结构,该数据结构中包括:资源管理单元在***资源中的使用顺序信息和所述资源管理单元中各个单位资源是否被使用,以及各个单位资源的使用顺序信息;根据所述数据结构,采取设定的算法,对软件***的资源进行分配、回收管理。利用本发明所述方法,可以在软件***的资源管理中,提高了资源管理的时间和空间上的利用效率,可以一次分配一个或设定数量的单位资源,可以更快速地回收资源。

Description

软件***的资源管理方法
技术领域
本发明涉及计算机应用领域,尤其涉及一种软件***的资源管理方法。
背景技术
在计算机软件领域中,软件***的资源管理部分,比如NP(NetProceesser,网络处理器)内存资源管理的是否高效直接决定了整个软件***的效率。通常,软件***对于任何资源的管理过程如下:
首先,将资源映射为某种数据结构,在该数据结构中记录资源的使用情况,此过程主要涉及到资源管理的空间效率问题;
然后,采用一种有效的算法对上述数据结构进行处理,实现对资源的分配和回收,这一过程主要涉及到资源管理的时间效率问题。
因此,一种高效的资源管理既要保证空间效率又要保证时间效率。
当在一组特定资源内,每次请求进行分配的资源都是同样大小的资源时,现有技术中的资源管理方法已经非常成熟。
以下通过一实例介绍当每次请求进行分配的资源可以是不同大小的资源时,现有的一种资源管理方法。
该资源管理方法的原理为:在NP资源的管理中,以8个单位资源块作为一个资源管理单元。可以接收1个单位和8个单位的资源申请。
该方法的数据结构主要包括:
resBitmap(一个资源映射表):是一个UCHAR(无符号字符类型)数组类型的资源管理映射位图表。每一个成员中的8bit映射8个单位资源使用情况(0代表空闲可用,1代表已占用)。
octalResList(一次可以分配八个单位的可用资源列表):是一个8个单位资源全为空的资源管理单元的资源链。octalResList是一个hash(哈希)链表,为用户一次提供八个资源的分配,octalResList上的每一个节点对应resBitmap中的一个UCHAR成员,每个UCHAR成员根据其成员下标来进行索引。
singalResList(一个只能分配一个单位的可用资源列表):8个单位资源中至少一位非空的资源管理单元的资源链。singalResList也是一个hash链表,每次只能为用户提供一个资源的分配,singalResList的每个节点的对应成员与octalResList相同。
singalResCounter(已分配的单个资源记数):资源分配计数器,该计数器记录以一个单位分配的资源的总数。
因为频繁地以1个单位为分配单位进行资源的分配、回收将产生资源碎片。因此,该方法设置一个资源分配计数器,用于记录已经以一个单位分配的资源总数。当该资源总数超过NP资源总数的一定比例时,如2/3,则不再为一个单位的资源请求分配资源,以保障8个单位的资源请求能够成功获得资源分配。
该方法的处理过程主要包括:
1、当1个单位分配资源记数没有超过设定数值时,针对1个单位的资源申请分配NP的一个单位资源,而且将1个单位分配资源记数+1;
2、针对8个单位的资源申请分配NP的8个单位连续资源;
3、针对1个单位的资源释放回收NP的一个单位资源,而且将1个单位的分配资源记数-1;
4、针对8个单位的资源释放回收NP的8个单位连续资源。
在该方法中,资源的分配与回收是根据资源分配类型,对octalResList或singalResList哈希链表的节点进行查找、删除、添加操作,其中要根据哈希节点中resBitmap数组中的下标对资源位图进行位操作。
上述现有的资源分配方法的缺点为:该方法虽然运用传统的hash算法,实现简单,但是该方法的空间效率和时间效率都不高,而且该方法在资源回收过程中,需要遍历hash桶才能确定管理节点,然后进行相应资源的释放。
发明内容
本发明的目的是提供一种软件***的资源管理方法,从而可以在软件***的资源管理中,提高了资源管理的时间和空间上的利用效率,可以更快速地回收资源。
本发明的目的是通过以下技术方案实现的:
一种软件***的资源管理方法,包括:
A、建立描述软件***的***资源的使用情况的数据结构,该数据结构中包括:资源管理单元在***资源中的使用顺序信息和所述资源管理单元中各个单位资源是否被使用,以及各个单位资源的使用顺序信息;
B、根据所述数据结构,采取设定的算法,对软件***的资源进行分配、回收管理。
所述的资源管理单元包括设定数量的单位资源,每个单位资源可以单独进行分配、回收。
所述的步骤A具体包括:
A1、在软件***中同时维持针对单个单位的资源申请的资源链表和针对设定数量单位的资源申请的资源链表;
A2、建立一个资源池数组,该数组的每个成员中包括一个资源管理单元中各个单位资源是否被使用,以及各个单位资源的使用顺序信息,和所述资源管理单元在所述针对单个单位或设定数量单位的资源申请的资源链中的索引信息。
所述的步骤A1具体包括:
所述资源链表由一个个按照设定顺序排列的节点组成,每个节点和一个所述资源管理单元相对应。
所述的步骤A2具体包括:
所述资源池数组的每个成员包括设定数量的比特位数;针对一个资源管理单元中包含的每个单位资源,在相应的比特位上分别设置表示每个单位资源是否可用的标记,在其它比特位上设置一个资源管理单元在所述针对单个单位或设定数量单位的资源申请的资源链中的索引信息。
所述的步骤A还包括:
根据所述资源管理单元中包括的单位资源的数量,建立一个常量数组,该数组中成员的值代表一个资源管理单元中下一个可以分配的单位资源的位置信息。
所述的步骤A还包括:
在软件***中设置一个资源分配计数器,在该计数器中记录已经以一个单位分配的资源总数。
所述的步骤B具体包括:
B1、当接收到用户发出的一个单位的资源分配请求时,判断以一个单位分配的资源总数占***资源的总数的比例是否超过了的一个设定的比例,如果是,则拒绝该一个单位的资源分配请求;否则,执行步骤B2;
B2、在所述资源池数组的成员中,查找在所述针对单个单位的资源申请的资源链表中的索引值排列在最前的成员,根据该成员中包含的资源管理单元中每个单位资源的使用情况,对所述用户进行资源分配、回收。
所述的步骤B2具体包括:
B21、根据查找到的所述索引值排列在最前的成员中包含的资源管理单元中每个单位资源的使用情况,确定该资源管理单元中下一个可以分配给用户的单位资源,将该单位资源进行编号并分配给用户,将所述以一个单位分配的资源总数的计数加1;
B22、当用户释放了所述单位资源后,根据所述单位资源的编号信息,确定所述单位资源在资源池数组中的位置信息,在该位置上设置表示该单位资源可用的标志,将所述以一个单位分配的资源总数的计数减1。
所述的步骤B具体包括:
B3、当接收到用户发出的设定数量单位的资源分配请求时,在所述资源池数组的成员中,查找在所述针对设定数量单位的资源申请的资源链表中的索引值排列在最前的成员;
B4、将所述查找到的所述索引值排列在最前的成员中包含的资源管理单元进行编号,将该资源管理单元中包含的设定数量的单位资源一起分配给用户;
B5、当用户释放了所述资源管理单元后,根据所述资源管理单元的编号信息,确定所述资源管理单元在资源池数组中的位置信息,在该位置上设置表示该资源管理单元可用的标志。
由上述本发明提供的技术方案可以看出,本发明通过在resPool(资源池)数组中实现高位映射、低位索引,从而在软件***的资源管理中,提高了时间和空间上的利用效率。可以一次分配一个或设定数量的单位资源。在资源回收过程中实现了快速、线性随机回收资源,提高了资源回收效率。
附图说明
图1为本发明所述方法的处理流程图;
图2为本发明所述resPool数组的具体结构示意图。
具体实施方式
本发明提供了一种软件***的资源管理方法,本发明的核心为:通过一个每个成员是32bits数组,将每个资源管理单元的使用情况和资源管理单元在资源链表中的索引结合在一起,进行集中管理。
下面结合附图来详细描述本发明,本发明所述方法的处理流程如图1所示,包括如下步骤:
步骤1-1、设计软件***的资源管理的数据结构。
本发明设计的对软件***的可用资源进行映射的数据结构主要包括如下几个部分:
1、resPool数组,该数组的具体结构示意图如图2所示。该数组代表一个ULONG(无符号长整形)数组类型的资源管理池。
本发明在对软件***的资源管理(包括NP资源管理)中,仍然以8个单位资源块作为管理单元。即每个资源管理单元包括8个可用的单位资源。***可以接收1个单位的资源申请和8个单位的资源申请。
本发明在***中同时维持两个资源链表,即针对1个单位的资源申请的singalResList链表和针对8个单位的资源申请的OctalResList链表。该资源链表由一个个的节点组成,根据一定的排列顺序将各个节点串起来,组成链表。每个节点代表一个上述资源管理单元,如果一个节点代表的管理单元中的8个单位资源都被占用了,则将该节点从资源链表中移去。
本发明的resPool数组中的每个成员是32bits,每个成员代表一个资源管理单元,即代表资源链表上的一个节点,其中的高8位代表该管理单元的8个单位资源的使用情况。在实际应用中,可以用0表示空闲可用,1表示已经占用。其中的低24位代表该节点的下一个节点在上述singalResList或者OctalResList链表中的索引值。当一个管理单元的资源全部被占用时,则将代表该管理单元的resPool数组成员的低24位全部置为f。
2、一个资源分配计数器,该计数器记录已经以一个单位分配的资源总数。当该资源总数超过资源总数的一个设定比例时,如2/3,则不再为一个单位的资源请求分配资源,以保障8个单位的资源请求能够成功获得资源分配。
3、一个常量数组bitmapping,该数组大小为256,即包括第0到第255个成员,每个成员的值为一个无符号字符型,根据该数组中成员的值,可以快速查询一个管理单元中下一个可以分配的单位资源的位置信息。
步骤1-2、根据设计的数据结构采取相应的算法,对软件***的资源进行分配、回收管理。
当软件***接收到用户发出的一个单位的资源分配请求时,则首先判断上述资源分配计数器中记录的资源总数占资源总数的比例是否超过了的一个设定的比例,如果是,则拒绝该一个单位的资源分配请求;否则,进行下述处理。
在上述resPool数组中的后24位指向上述singalResList链表的所有成员中,查找后24位所代表的索引值排列在最前的成员,根据该成员的前8位的10进制值,查找上述bitmapping常量数组,确定需要分配出去的单位资源的位置。
比如,当查找到的索引值排列在最前的resPool数组成员代表的资源管理单元的前3个单位资源被占用时,则该resPool数组成员的前8位为00000111,10进制值为7,在bitmapping数组中对应第7个成员,该第7个成员的值为4,该值代表在resPool数组成员的前8位中第一个可分配的最小单位资源的编号为4。即从左到右第一个0的位数为4。
***于是将该resPool数组成员代表的管理单元的第4个单位资源分配给用户,将该resPool数组成员的第4位置为1,将所述资源分配计数器的记数加1。然后,将该单位资源进行编号,以便在bitmapping数组中进行索引。在实际应用中,可以将该单位资源编号为:resPool数组成员的后24位*8+4。将该资源编号随同第4个单位资源一起分配给用户。
当用户释放了该单位资源时,则用户向***发送该单位资源的资源编号,***将该资源编号除以8,得到的除数即是该单位资源所在的resPool数组成员的后24位,因此,根据该除数可以确定该单位资源所在的resPool数组成员。得到的余数即是该单位资源在确定的resPool数组成员的前8位中的位置,在上述例子中,该余数为4,于是将确定的resPool数组成员的第4位置为0。将所述资源分配计数器的记数减1。即将该单位资源进行了回收。
当软件***接收到用户发出的8个单位的资源分配请求时,则在上述resPool数组中的后24位指向上述OctalResList链表的所有成员中,查找后24位所代表的索引值排列在最前的成员,将查找到的resPool数组成员所代表的管理单元的8个单位资源一起分配给用户。
将该resPool数组成员的前8位全部置为1,并将该管理单元进行编号,以便在bitmapping数组中进行索引。在实际应用中,可以将该管理单元编号为:resPool数组成员的后24位*8+0。将该资源编号随同资源管理单元一起分配给用户。
当用户释放了该资源管理单元时,则用户向***发送该管理单元的资源编号,***将该资源编号除以8,得到的除数即是该管理单元所在的resPool数组成员的后24位,因此,根据该除数可以确定该管理单元所在的resPool数组成员。得到的余数为0,表示用户分配的是一个完整的资源管理单元,于是将确定的resPool数组成员的前8位全部置为0。即将该资源管理单元进行了回收。
综上所述,本发明通过在resPool数组中进行高位映射和低位索引,在提高了资源管理的空间和时间的利用率的同时,实现了快速、线性随机回收资源。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (10)

1.一种软件***的资源管理方法,其特征在于,包括:
A、建立描述软件***的***资源的使用情况的数据结构,该数据结构中包括:资源管理单元在***资源中的使用顺序信息和所述资源管理单元中各个单位资源是否被使用,以及各个单位资源的使用顺序信息;
B、根据所述数据结构,采取设定的算法,对软件***的资源进行分配、回收管理。
2.根据权利要求1所述的软件***的资源管理方法,其特征在于,所述的资源管理单元包括设定数量的单位资源,每个单位资源可以单独进行分配、回收。
3.根据权利要求2所述的软件***的资源管理方法,其特征在于,所述的步骤A具体包括:
A1、在软件***中同时维持针对单个单位的资源申请的资源链表和针对设定数量单位的资源申请的资源链表;
A2、建立一个资源池数组,该数组的每个成员中包括一个资源管理单元中各个单位资源是否被使用,以及各个单位资源的使用顺序信息,和所述资源管理单元在所述针对单个单位或设定数量单位的资源申请的资源链中的索引信息。
4.根据权利要求3所述的软件***的资源管理方法,其特征在于,所述的步骤A1具体包括:
所述资源链表由一个个按照设定顺序排列的节点组成,每个节点和一个所述资源管理单元相对应。
5.根据权利要去4所述的软件***的资源管理方法,其特征在于,所述的步骤A2具体包括:
所述资源池数组的每个成员包括设定数量的比特位数;针对一个资源管理单元中包含的每个单位资源,在相应的比特位上分别设置表示每个单位资源是否可用的标记,在其它比特位上设置一个资源管理单元在所述针对单个单位或设定数量单位的资源申请的资源链中的索引信息。
6.根据权利要求2所述的软件***的资源管理方法,其特征在于,所述的步骤A还包括:
根据所述资源管理单元中包括的单位资源的数量,建立一个常量数组,该数组中成员的值代表一个资源管理单元中下一个可以分配的单位资源的位置信息。
7.根据权利要求2所述的软件***的资源管理方法,其特征在于,所述的步骤A还包括:
在软件***中设置一个资源分配计数器,在该计数器中记录已经以一个单位分配的资源总数。
8.根据权利要求3、4或5所述的软件***的资源管理方法,其特征在于,所述的步骤B具体包括:
B1、当接收到用户发出的一个单位的资源分配请求时,判断以一个单位分配的资源总数占***资源的总数的比例是否超过了一个设定的比例,如果是,则拒绝该一个单位的资源分配请求;否则,执行步骤B2;
B2、在所述资源池数组的成员中,查找在所述针对单个单位的资源申请的资源链表中的索引值排列在最前的成员,根据该成员中包含的资源管理单元中每个单位资源的使用情况,对所述用户进行资源分配、回收。
9.根据权利要求8所述的软件***的资源管理方法,其特征在于,所述的步骤B2具体包括:
B21、根据查找到的所述索引值排列在最前的成员中包含的资源管理单元中每个单位资源的使用情况,确定该资源管理单元中下一个可以分配给用户的单位资源,将该单位资源进行编号并分配给用户,将所述以一个单位分配的资源总数的计数加1;
B22、当用户释放了所述单位资源后,根据所述单位资源的编号信息,确定所述单位资源在资源池数组中的位置信息,在该位置上设置表示该单位资源可用的标志,将所述以一个单位分配的资源总数的计数减1。
10.根据权利要求3、4或5所述的软件***的资源管理方法,其特征在于,所述的步骤B具体包括:
B3、当接收到用户发出的设定数量单位的资源分配请求时,在所述资源池数组的成员中,查找在所述针对设定数量单位的资源申请的资源链表中的索引值排列在最前的成员;
B4、将所述查找到的所述索引值排列在最前的成员中包含的资源管理单元进行编号,将该资源管理单元中包含的设定数量的单位资源一起分配给用户;
B5、当用户释放了所述资源管理单元后,根据所述资源管理单元的编号信息,确定所述资源管理单元在资源池数组中的位置信息,在该位置上设置表示该资源管理单元可用的标志。
CNB2005101322041A 2005-12-22 2005-12-22 软件***的资源管理方法 Expired - Fee Related CN100395712C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005101322041A CN100395712C (zh) 2005-12-22 2005-12-22 软件***的资源管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005101322041A CN100395712C (zh) 2005-12-22 2005-12-22 软件***的资源管理方法

Publications (2)

Publication Number Publication Date
CN1866218A CN1866218A (zh) 2006-11-22
CN100395712C true CN100395712C (zh) 2008-06-18

Family

ID=37425243

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005101322041A Expired - Fee Related CN100395712C (zh) 2005-12-22 2005-12-22 软件***的资源管理方法

Country Status (1)

Country Link
CN (1) CN100395712C (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101232689B (zh) * 2007-01-22 2011-11-30 中兴通讯股份有限公司 资源的帐单的管理方法和装置
CN100557571C (zh) * 2007-12-13 2009-11-04 中国科学院计算技术研究所 一种资源分配方法和***
CN101729218B (zh) * 2008-10-15 2013-02-27 上海华为技术有限公司 一种资源指配与去指配的方法及装置
CN107562743B (zh) * 2016-06-30 2022-12-02 中兴通讯股份有限公司 数据存储方法和装置、数据查找请求的处理方法和装置
CN106897339A (zh) * 2016-07-05 2017-06-27 阿里巴巴集团控股有限公司 资源分配方法、装置、服务器及***
CN112650450B (zh) * 2020-12-25 2024-02-27 深圳大普微电子科技有限公司 固态硬盘缓存管理方法、固态硬盘缓存控制器及固态硬盘
CN115220910B (zh) * 2022-06-17 2024-04-19 中科驭数(北京)科技有限公司 一种资源调度方法、装置及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6381682B2 (en) * 1998-06-10 2002-04-30 Compaq Information Technologies Group, L.P. Method and apparatus for dynamically sharing memory in a multiprocessor system
CN1427342A (zh) * 2001-12-21 2003-07-02 上海贝尔有限公司 一种内存管理***及其分配方法
CN1556475A (zh) * 2004-01-02 2004-12-22 中兴通讯股份有限公司 嵌入式实时操作***中内存释放的方法
CN1567249A (zh) * 2003-06-16 2005-01-19 华为技术有限公司 计算机***的内存管理方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6381682B2 (en) * 1998-06-10 2002-04-30 Compaq Information Technologies Group, L.P. Method and apparatus for dynamically sharing memory in a multiprocessor system
CN1427342A (zh) * 2001-12-21 2003-07-02 上海贝尔有限公司 一种内存管理***及其分配方法
CN1567249A (zh) * 2003-06-16 2005-01-19 华为技术有限公司 计算机***的内存管理方法
CN1556475A (zh) * 2004-01-02 2004-12-22 中兴通讯股份有限公司 嵌入式实时操作***中内存释放的方法

Also Published As

Publication number Publication date
CN1866218A (zh) 2006-11-22

Similar Documents

Publication Publication Date Title
CN100395712C (zh) 软件***的资源管理方法
CN102541529B (zh) 一种查询页面生成装置和方法
EP2069979B1 (en) Dynamic fragment mapping
US9659048B2 (en) Key-Value data storage system
CN106294190B (zh) 一种存储空间管理方法及装置
CN102985909B (zh) 为良好分格的对象提供高扩展性网络存储的方法和设备
CN102609446B (zh) 一种分布式Bloom过滤***及其使用方法
CN1950802A (zh) 存储器分配
CN104794123A (zh) 一种为半结构化数据构建NoSQL数据库索引的方法及装置
WO2005101248A1 (en) Binary search tree with hooked duplicates for memory allocation
CN114138193B (zh) 一种分区命名空间固态硬盘的数据写入方法、装置及设备
CN101763415B (zh) 一种数据库的b树索引的生成方法及装置
CN104731799A (zh) 内存数据库管理装置
CN105389367A (zh) 基于Mongo数据库的电网图形多时态多级分布式存储方法
CN109241056B (zh) 一种用于分布式***的数字id生成***
CN104573112A (zh) Oltp集群数据库中页面查询方法及数据处理节点
CN104346458A (zh) 数据存储方法和存储设备
CN102867049A (zh) 一种基于单词查找树实现的汉语拼音快速分词方法
CN105577806A (zh) 一种分布式缓存方法及***
CN104951462A (zh) 用于管理数据库的方法和***
CN104933051A (zh) 文件存储空间回收方法和装置
CN101610197A (zh) 一种缓冲区管理方法及其***
CN109241057B (zh) 一种用于分布式***的数字id生成方法
CN105469173A (zh) 一种静态内存进行优化管理的方法
CN112380004B (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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080618

Termination date: 20151222

EXPY Termination of patent right or utility model