CN1320463C - 能够有效使用存储器的存储池管理方法和系统 - Google Patents

能够有效使用存储器的存储池管理方法和系统 Download PDF

Info

Publication number
CN1320463C
CN1320463C CNB021598428A CN02159842A CN1320463C CN 1320463 C CN1320463 C CN 1320463C CN B021598428 A CNB021598428 A CN B021598428A CN 02159842 A CN02159842 A CN 02159842A CN 1320463 C CN1320463 C CN 1320463C
Authority
CN
China
Prior art keywords
storage pool
storage
request
memory block
sub
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
CNB021598428A
Other languages
English (en)
Other versions
CN1432922A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of CN1432922A publication Critical patent/CN1432922A/zh
Application granted granted Critical
Publication of CN1320463C publication Critical patent/CN1320463C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management

Abstract

搜索顺序控制部分具有用于具有子存储池的存储池的搜索顺序表。搜索顺序表具有条目,其中输入了所请求的存储区容量范围和相应的搜索顺序。搜索顺序控制部分响应占用请求接收部分的请求,通过使用搜索顺序表找到要搜索的子存储池,用作可分配存储区。搜索顺序控制部分通知占用请求接收部分所找到的子存储池的子存储池ID。占用请求接收部分使占用部分尝试从子存储池ID的子存储池得到具有所请求的存储区容量的存储区。占用请求接收部分重复上述操作,直到占用部分得到存储区或搜索顺序控制部分通知搜索结束。

Description

能够有效使用存储器的存储池管理方法和系统
技术领域
本发明涉及用于计算机等的存储池管理方法和系统。
背景技术
众所周知各种各样的装置或系统由软件程序控制。在这种装置中,当程序执行时使用各种数据。虽然所有的数据都存储在(主)存储器中有利于程序的高速执行,但是大容量的存储器非常昂贵。因此,存储器的容量通常小于存储所有的数据所需要的容量。因此,存储器根据来自程序的占用(getting)请求存储所需的数据部分。
当存储器没有可分配的存储区用来接收来自程序的占用请求时,暂停程序的执行直到在存储器中出现可分配的存储区。因此,必须尽可能有效的使用存储器,以避免这种情况。
采用相关的存储池管理系统来有效地利用存储器,并称作可变长度存储池管理系统。存储池管理系统允许来自程序的占用请求随意请求存储器容量。
当接收到占用请求时,存储池管理系统搜索存储器等于或大于所请求的存储器容量的可分配存储区的可用或未占用的存储区。当作存储器中找到可分配存储区时,存储池管理系统占用或调取部分或全部可分配的存储区作为具有所请求的存储器容量的调取存储区。所调取的存储区分配给或被程序占用。存储池管理系统接收到另一个占用请求时重复上述操作。
另一方面,存储池管理系统响应来自程序的释放请求释放被程序占用的占用存储区,将占用区变为可重新使用存储区。可重新使用存储区与可用存储区相同,并且相邻的可用存储区联合起来形成连续的可用存储区。
当可重新使用存储区与另一个占用存储区相邻时,它只能用于所请求的存储器容量小于或等于自身容量的请求。因此,存在一种情况,虽然可用存储区的总和大于新的占用请求所请求的容量,但是存储池管理系统不能接收新的占用请求。即,存储池管理系统存在可用存储区碎片的问题。
另一种相关的存储池管理系统称作固定长度存储池管理系统。存储池管理系统将存储器的存储区分为多个存储池。每个存储池包括多个容量的子存储池。存储池的子存储池的容量彼此不同。
存储池管理系统允许来自程序的特定的请求存储器容量。特定的请求存储器容量必须等于存储池的任何一个的子存储池的容量。换句话说,存储池管理系统以子存储池为单位调取和释放存储区。
虽然存储池管理系统没有可用存储区的碎片问题,但是存在下面所述的另外的问题。
当相应的存储池没有可用的子存储池时,存储池管理系统不能接收特定的请求存储容量等于某个子存储池的容量的新的占用请求。即使其他存储池有足够的可用存储区也会有这样的情况。即,存储池管理系统具有尽管有足够的可用存储区但不能接受占用请求的问题。换句话说,存储池管理系统具有由存储区分区引起的分区缺点。
发明概述
因此,本发明的目的是提供一种能够有效利用存储器的存储池管理系统。
本发明的其它目的会随着说明书的进展而阐述清楚。
根据本发明的第一方面,存储池管理方法用于从具有多个子存储池的存储池中得到存储区。该方法包括以下步骤:接收来自任务程序的指定请求存储区容量的存储区占用请求;以子存储池为单位按关于请求存储区容量的预定的搜索顺序,从存储池中搜索等于或大于所请求存储区容量的可分配存储区;当在任何一个子存储池中发现可分配存储区时,从可分配存储区得到所请求存储区容量的存储区。
根据本发明的第二方面,用在计算机中的计算机程序产品从具有多个子存储池的存储池中得到存储区。计算机程序产品包括载有计算机可读的指令和存储计算机可读指令的记录媒体。该指令用于让计算机可以根据以下步骤操作:接收来自任务程序的指定请求存储区容量的存储区占用请求;以子存储池为单位按关于请求存储区容量的预定的搜索顺序,从存储池中搜索等于或大于所请求存储区容量的可分配存储区;当在任何一个子存储池中发现可分配存储区时,从可分配存储区得到所请求存储区容量的存储区。
根据本发明的第三方面,存储池管理系统用于从具有多个子存储池的存储池中得到存储区。存储池管理系统包括用来接收来自任务程序的指定请求存储区容量的存储区占用请求的占用请求接收部分。搜索顺序控制部分连接到接收部分,以根据关于请求存储区容量的预定的搜索顺序通知子存储池ID,响应占用请求接收部分的请求。占用部分连接到占用请求接收部分,以尝试根据从搜索顺序控制部分通过占用请求接收部分发来的相应的子存储池ID从子存储池中占用所请求存储区容量的存储区。
附图说明
图1是根据本发明的第一实施例的存储池管理系统的方框图;
图2示出了在由图1的存储池管理系统管理的存储器中存储池的结构;
图3是在图1的存储池管理系统中所用的搜索顺序表,搜索可分配存储区;
图4是用来说明在图1的存储池管理系统中所提供的存储器占用请求接收部分的工作的流程图;
图5是用来说明在图1的存储池管理系统中所提供的存储器释放请求接收部分的工作的流程图;
图6是用来说明在图1的存储池管理系统中所提供的搜索顺序控制部分的工作的流程图;
图7是用来说明图1的存储池管理系统中所提供的队列控制部分的工作的流程图,图示情况为队列控制部分从存储器请求接收部分接收到存储池ID和请求存储区容量;
图8示出了由图1的存储池管理系统所用的任务控制模块(TCB)的结构;
图9是用来图示说明队列控制部分的工作流程图,队列控制部分从存储器释放请求接收部分接收到存储池ID、子存储池ID和最大可用存储区容量;
图10是用来说明在图1的存储池管理系统中所提供的存储器占用部分的工作的流程图;
图11是用来说明在图1的存储池管理系统中所提供的存储器释放部分的工作的流程图;
图12是根据本发明的第二实施例的存储池管理系统的方框图;
图13示出了在由图12的存储池管理系统管理的存储器中存储组的结构;
图14是在图12的存储池管理系统中所用的搜索顺序表,搜索可分配存储区;
图15是用来说明在图12的存储池管理系统中所提供的存储器占用请求接收部分的工作的流程图;
图16是用来说明在图12的存储池管理系统中所提供的存储器释放请求接收部分的工作的流程图;
图17是用来说明在图12的存储池管理系统中所提供的搜索顺序控制部分的工作的流程图。
优选实施例的说明
参考图1到11,说明根据本发明的第一实施例的存储池管理系统。
简言之,存储池管理系统预先将各存储池分为多个子存储池,并根据请求的存储区容量以不同的方搜索顺序搜索可分配存储区。在该结构中,倾向于使用各子存储池满足特定范围的请求存储区容量。因此,难以产生子存储池碎片。此外,因为各子存储池不仅用于特定范围的请求存储区容量,所以存储池分为子存储池不会产生分区缺点。
在图1中,存储池管理系统连接到存储器100,并包括搜索顺序控制部分101、存储器占用请求接收部分102、存储器释放请求接收部分103、存储器占用部分104、队列控制部分105和存储器释放部分106。
搜索顺序控制部分101控制在存储器100中的存储池的子存储池中搜索可用存储区的顺序。搜索顺序控制部分101响应从存储器占用请求接收部分102来的请求将搜索顺序通知存储器占用请求接收部分102。换句话说,搜索顺序控制部分101将要被搜索的子存储池通知存储器占用请求接收部分102。
存储器占用请求接收部分102用来接收来自任务程序的储器占用请求。当接收到储器占用请求时,存储器占用请求接收部分102询问搜索顺序控制部分101的搜索顺序。然后,存储器占用请求接收部分102使存储器占用部分104尝试从由搜索顺序控制部分101通知的搜索顺序所决定的第一子存储池中占用或调取具有所请求的存储区容量的可用存储区。在第一子存储池中没有可用存储区的情况下,存储器占用请求接收部分102使存储器占用部分104尝试从剩余的子存储池中按照搜索顺序一个接一个的搜索,以调取具有所请求的存储区容量的可用存储区。
存储器占用部分104用来从存储器占用请求接收部分102指定的特定子存储池中占用或调取具有所请求的存储区容量的可用存储区,作为调取的存储区。当在特定子存储池中没有可用存储区时,存储器占用部分104通知存储器占用请求接收部分102搜索失败。
存储器释放请求接收部分103用来接收来自任务程序的储器释放请求。存储器释放请求接收部分103使存储器释放部分106释放调取的存储区。同时,存储器释放请求接收部分103将对调取的存储区的释放通知队列控制部分105。
存储器释放部分106用来释放调取的存储区。
当存储器调取请求没有接受时,队列控制部分105用来使任务程序进入等待或睡眠状态,直到在存储池中出现可用存储区。队列控制部分105将调取存储区的释放通知等待可用存储区出现的任务程序。换句话说,当可用存储区出现时,队列控制部分105唤醒任务程序。
接下来,说明存储器100的存储区的结构和搜索顺序控制部分101保存的搜索顺序表。
图2示出了存储器100的存储区的结构。如图2所示,存储区提供了多个存储池(A、B、…)。各存储池分为多个子存储池。在本实施例中,存储池A分为四个子存储池A-1、A-2、A-3和A-4,同时存储池B分为三个子存储池B-1、B-2和B-3。在各存储池中,子存储池的容量彼此不同。但是,在各存储池中,子存储池的容量可以是相同的。
图3示出了由搜索顺序控制部分101保存的搜索顺序表的例子。搜索顺序表为存储池A的搜索顺序。搜索顺序表有四个条目。第一个是请求存储区容量等于或小于64K字节的。第二个是请求存储区容量大于64K字节等于或小于128K字节的。第三个是请求存储区容量大于128K字节等于或小于512K字节的。最后一个是请求存储区容量等于或大于512K字节的。例如,当请求存储区容量等于256K字节时,第三个条目(entry)用来在存储池A中搜索可用存储区。这些条目用来处理任何容量的请求存储区容量。分别对应于剩余存储池的其它搜索顺序表由搜索顺序控制部分101保存。即,搜索顺序表定义了相应存储池的搜索顺序。其它搜索顺序表可以与图3的搜索顺序表不同,也可以彼此不相同。
然后,参考图4到11以及图1到3说明存储池管理系统的工作。这里,存储池管理系统通过使用分别对应于任务的控制表(TCB:任务控制模块Task Control Block)控制多个任务,类似于一般的操作系统(或OS)。
首先,任务程序调用存储器占用请求接收部分,以得到存储区。即,任务程序将包括存储池ID和请求存储区容量的占用请求发送到存储器占用请求接收部分102。当接收到来自任务程序的占用请求时,存储器占用请求接收部分102进行如图4所示的操作。
如图4所示,在步骤S401中,存储器占用请求接收部分102初始化搜索计数器“Count”。即,存储器占用请求接收部分102在搜索计数器“Count”中置“1”作为计数值。
然后,在步骤S402中,存储器占用请求接收部分102将存储池ID、所请求的存储区容量和计数值发送到搜索顺序控制部分101。
接收到的存储池ID、所请求的存储区容量和计数值后,在步骤S402中,搜索顺序控制部分101向存储器占用请求接收部分102发送应答。应答(replay)代表要搜索的子存储池的子存储池ID或没有要搜索的子存储池(或搜索结束)。
在步骤S403中,当存储器占用请求接收部分102接收到搜索顺序控制部分101的应答时,判断应答是否代表子存储池ID或没搜索到。当应答代表子存储池ID时,步骤S403转到步骤S404。另一方面,当应答代表没有要搜索的子存储池时,步骤S403跳到步骤S408。
在步骤S404中,存储器占用请求接收部分102将存储池ID和所请求的存储区容量发送到存储器占用部分104。存储器占用部分104尝试得到或调取子存储池中所请求存储容量的分配的子存储器ID的存储区。存储器占用部分104将存储器占用尝试的结果通知存储器占用请求接收部分102。当存储器占用部分104尝试成功时,结果表示占用或调取的存储器地址。当存储器占用部分104尝试失败时,结果表示失败状态。
在步骤S405中,存储器占用请求接收部分102根据来自存储器占用部分104的结果判断储器占用部分104的尝试是否成功。当结果表示失败状态时,步骤S405转到步骤S406。当结果表示存储器地址时,步骤S405跳到步骤S407。
在步骤S406中,存储器占用请求接收部分102使搜索计数器“Count”累加。即,存储器占用请求接收部分102使当前计数值加“1”,产生新的计数值。然后,步骤S406返回到步骤S402。
另一方面,当存储器占用请求接收部分102在步骤S405中收到存储器地址时,在步骤S407中,存储器占用请求接收部分102将存储器地址发送到任务程序。
在步骤S403中,当搜索顺序控制部分101通知没有子存储池时,在步骤S408中,存储器占用请求接收部分102将存储池ID和所请求的存储区容量发送到队列控制部分105。队列控制部分105使任务的TCB在等候任务队列中排队等候对应于存储池ID的存储池。因此,任务等待在对应于存储池ID的存储池中发现可分配的存储区。
当在存储池中发现可分配的存储区时,队列控制部分105将可分配存储区的存储器地址存储到TCB中,并唤醒任务。
在步骤S409中,被唤醒的任务从TCB中读出可分配存储区的存储器地址。因此,任务占用并占用了所需要的存储区容量的存储区。
下面说明任务程序调用存储器释放请求接收部分103的情况。在这种情况下,任务程序将包括释放存储器地址的释放请求发送到存储器释放请求接收部分103。存储器释放请求接收部分103接收释放请求并如图5所示操作。
在步骤S501中,存储器释放请求接收部分103将释放的存储器地址发送到存储器释放部分106,以使存储器释放部分106释放所调取的对应于释放存储器地址的存储区。存储器释放部分106找到通过释放所调取的在属于释放存储器地址的子存储池中的存储区所形成的最大可用存储区。存储器释放部分106将包括最大可用存储区的子存储池的子存储池ID和最大可用存储区的容量发送给存储器释放请求接收部分103。
在步骤S502中,根据接收到的子存储池ID和最大可用存储区容量之后,存储器释放请求接收部分103将它们与包括由子存储池ID代表的子存储池的存储池的存储池ID通知队列控制部分105。
然后,将说明由存储器占用请求接收部分102调用的搜索顺序控制部分101的操作。
当搜索顺序控制部分101接收到来自存储器占用请求接收部分102的存储池ID、所请求的存储区容量和“Count”的计数值时,其操作如图6所示。
在步骤S601中,搜索顺序控制部分101根据从存储器占用请求接收部分102发来的存储池ID选择搜索顺序表中的一个。
然后,在步骤S602中,搜索顺序控制部分101根据来自存储器占用请求接收部分102的所请求的存储区容量从选定的搜索顺序表中找到一个条目。
随后,在步骤S603中,搜索顺序控制部分101判断从存储器占用请求接收部分102发来的计数值是否大于在找到的条目中的子存储池ID的数量。当计数值等于或小于在找到的条目中的子存储池ID的数量时,步骤S603转到步骤S604。在步骤S604中,搜索顺序控制部分101将对应于计数值的相应的子存储池ID发送到存储器占用请求接收部分102。另一方面,当计数值大于子存储池ID的数量时,步骤S604跳到步骤S605。在步骤S605中,搜索顺序控制部分101通知存储器占用请求接收部分102没有相应的子存储池ID。换句话说,搜索顺序控制部分101通知存储器占用请求接收部分102搜索结束。
现在,假设来自存储器占用请求接收部分102的存储池ID和所请求的存储区容量分别为存储池A和256K字节容量。在这种情况下,搜索顺序控制部分101操作如下。
首先,因为存储池ID表示存储池A,所以搜索顺序控制部分101选择图3的搜索顺序表。然后,因为所请求的存储区容量等于256K字节,所以搜索顺序控制部分101选择搜索顺序表的第三个条目。
当来自存储器占用请求接收部分102的计数值等于“1”时,搜索顺序控制部分101将“A-3”作为子存储池ID发送给存储器占用请求接收部分102。如果计数值等于“2”、“3”和“3”,则搜索顺序控制部分101将分别发送“A-2”、“A-1”和“A-4”。当计数值等于“5”时,搜索顺序控制部分101通知存储器占用请求接收部分102搜索结束。
下面参考图7到9说明队列控制部分105的操作。从存储器占用请求接收部分102收到存储池ID和所请求的存储区容量时,队列控制部分105的操作如图7所示。此外,当被存储器释放请求接收部分103调用或从存储器释放请求接收部分103收到存储池ID、子存储池ID和最大可用存储区容量时,队列控制部分105的操作如图9所示。
如图7所示,在步骤S701中,当从存储器占用请求接收部分102收到存储池ID和所请求的存储区容量后,队列控制部分105得到对应于产生存储池ID和所请求存储区容量的任务的TCB。TCB具有用来存储所请求的存储区容量的第一域和用来存储可分配的存储区的存储器地址的第二域,如图8所示。
然后,在步骤S702中,队列控制部分105将所请求的存储区容量储存在所得到的TCB的第一域中,并将第二域清空使之为零。
最后,在步骤S703中,TCB在等候任务队列中排队等候对应于存储池ID的存储池,并由此使任务进入休眠状态。例如,如图8所示的情况,因为已经有三个TCB在排队,所以该TCB为第四个。等候任务队列用已知的方法处理,例如FIFO方法、根据任务优先权的方法等。无论如何,等候任务队列采用调度程序(未示)来处理。
如图9所示,在步骤S901中,当队列控制部分105接收到存储池ID、子存储池ID和最大可用存储区容量时,用最大可用存储区容量代替“下一个容量”。
然后,在步骤S902中,队列控制部分105判断在对应于存储池ID的等候任务队列中是否还剩有TCB。当在等候任务队列中还留有TCB时,步骤S902转到步骤S903。另一方面,当在等候任务队列中没有TCB时,步骤S902到结束。
在步骤S903中,队列控制部分105得到在等候任务队列最前面的TCB。
接着,在步骤S904中,队列控制部分105将存储在所得到的TCB中的所请求的存储区容量与“下一个容量”进行比较。当所请求的存储区容量等于或小于“下一个容量”时,步骤S904转到步骤S905。当所请求的存储区容量大于“下一个容量”时,步骤S904转到结束。
在步骤S905中,队列控制部分105使存储池查询部分1204从对应于子存储池ID的子存储池中得到具有所请求的存储区容量的存储区。
随后,队列控制部分105从等候任务队列中取出TCB并将由存储池查询部分1204得到的调取存储区的存储器地址存储到TCB的第二域中。此外,队列控制部分105唤醒对应于TCB的任务。
接着,在步骤S907中,队列控制部分105从“下一个容量”中减去所请求的存储区容量,以得到新的“下一个容量”。然后,步骤S907返回到步骤S902。
在本实施例中,队列控制部分105仅考虑从存储器占用请求接收部分102发来的对应于子存储池ID的子存储池。但是,也可以考虑从存储器占用请求接收部分102发来的对应于存储池ID的存储池的子存储池。这通过使队列控制部分105具有表示在个子存储池中的最大可用存储区容量的最大容量表来实现。在这种情况下,在步骤S904中,队列控制部分105通过采用最大容量表将在TCB中存储的所请求的存储区容量与在各存储池中的最大可用存储区容量进行比较。在这种情况下,使用搜索顺序控制部分101是有利的。
下面参考图10说明存储池查询部分1204的操作。
存储池查询部分104从存储器占用请求接收部分102或队列控制部分105收到子存储池ID和所请求的存储区容量,如上所述。然后,在步骤S1001中,存储池查询部分1204尝试从对应于子存储池ID的子存储池中得到所请求存储容量的存储区。该尝试通过采用已知的方法进行。
下面在步骤S1002中,存储池查询部分1204判断是否得到了存储区。
当在步骤S1002中得到了存储区时,在步骤S1003中,存储池查询部分1204将所得到的存储区的存储器地址发送到存储器占用请求接收部分102或队列控制部分105。
另一方面,当在步骤S1002中没有得到存储区时,在步骤S1004中,存储池查询部分1204将失败状态的结果发送到存储器占用请求接收部分102或队列控制部分105。
然后,参考图11说明存储器释放部分106的操作。
如图11所示,在步骤S1101中,存储器释放部分106根据存储器释放请求接收部分103发来的相应的释放存储器地址释放调取的存储区。
接下来,在步骤S1102中,存储器释放部分106发送子存储池的子存储池ID,其中包括所调取的存储区的释放存储器地址和由释放所调取的存储区形成的最大可用存储区。
如上所述,本实施例的存储池管理系统以子存储池为单位按关于所请求的存储区容量的预定的搜索顺序在存储池中搜索等于或大于所请求的存储区容量的可分配的存储区。因此,存储池管理系统可以有效地利用存储器100。即,存储池管理系统可以抑制可用存储区的碎片和分区缺点的出现。
因为子存储池的考虑了所调取的存储区容量的搜索顺序依赖于所请求的存储区容量,并且局部化了在各存储池的子存储池,所以难以产生碎片。
因为不仅在特定的一个子存储池中进行可分配存储区的搜索,而且在输入搜索顺序表的其它子存储池中进行,所以不会出现分区缺点。
参考图12到17,说明根据本发明第二实施例的存储池管理系统。
存储池管理系统通过采用符合TRON ASSOCIATION的μITRON3.0的操作系统的标准规范的操作系统的存储器管理功能来实现。
图12是存储池管理系统的方框图。存储池管理系统与图1的不同点在于具有符合OS μITRON 3.0的标准规范的存储池查询部分1204、存储池等候和占用部分1205以及存储器释放部分1206。在OSμITRON 3.0的标准规范中,存储池查询部分1204、存储池等候和占用部分1205以及存储器释放部分1206分别定义为“pget_blk”、“get_blk”和“rel_blk”的系统调用。
此外,存储池管理系统包括搜索顺序控制部分1201、存储器占用请求接收部分1202和存储器释放请求接收部分1203。搜索顺序控制部分1201、存储器占用请求接收部分1202和存储器释放请求接收部分1203与图1中的类似。
OS μITRON 3.0的标准规范在存储器中定义了多个存储池。在本实施例中,存储池管理系统管理作为图2的子存储池的存储池,以形成对应于图2的存储池的存储池组,如图13所示。
存储池管理系统采用搜索顺序表响应存储器占用请求搜索可分配存储区。搜索顺序表分别对应于存储池组。
在图14中示出了搜索顺序表的例子。搜索顺序表为存储池组A的。与图3的搜索顺序表的不同点在于具有用于进入等候存储池ID的列。在存储池查询部分1204在相应的存储池组中没有找到可分配的存储区的情况下,对应于各等候存储池ID的存储池通过存储池等候和占用部分1205进行搜索。为了区分正常搜索顺序的存储池ID和等候存储池ID,在下文中存储池ID将被称作正常池ID。虽然等候存储池ID通常对应于各条目中搜索顺序的第一个正常池ID,但这不是必需的。
参考图15到17以及图12到14说明存储池管理系统的操作。
当任务程序调用存储器占用请求接收部分1202时,将包括存储池组ID和所请求的存储区容量的存储器占用请求发送到存储器占用请求接收部分1202。收到的存储器占用请求后,存储器占用请求接收部分1202如图15所示。
首先,在步骤S1501中,存储器占用请求接收部分1202初始化搜索计数器“Count”的计数值。
然后,在步骤S1502中,存储器占用请求接收部分1202向搜索顺序控制部分1201发送存储池组ID、所请求的存储区容量和计数值。
接收到的存储池ID、所请求的存储区容量和计数值之后,在步骤S1202中,搜索顺序控制部分1201向存储器占用请求接收部分1202发送应答。应答(replay)表示要搜索的子存储池的子存储池ID或没有要搜索的子存储池。
在步骤S1503中,当存储器占用请求接收部分1202接收到搜索顺序控制部分1201的应答时,判断应答是否代表子存储池ID或没搜索到。当应答代表子存储池ID时,步骤S1503转到步骤S1504。另一方面,当应答代表没有要搜索的子存储池时,步骤S1503跳到步骤S1508。
在步骤S1504中,存储器占用请求接收部分1202将存储池ID和所请求的存储区容量发送到存储池查询部分1204。存储池查询部分1204从分配的子存储器ID的子存储池中尝试得到或调取具有所请求存储容量的存储区。存储池查询部分1204将存储器占用尝试的结果通知存储器占用请求接收部分1202。当存储池查询部分1204尝试成功时,结果表示占用或调取的存储区的存储器地址。当存储池查询部分1204尝试失败时,结果表示失败状态。
在步骤S1505中,存储器占用请求接收部分1202判断来自存储池查询部分1204的结果是否为失败状态。当结果表示失败状态时,存储器占用请求接收部分1202判断存储池查询部分尝试失败,步骤S1505转到步骤S1506。当结果表示存储器地址时,存储器占用请求接收部分1202判断存储池查询部分得到了存储器地址,步骤S1505跳到步骤S1507。
在步骤S1506中,存储器占用请求接收部分1202使搜索计数器“Count”累加。即,存储器占用请求接收部分1202使当前计数值加“1”,产生新的计数值。然后,步骤S1506返回到步骤S1502。
另一方面,当存储器占用请求接收部分1202在步骤S1505中收到存储器地址时,在步骤S1507中,存储器占用请求接收部分1202将存储器地址发送给任务程序。
在步骤S1503中,当存储器占用请求接收部分1202接收到表示没有要搜索的存储池的应答时,在步骤S1508中,将计数值“0”与存储池组ID和所请求的存储区容量一起发送到搜索顺序控制部分1201。
接收到的计数值“0”、存储池组ID和所请求的存储区容量之后,搜索顺序控制部分1201将对应于存储池组ID和所请求的存储区容量的等候存储池ID发送到存储器占用请求接收部分1202。
然后,在步骤S1508中,存储器占用请求接收部分1202将从搜索顺序控制部分1201发来的等候存储池ID和所请求的存储区容量一起发送到存储池等候和占用部分1205。
存储池等候和占用部分1205通过OS μITRON 3.0实现了等待可分配存储区出现的功能。存储池等候和占用部分1205代替了图1的队列控制部分105的一部分。当可分配存储区出现在等候存储池分配的等候存储池中时,存储池等候和占用部分1205得到具有所请求的存储区容量的存储区。
下面参考图16说明由任务程序调用的存储器释放请求接收部分1203的操作。
当存储器释放请求接收部分1203从任务程序接收到包括释放存储器地址的释放请求时,存储器释放请求接收部分1203将释放存储器地址发送到存储器释放部分1206。
接收到的释放存储器地址后,存储器释放部分1206释放所调取的对应于释放存储器地址的存储区。具有由OS μITRON 3.0实现的功能的存储器释放部分1206通知存储池等候和占用部分1205释放所调取的存储区。即,存储器释放部分1206代替了图1的队列控制部分105的另一部分。释放所调取的存储区的通知只在当存储池等候和占用部分1205等待在包括释放的存储区的存储池中的可分配存储区的出现时进行。
下面参考图17说明由存储器占用请求接收部分1202调用的搜索顺序控制部分1201的操作。
当搜索顺序控制部分1201接收到来自存储器占用请求接收部分1202的存储池组ID、所请求的存储区容量和计数值时,其操作如图17所示。
在步骤S1701中,搜索顺序控制部分1201根据从存储器占用请求接收部分1202发来的存储池组ID选择搜索顺序表中的一个。
然后,在步骤S1702中,搜索顺序控制部分1201根据来自存储器占用请求接收部分1202的所请求的存储区容量从选定的搜索顺序表中找到一个条目。
随后,搜索顺序控制部分1201判断从存储器占用请求接收部分1202发来的计数值是等于“0”。当计数值等于“0”时,在步骤S1706中,搜索顺序控制部分1201将所发现的条目的等候存储池ID发送到存储器占用请求接收部分1202。
当计数值不等于“0”时,在步骤S1704中,搜索顺序控制部分1201进一步判断计数值是否大于所发现条目中正常存储池ID的数量。
当计数值等于或小于所发现条目中正常存储池ID的数量时,在步骤S1705中,搜索顺序控制部分1201将对应于计数值的相应的存储池ID发送到存储器占用请求接收部分1202。
另一方面,当计数值大于所发现条目中正常存储池ID的数量时,在步骤S1707中,搜索顺序控制部分1201通知存储器占用请求接收部分1202没有要搜索的存储池。
根据本实施例,存储器管理系统没有可变长度存储池管理系统或固定长度存储池管理系统所存在的问题。因此,存储池管理系统可以有效地利用存储器100。即,存储池管理系统可以抑制可用存储区的碎片和分区缺点的出现。
因为存储池的搜索顺序依赖于所请求的存储区容量,并且局部化了在各存储池组中的存储池,考虑了所调取的存储区的容量,所以难以产生碎片。
因为不仅在特定的一个存储池中进行可分配存储区的搜索,而且在进入搜索顺序表的其它存储池中进行,所以不会出现分区缺点。
虽然本发明仅结合优选实施例进行了说明,但是对于本领域的技术人员可以用各种其他方式实现本发明。例如,搜索顺序控制部分(101或1201)、存储器占用请求接收部分(102或1202)以及存储器释放请求接收部分(103或1203)可以与不同于μITRON 3.0的操作系统的存储器管理功能相结合。
此外,存储池管理系统可以包括计算机程序产品或软件。计算机程序产品用在计算机中,并包括计算机可读的指令以及存储计算机可读指令的记录媒体。指令用于让计算机能够如上所述地操作。

Claims (6)

1.一种存储池管理方法,用于从具有多个子存储池的存储池中得到存储区,包括以下步骤:
接收来自任务程序的指定请求存储区容量的存储区占用请求;
以子存储池为单位按关于请求存储区容量的预定的搜索顺序,从存储池中搜索等于或大于所请求存储区容量的可分配存储区;以及
当在任何一个所述子存储池中发现所述可分配存储区时,从可分配存储区得到所请求存储区容量的所述存储区。
2.根据权利要求1的存储池管理方法,其中预定的搜索顺序从关于预先确定的用于对所请求的存储区容量进行分类的不同容量范围的多个搜索顺序中选择。
3.根据权利要求1的存储池管理方法,其中所述方法还包括以下步骤:
在搜索步骤中,在所述存储池中未发现所述可分配存储区的情况下,等待在所述存储池中所述可分配存储区的出现。
4.一种存储池管理系统,用于从具有多个子存储池的存储池中得到存储区,所述存储池管理系统包括:
用来接收来自任务程序的指定请求存储区容量的存储区占用请求的占用请求接收部分;
连接到所述接收部分的搜索顺序控制部分,用来根据关于请求存储区容量的预定的搜索顺序通知子存储池ID,响应所述占用请求接收部分的请求;以及
连接到所述占用请求接收部分的占用部分,用来尝试根据从所述搜索顺序控制部分通过所述占用请求接收部分发来的相应的子存储池ID从子存储池中占用所请求存储区容量的所述存储区。
5.根据权利要求4的存储池管理系统,其中预定的搜索顺序从关于预先确定的用于对所请求的存储区容量进行分类的不同容量范围的多个搜索顺序中选择。
6.根据权利要求4的存储池管理系统,其中所述存储池管理系统还包括:
一个等待部分,用于在所述搜索顺序控制部分通知所述占用请求接收部分搜索结束的情况下,等待在所述存储池中等于或大于所述请求的存储区容量的可分配存储区的出现。
CNB021598428A 2001-12-27 2002-12-27 能够有效使用存储器的存储池管理方法和系统 Expired - Fee Related CN1320463C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP397027/2001 2001-12-27
JP2001397027A JP3832341B2 (ja) 2001-12-27 2001-12-27 メモリプール管理方式

Publications (2)

Publication Number Publication Date
CN1432922A CN1432922A (zh) 2003-07-30
CN1320463C true CN1320463C (zh) 2007-06-06

Family

ID=19189150

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB021598428A Expired - Fee Related CN1320463C (zh) 2001-12-27 2002-12-27 能够有效使用存储器的存储池管理方法和系统

Country Status (5)

Country Link
US (1) US7203812B2 (zh)
JP (1) JP3832341B2 (zh)
CN (1) CN1320463C (zh)
GB (1) GB2388448B (zh)
HK (1) HK1057271A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005100262A (ja) * 2003-09-26 2005-04-14 Seiko Epson Corp メモリ管理装置およびメモリ管理プログラム、並びにメモリ管理方法
JP4668562B2 (ja) * 2004-08-02 2011-04-13 株式会社アプリックス メモリマネジメントプログラムおよびメモリマネジメント方法
KR100509794B1 (ko) * 2005-03-09 2005-08-23 주식회사 퓨전소프트 데이터베이스 관리시스템을 이용하는 작업들의 실시간 처리를 위한 스케줄링 방법
US7899990B2 (en) * 2005-11-15 2011-03-01 Oracle America, Inc. Power conservation via DRAM access
US7934054B1 (en) 2005-11-15 2011-04-26 Oracle America, Inc. Re-fetching cache memory enabling alternative operational modes
US7516274B2 (en) * 2005-11-15 2009-04-07 Sun Microsystems, Inc. Power conservation via DRAM access reduction
US7958312B2 (en) * 2005-11-15 2011-06-07 Oracle America, Inc. Small and power-efficient cache that can provide data for background DMA devices while the processor is in a low-power state
JP5270924B2 (ja) * 2008-01-30 2013-08-21 株式会社東芝 固定長メモリブロック管理装置及び固定長メモリブロック管理装置の制御方法
WO2012107988A1 (ja) * 2011-02-07 2012-08-16 富士通株式会社 メモリ管理プログラム、メモリ管理方法及び情報処理装置
JP2012203881A (ja) * 2011-03-28 2012-10-22 Fujitsu Ltd ストレージ装置及びストレージ制御装置
US8683169B2 (en) 2011-05-05 2014-03-25 International Business Machines Corporation Selecting an auxiliary storage medium for writing data of real storage pages
US8793444B2 (en) 2011-05-05 2014-07-29 International Business Machines Corporation Managing large page memory pools
US8799611B2 (en) * 2011-05-05 2014-08-05 International Business Machines Corporation Managing allocation of memory pages
US8656133B2 (en) 2011-05-05 2014-02-18 International Business Machines Corporation Managing storage extents and the obtaining of storage blocks within the extents
WO2013044502A1 (zh) * 2011-09-30 2013-04-04 华为技术有限公司 数据管理的方法及装置
US20170371573A1 (en) * 2016-06-24 2017-12-28 Samsung Electronics Co., Ltd. Method of operating storage medium, method of operating host controlling the storage medium, and method of operating user system including the storage medium and the host
CN110377237B (zh) * 2019-07-26 2023-01-10 苏州浪潮智能科技有限公司 一种多数据池选择方法、系统及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999067699A2 (en) * 1998-06-25 1999-12-29 Koninklijke Philips Electronics N.V. Dynamic memory space allocation

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62283752A (ja) 1986-05-31 1987-12-09 Nec Corp ホストコンピユ−タ内バツフア割当て方式
JP2960415B2 (ja) * 1987-05-22 1999-10-06 株式会社日立製作所 記憶保護方法および装置
JPS6410365U (zh) 1987-07-02 1989-01-19
JPH0546447A (ja) * 1991-08-08 1993-02-26 Hitachi Ltd 空き領域検索方法
US5623654A (en) * 1994-08-31 1997-04-22 Texas Instruments Incorporated Fast fragmentation free memory manager using multiple free block size access table for a free list
US5784698A (en) * 1995-12-05 1998-07-21 International Business Machines Corporation Dynamic memory allocation that enalbes efficient use of buffer pool memory segments
JPH09305479A (ja) 1996-05-13 1997-11-28 Nec Corp 記憶装置の動的記憶領域管理装置
US5784699A (en) * 1996-05-24 1998-07-21 Oracle Corporation Dynamic memory allocation in a computer using a bit map index
EP0974908A2 (en) * 1998-07-24 2000-01-26 Interuniversitair Microelektronica Centrum Vzw Optimized virtual memory management for dynamic data types
JP2000047933A (ja) * 1998-07-30 2000-02-18 Nec Software Kobe Ltd 双方向メモリ確保管理方式
US6804761B1 (en) * 2000-01-21 2004-10-12 Cisco Technology, Inc. Memory allocation system and method
TW526415B (en) * 2000-02-15 2003-04-01 Ibm System and method for persistent and robust storage allocation
JP2001236249A (ja) * 2000-02-24 2001-08-31 Nec Corp メモリ管理装置およびメモリ管理方法
JP2001325145A (ja) 2000-05-15 2001-11-22 Sanyo Electric Co Ltd データ格納システムおよびそれを用いたデータ放送受信装置
US7093097B2 (en) * 2001-11-27 2006-08-15 International Business Machines Corporation Dynamic self-tuning memory management method and system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999067699A2 (en) * 1998-06-25 1999-12-29 Koninklijke Philips Electronics N.V. Dynamic memory space allocation

Also Published As

Publication number Publication date
CN1432922A (zh) 2003-07-30
JP3832341B2 (ja) 2006-10-11
GB2388448A (en) 2003-11-12
US7203812B2 (en) 2007-04-10
US20040128466A1 (en) 2004-07-01
GB0230166D0 (en) 2003-02-05
GB2388448B (en) 2005-03-09
JP2003196152A (ja) 2003-07-11
HK1057271A1 (en) 2004-03-19

Similar Documents

Publication Publication Date Title
CN1320463C (zh) 能够有效使用存储器的存储池管理方法和系统
CN1154928C (zh) 用于多任务设施信息处理系统的资源管理方法和设备
CN1271517C (zh) 任务切换装置、方法和程序
CN1945539A (zh) 计算机集群系统中共享资源锁分配方法与计算机及集群系统
CN1174323C (zh) 管理共享内存的方法
CN1127017C (zh) 线程切换控制方法及用于该方法的线程状态寄存器
CN1096642C (zh) 高效利用空间的对象加锁的系统和方法
CN1215420C (zh) 数据分配方法
CN1205549C (zh) 用于多-线程虚拟机的存储器分配的方法和装置
CN101055533A (zh) 一种多线程处理器动态内存管理系统及方法
CN1908903A (zh) 执行作业步的系统和方法以及计算机产品
CN1716187A (zh) 预载控制器、由处理器控制将数据预载至临时存储器的预载控制方法和程序
CN1306414C (zh) 闪速存储器和闪速存储器的映射控制设备和方法
CN1877491A (zh) 多核处理器的混合模式运行方法及其装置以及电源管理模式设定方法
CN1516115A (zh) 非易失性半导体磁盘装置
CN1518705A (zh) 处理器结构
CN1828512A (zh) 自动数据存储库、及其虚拟化系统和虚拟化方法
CN1489733A (zh) 处理器结构
CN1573701A (zh) 分布式构建环境中的软件映像创建
CN1648876A (zh) 闪速存储器的数据管理设备和方法
CN1276888A (zh) 在多线程处理器中选择线程切换事件的方法和装置
CN1855881A (zh) 动态共享存储器存储空间的实现方法
CN1111800C (zh) 管理共享资源的装置和方法
CN101031886A (zh) 网络系统、管理计算机、集群管理方法以及计算机程序
CN1487419A (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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070606

Termination date: 20131227