CN1332316C - 用于存储器管理的设备和方法 - Google Patents
用于存储器管理的设备和方法 Download PDFInfo
- Publication number
- CN1332316C CN1332316C CNB2004100119873A CN200410011987A CN1332316C CN 1332316 C CN1332316 C CN 1332316C CN B2004100119873 A CNB2004100119873 A CN B2004100119873A CN 200410011987 A CN200410011987 A CN 200410011987A CN 1332316 C CN1332316 C CN 1332316C
- Authority
- CN
- China
- Prior art keywords
- zone
- region
- overlapping
- memory management
- request
- 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
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0207—Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种适合于减少存储器使用量和简化程序的存储器管理设备。当已经输入区域分配请求时,根据存储器管理表400查找具有由包括在区域分配请求中的区域大小信息所确定大小的区域作为候选区域。并且从存储器管理表400中读取对应于与该候选区域在其低地址方向上接续的邻接区域的重叠标志,并根据该重叠标志,确定该邻接区域是否是允许重叠分配的区域。如果确定该区域是允许重叠分配的区域,就分配与该邻接区域重叠的使用区域。
Description
技术领域
本发明涉及一种根据存储器管理表管理存储器使用的系统、程序和方法,并且特别涉及一种适合于减少存储器使用量和简化程序的存储器管理设备、程序和方法。
背景技术
实时操作系统(此后称之为RTOS)并行执行多个任务。典型的,在执行RTOS的基于微处理器的系统中,其存储器管理能力作为RTOS的一个特征来实现。而且存储器分配函数和存储器释放函数典型的是C语言的malloc函数和free函数,通常执行它们以使得将RTOS的存储器函数封装起来。
RTOS上运行的每一个任务调用一个存储器分配函数,以获得处理所必须的存储区域。存储器分配函数根据存储器管理表从存储器的有效存储区域中分配所需要的使用区域,将所分配的使用区域的起始指针记录到存储器管理表,并将其交给该请求任务。
写入作为虚拟二维空间的存储区域或从其中读出的技术包括在例如在日本专利公开No.2002-222117(JP2002-222117A)中公开的一种存储器使用方法。
JP2002-222117A中所公开的发明假定一个预定二维存储空间,其在垂直和水平方向上设置最小虚拟二维存储空间,并预先将最小虚拟二维存储空间的每一地址分配给相对于最小虚拟二维存储空间所确定的n个物理存储块的每一地址。当读取数据的时候,指定最小虚拟二维存储空间的读地址,并且用读地址作为参考同样指定读取数据的垂直或者水平方向。根据这两个指定,就可以从对应于n个存储块的每一地址中读取存储在最小虚拟二维存储空间的垂直或者水平方向上的连续数据。
在如上所述的这种常规RTOS中,如果不同的任务需要共享数据,这些任务可以共享相同的使用区域。然而,如果不同任务使用存储区域用于截然不同的目的,则就会出现存储器使用量增加的问题,因为会给每一任务分配不同的使用区域。
除了上述问题之外,JP2002-222117A中所公开的发明还有一个问题就是程序变得复杂,因为为了将使用区域作为二维存储空间进行分配,任务方的程序必须计算二维存储空间的最大宽度,并从存储器分配函数中请求所需要的大小。
于是,考虑到现有技术不能解决的上述问题提出本发明,本发明的目的是提供一种适合于减少存储器使用量和简化程序的存储器管理设备、程序、和方法。
发明内容
经过紧密检查之后,本发明者发现即使不同任务使用用于截然不同目的的存储区域,如果所分配的存储区域相互重叠,当这些任务不同时使用该存储区域时,在处理过程中就不会出现问题。
发明1:为了得到上述目的,根据发明1的一种存储器管理设备,包括:
使用区域分配部分,其根据用于管理存储器使用的存储器管理表从存储器的有效存储区域中分配所需要的使用区域,其中该使用区域分配部分包括:
候选区域查找部分,响应于包括指示所需的使用区域大小的区域大小信息的区域分配请求,根据存储器管理表从存储器的有效存储区域中查找具有由包括在区域分配请求中的区域大小信息所确定大小的区域作为候选区域,
邻接区域确定部分,用于从存储器管理表读取对应于邻接区域的重叠信息,该邻接区域与候选区域查找部分所查找到的候选区域在地址上连续,并且根据该重叠信息确定该邻接区域是否是允许重叠分配的区域,和
重叠使用区域分配部分,用于当邻接区域确定部分确定该邻接区域允许重叠分配时,就分配与该邻接区域重叠的使用区域;和
区域管理信息登记部分,用于将区域管理信息登记到存储器管理表,该区域管理信息包括由该使用区域分配部分所分配的使用区域的访问信息;
其特征在于,该区域管理信息包括重叠信息,其指示是否允许重叠分配的存储区域;和
该使用区域分配部分根据存储器管理表从存储区域中查找允许重叠分配的使用区域,并且分配与查找到的允许重叠分配的使用区域重叠的使用区域。
使用这种结构,假定区域分配请求包括区域大小信息,根据存储器管理表通过候选区域查找部分从存储器的有效存储区域中查找具有由包括在区域分配请求中的区域大小信息所确定的大小的区域作为候选区域。并且,从存储器管理表读取对应于邻接区域的重叠信息,该邻接区域与所查找到的候选区域在地址上连续,并且通过邻接区域确定部分根据该重叠信息确定该邻接区域是否是允许重叠分配的区域。如果确定该邻接区域允许重叠分配,就通过重叠使用区域分配部分分配与该邻接区域重叠的使用区域。
于是,由于与该邻接区域重叠的使用区域会被分配,所以持续地址的区域可以作为使用区域分配,可以有效的访问存储器。
使用这种结构,由于重叠信息被登记到存储器管理表,所以根据存储器管理表从存储区域中查找允许重叠分配的使用区域,并且由使用区域分配部分来分配与所查找到的允许重叠分配的使用区域重叠的使用区域。区域管理信息包括所分配的使用区域的访问信息,通过区域管理信息登记部分将其登记到存储器管理表。
这具有的优势是,相比于常规惯例可以减少存储器使用量,因为如果不同任务并不同时使用存储区域,就会通过由另一任务所使用的存储区域的重叠信息允许重叠分配,将该使用区域重叠分配。
存储器包括诸如RAM的半导体存储器部分、以及诸如FD和HD的磁存储的存储部分、诸如CD-R(可记录光盘)的光读取存储器部分、诸如MO的磁存储/光读取的存储器部分,以及可以从其中读取数据的任何其他存储器部分,不管是电的、磁的还是光学的。这也适用于发明8的存储器管理程序和发明9的存储器管理方法。
发明2:根据发明1的存储器管理设备,其特征在于该区域分配请求包括重叠信息,
该使用区域分配部分进一步包括:
请求区域确定部分,用于根据包括在区域分配请求中的重叠信息确定所请求的使用区域是否是允许重叠分配的区域;和
非重叠使用区域分配部分,用于当请求区域确定部分确定所请求的使用区域不允许重叠分配,就将候选区域查找部分所查找到的候选区域作为使用区域分配;和
如果请求区域确定部分和邻接区域确定部分都确定该区域允许重叠分配,则重叠使用区域分配部分就分配与该邻接区域重叠的使用区域。
使用这种结构,假定区域分配请求包括重叠信息,通过请求区域确定部分根据包括在区域分配请求中的重叠信息确定所请求的使用区域是否是允许重叠分配的区域。如果确定所请求的使用区域不允许重叠分配,就通过非重叠使用区域分配部分将所查找到的候选区域作为使用区域分配。另一方面,如果确定所请求的使用区域和邻接区域都允许重叠分配,就通过重叠使用区域分配部分分配与该邻接区域重叠的使用区域。
这使得可以分配明确指示允许重叠分配的区域,使得它们相互重叠,从而提供的优势是可以减少任务中出现访问冲突的可能性。
发明3:根据发明2的存储器管理设备,其特征在于区域管理信息登记部分将区域管理信息登记到存储器管理表中,其中区域管理信息包括使用区域分配部分所分配的使用区域的访问信息和包括在区域分配请求中的重叠信息。
使用这种结构,通过区域管理信息登记部分将区域管理信息登记到存储器管理表中,其中区域管理信息包括所分配的使用区域的访问信息和包括在区域分配请求中的重叠信息。
这就可以允许任务程序只通过提供包括指示允许重叠分配的重叠信息的区域分配请求就可以分配重叠使用区域。于是提供的一个优势是任务程序可以制作得相对简单。
发明4:根据发明1的存储器管理设备,其特征在于区域分配请求包括多维定位信息,其指示该存储区域是否应该作为虚拟多维空间区域被分配;和
使用区域分配部分根据包括在区域分配请求中的多维定位信息确定所请求的使用区域是否是虚拟多维空间区域,如果确定该区域是虚拟多维空间区域,将该使用区域分配为考虑虚拟多维空间的最大空间大小的多维空间存储区域,如果确定该区域不是虚拟多维空间区域,其将该使用区域分配为规则区域。
使用这种结构,假定区域分配请求包括多维定位信息,通过使用区域分配部分根据包括在区域分配请求中的多维定位信息确定所请求的使用区域是否是虚拟多维空间区域。如果确定该区域是虚拟多维空间区域,将使用区域分配为考虑虚拟多维空间的最大空间大小的多维空间存储区域。另一方面,如果确定该区域不是虚拟多维空间区域,将使用区域分配为规则区域。
这就可以允许任务程序只通过提供包括指示存储区域应该作为虚拟多维空间区域分配而不需要计算该虚拟多维空间的最大空间大小的多维定位信息的区域分配请求,就可以分配规则区域,也可以分配考虑虚拟多维空间的最大空间大小的多维空间存储区域。从而提供的一种优势是,该任务程序相比于常规程序可以制作的相对简单。
发明5:根据发明4的存储器管理设备,其特征在于区域管理信息包括多维定位信息,
该区域分配请求包括重叠信息;
该使用区域分配部分进一步包括:
第一请求区域确定部分,用于根据包括在区域分配请求中的重叠信息确定所请求的使用区域是否是允许重叠分配的区域;
第二请求区域确定部分,用于根据包括在区域分配请求中的多维定位信息确定所请求的使用区域是否是虚拟多维空间区域;和
第二邻接区域确定部分,用于从存储器管理表中读取对应于该邻接区域的多维定位信息,并根据该多维定位信息确定该邻接区域是否是虚拟多维空间区域;和
如果第一请求区域确定部分和该邻接区域确定部分都确定该区域允许重叠分配,并且第二请求区域确定部分和第二邻接区域确定部分都确定该区域是虚拟多维空间区域,该重叠使用区域分配部分将与该邻接区域重叠的使用区域分配为多维空间存储区域。
使用这种结构,假定区域分配请求包括重叠信息和多维定位信息,通过第一请求区域确定部分根据包括在区域分配请求中的重叠信息确定所请求的使用区域是否是允许重叠分配的区域。而且,通过第二请求区域确定部分根据包括在区域分配请求中的多维定位信息确定所请求的使用区域是否是虚拟多维空间区域。进一步,从存储器管理表中读取对应于该邻接区域的多维定位信息,并根据该多维定位信息,通过第二邻接区域确定部分确定该邻接区域是否是虚拟多维空间区域。如果确定所请求的使用区域和该邻接区域都是允许重叠分配的区域,并且都是虚拟多维空间区域,通过该重叠使用区域分配部分分配与该邻接区域重叠的使用区域作为多维空间存储区域。
这可以提供的优势是,减少任务中出现访问冲突,和使用被不当格式化的使用区域的可能性,由于明确指示允许重叠分配的区域和指示它们应该作为虚拟多维空间区域分配的区域在分配中相互重叠。
发明6:根据发明5的存储器管理设备,其特征在于区域管理信息登记部分将区域管理信息登记到存储器管理表中,其中区域管理信息包括使用区域分配部分所分配的使用区域的访问信息,以及包括在区域分配请求中的多维定位信息和重复信息。
使用这种结构,通过区域管理信息登记部分将区域管理信息登记到存储器管理表中,其中区域管理信息包括所分配的使用区域的访问信息以及包括在区域分配请求中的多维定位信息和重叠信息。
这就可以使得任务程序,其只提供通过区域分配请求,该区域分配请求包括指示存储区域应该作为虚拟多维空间区域分配的多维定位信息,以及指示允许重叠分配的重叠信息,就可以分配考虑虚拟多维空间的最大空间大小的多维空间存储区域,和分配重叠使用区域。因此提供的一个优势是,该任务程序可以更进一步的简化。
发明7:根据发明1至6的任一存储器管理设备,其特征在于区域管理信息包括重叠计数器,其指示该存储区域中重叠的数目,
该区域管理信息登记部分从存储器管理表中读取对应于邻接区域的重叠计数器,和对应于重叠使用区域分配部分所分配的使用区域的重叠计数器,比较这两个重叠计数器,并将具有较大值的一个计数器加1;
该存储器管理设备进一步包括使用区域释放部分,用于将使用区域释放为有效区域;
该使用区域释放部分包括:
待释放区域查找部分,用于响应区域释放请求,根据存储器管理表查找适于该区域释放请求的使用区域,作为从存储器的使用区域中待释放的区域;和
重叠区域释放部分,用于将对应于待释放区域查找部分所定位的待释放区域的重叠计数器减1,和当重叠计数器的值达到预定值的时候,将待释放区域释放为有效存储区域。
使用这种结构,在分配使用区域的情况下,从存储器管理表中读取对应于邻接区域的重叠计数器和对应于所分配的使用区域的重叠计数器,通过该区域管理信息登记部分比较这些重叠计数器,并将具有较大值的一个计数器加1。
在释放存储区域的情况下,给定一个区域释放请求,通过待释放区域查找部分根据存储器管理表查找适于该区域释放请求的使用区域,作为从存储器的使用区域中待释放的区域。将对应于所查找到的待释放区域的重叠计数器减1,和当重叠计数器的值达到预定值的时候,通过重叠区域释放部分将该区域释放为有效存储区域。
这所提供的优势是,可以释放重叠使用区域和分配使用区域,而彼此不会产生影响。
发明8:为了得到上述目的,提供一种存储器管理程序,其使得计算机执行按照如下实现的处理过程:使用区域分配部分,根据用于管理存储器使用的存储器管理表从存储器的有效存储区域中分配所需要的使用区域;和区域管理信息登记部分,用于将区域管理信息登记到存储器管理表,该区域管理信息包括由该使用区域分配部分所分配的使用区域的访问信息;
其特征在于,该区域管理信息包括重叠信息,其指示是否允许存储区域的重叠分配;和
该使用区域分配部分根据存储器管理表从存储区域中查找允许重叠分配的使用区域,并分配与所查找到的允许重叠分配的使用区域重叠的使用区域。
使用这种结构,计算机读取该程序并执行根据该程序的处理过程,使得可以获得等同于发明1的存储器管理设备的操作和效果。
发明9:为了得到上述目的,提供一种存储器管理方法,包括步骤:
使用区域分配步骤,根据用于管理存储器使用的存储器管理表从存储器的有效存储区域中分配所需要的使用区域;和
区域管理信息登记步骤,将区域管理信息登记到存储器管理表,该区域管理信息包括在使用区域分配步骤中所分配的使用区域的访问信息;
其特征在于,该区域管理信息包括重叠信息,其指示是否允许存储区域重叠分配;和
该使用区域分配步骤根据存储器管理表从存储区域中查找允许重叠分配的使用区域,并分配与所查找到的允许重叠分配的使用区域重叠的使用区域。
这提供等同于发明1的存储器管理设备的效果。
附图说明
图1所示为存储器管理设备100的结构的功能方框图;
图2所示为二维存储器20的结构;
图3所示为存储器管理表400的数据结构;
图4所示为域408的数据结构;
图5所示为二维存储器20的使用;
图6所述为在分配使用区域过程中存储区域的状态转换;
图7A至7D所述为存储区域的重叠分配;
图8所述为在释放使用区域过程中存储区域的状态转换;
图9所述为分配使用区域的过程中的流程图;和
图10所述为释放使用区域的过程中的流程图。
具体实施方式
现在参照附图描述本发明的优选实施例。图1至10描述了本发明的存储器管理设备、程序和方法的实施例。
该实施例在根据存储器管理表400管理二维存储器20的使用的情况下,采用了本发明的存储器管理设备、程序和方法,如图1中所示。
首先参照附图1描述本发明所采用的存储器管理设备100的结构。
图1所示为存储器管理设备100的结构的功能方框图。
如图中所示,存储器管理设备100包括可以并行执行的多个任务10、二维存储器20、其中存储有存储器管理表400的存储器30、和根据存储器管理表400管理二维存储器20的使用的存储器管理单元40。
接下来将参照图2描述二维存储器20的结构。
图2所示为二维存储器20的结构。
如图中所示,二维存储器20具有n字节宽和m字节长的虚拟二维空间存储区域。当读取数据时,指定最小虚拟二维存储空间中所要读取的地址,并相对于所指定的读取地址指定数据读取的水平或者垂直方向。根据这两个指定,从n个存储块所对应的每一地址中可以读取设置在最小虚拟二维存储空间的水平或者垂直方向上的连续数据。
该二维存储器20可以是任何已知的存储器,其更加具体的结构可以如JP2002-222117A中所述。
现在将参照图3至5描述存储器管理表400的结构。
图3所示为存储器管理表400的数据结构。
存储器管理表400是将最新的记录登记在队尾的基于队列的目录,将区域管理信息登记为每一使用区域或每一未使用区域的一个记录。这里,使用区域指的是对于任何一个任务10所分配的存储区域,未使用区域指的是对于任何一个任务10没有分配的存储区域。
如图3中所示,每一记录包括用于登记记录编号的域402(No.);域404(下一指针),当使用了在二维存储器20的地址上多个非连续的使用区域作为一个使用区域时,用于登记对应于后一个使用区域的记录编号;和域406(前一指针),当使用了在二维存储器20的地址上多个非连续的使用区域作为一个使用区域时,用于登记对应于前一个使用区域的记录编号。每一记录也包括域408(状态),用于登记使用或未使用区域的状态信息;域410(重叠计数器),用于登记指示存储区域的重叠数目的重叠计数器;域412(起始地址),用于登记指向使用或未使用区域的起始指针;和域414(大小),用于登记使用或未使用区域的大小。
图4所示为域408的数据结构。
如图中所示,域408包括域420(重叠),用于登记指示是否允许该存储区域的重叠分配的重叠标志;域422(2D定位),用于登记指示存储区域是否会被分配为虚拟二维空间区域的2D定位标志;和域424(空位),用于登记指示该存储区域是使用区域或未使用区域的使用标志。
如图4中所示,存储区域可以假定六个状态。每一状态用A至F表示,状态A表示允许通过多个任务10进行存储区域的重叠分配,使用区域可以被分配为考虑到二维存储空间(此后称之为2D区域)最大宽度的区域,并且该存储区域是当前为任何一个任务10分配的使用区域。状态B表示允许通过多个任务10进行存储区域的重叠分配,使用区域可以被分配为规则区域,并且该存储区域是当前为任何一个任务10分配的使用区域。
状态C表示不允许通过多个任务10进行存储区域的重叠分配,使用区域可以被分配为2D区域,并且该存储区域是当前为任何一个任务10分配的使用区域。状态D表示不允许通过多个任务10进行存储区域的重叠分配,使用区域可以被分配为规则区域,并且该存储区域是当前为任何一个任务10分配的使用区域。
状态E表示不允许通过多个任务10进行存储区域的重叠分配,使用区域可以被分配为2D区域,并且该存储区域是当前没有给任何一个任务10分配的未使用区域。状态F表示不允许通过多个任务10进行存储区域的重叠分配,使用区域可以被分配为规则区域,并且该存储区域是当前没有给任何一个任务10分配的未使用区域。
在其起始状态中,存储器管理表400只登记状态F的未使用区域的一条区域管理信息。
图5所示为二维存储器20的使用。
由于二维存储器20使得可以从对应于n个存储块中的每一个的地址中读取连续数据,分配使用区域,使得它们的起始地址是n的整数倍,如图5中所示。
在图5中的示例中,在上部分中从地址0开始的存储区域处于状态D。这意味着不允许通过多个任务10进行存储区域的重叠分配,使用区域可以被分配为规则区域,并且该存储区域是当前为给任务1分配的使用区域。同样,在下部分中从地址2n开始的存储区域处于状态B。这意味着允许通过多个任务10进行存储区域的重叠分配,使用区域可以被分配为规则区域,并且该存储区域是当前为任务1和2分配的使用区域。
接下来将参照附图1、6和7A至7D详细描述存储器管理单元40的结构。
如图1中所示,存储器管理单元40包括使用区域分配单元42,用于根据存储器管理表400从二维存储器20的有效存储区域中分配所需要的使用区域;区域管理信息登记单元44,用于将使用区域分配单元42所分配的使用区域的区域管理信息登记到存储器管理表400中;和使用区域释放单元46,用于将使用区域释放为有效存储单元。
当输入区域分配请求,其包括指示使用区域所需大小的区域大小信息、重叠标志和2D定位标志,使用区域分配单元42根据包括在区域分配请求中的区域大小信息、重叠标志和2D定位标志从二维存储器20的有效存储区域中分配任务10所需要的使用区域。
图6所述为在分配使用区域过程中存储区域的状态转换。
使用区域分配单元42通过更新存储器管理表400,将处于状态E或F中的存储区域改变为处于状态A、B、C或D的任何一个的存储区域,从而分配使用区域。在图6中,状态E中存储区域转换到状态B或D。也就是,可以分配为规则区域的未使用区域可以用作允许重叠分配的规则区域,或可以用作不允许重叠分配的规则区域。状态F中的存储区域转换到状态A、B、C或D的任何一个。也就是,可以分配为2D区域的未使用区域可以用作允许重叠分配的2D区域或者规则区域,或可以用作不允许重叠分配的2D区域或者规则区域。
图7A至7D所述为存储区域的重叠分配。
使用区域分配单元42根据存储器管理表400查找具有由包括在区域分配请求中的区域大小信息所确定的大小的未使用区域作为候选区域,并且根据邻接区域的状态分配与该邻接区域重叠的使用区域,其中该邻接区域在低地址方向上与所查找到的候选区域接续。
在图7A的示例中,状态A中的使用区域与状态F中的未使用区域在其低地址方向上接续。当任务10已经请求分配状态A中的使用区域时,如果状态F中的未使用区域被分配为候选区域,就分配与该邻接区域重叠的使用区域。
在图7B的示例中,状态B中的使用区域与状态F中的未使用区域在其低地址方向上接续。当任务10已经请求分配状态A中的使用区域时,如果状态F中的未使用区域被分配为候选区域,就分配与该邻接区域不重叠的使用区域。
在图7C的示例中,状态A中的使用区域与状态F中的未使用区域在其高地址方向上接续。当任务10已经请求分配状态A中的使用区域时,如果状态F中的未使用区域被分配为候选区域,通过组合候选区域和该邻接区域,该使用区域被分配为状态A中的单一使用区域。
在图7D的示例中,状态A中的使用区域与状态F中的未使用区域在其高地址方向上接续。当任务10已经请求分配状态B中的使用区域时,如果状态F中的未使用区域被分配为候选区域,通过组合候选区域和该邻接区域,该使用区域被分配为状态A中的单一使用区域。
当输入区域释放请求,使用区域释放单元46从二维存储器20的使用区域中查找适于该区域释放请求的使用区域作为待释放区域,并将所查找到的区域释放为有效存储区域。其也将未使用区域释放为其它格式的未使用区域。
图8所述为在释放使用区域过程中存储区域的状态转换。
使用区域释放单元46通过更新存储器管理表400,将状态A、B、C、D、E或F中的存储区域改变为状态E或F的存储区域,从而分配使用区域。在图8中,状态A、C或F中存储区域转换到状态F。也就是,已经被分配为2D区域的使用区域或可以被分配为2D区域的未使用区域都可以被释放为能够被分配为2D区域的未使用区域。而且,状态B或D中的存储区域转换到状态E。也就是,已经被分配为规则区域的使用区域可以释放为能够被分配为规则区域的未使用区域。状态E转换到状态E或F。也就是,可以被分配为规则区域的未使用区域可以被释放为能够被分配为2D区域或规则区域的未使用区域。
存储器管理单元40具有与普通计算机相同的功能,其通过总线连接着CPU、ROM、RAM和I/F等。CPU激活存储在ROM的预定区域中的预定程序,并根据该程序执行分时方案中每一分配和释放使用区域的处理过程,如图9和10中的流程图所示。
首先将参照图9详细描述使用区域分配的处理过程。
图9所述为分配使用区域的过程中的流程图。
该处理过程是作为使用区域分配单元42和区域管理信息登记单元44实现的处理过程,并且当通过CPU执行时,其首先处理步骤S100,如图9中所示。
在步骤S100,确定是否已经输入了区域分配请求。如果确定已经输入了区域分配请求(是),该过程转到步骤S102,否则(否),其在步骤S100等待,直到输入了区域分配请求。
在步骤S102,输入区域大小信息作为参数,然后在步骤S104,输入重叠标志作为参数。该过程然后转到步骤S106,其中输入2D定位标志作为参数,并且该过程转到步骤S108。
在步骤S108,根据输入作为参数的2D定位标志,确定任务10所请求的使用区域(此后称之为请求区域)是否是2D区域。如果确定该请求区域是2D区域(是),该过程转到步骤S110。
在步骤S110,根据输入作为参数的重叠标志,确定请求区域是否是允许重叠分配的区域。如果确定请求区域是允许重叠分配的区域(是),该过程转到步骤S112。
在步骤S112,根据存储器管理表400从二维存储器20的有效存储区域中查找具有比由输入作为参数的区域大小信息所确定的大小更大的未使用区域(状态F)作为候选区域,并且划分所查找到的候选区域,得到所需大小的区域。该过程然后转到步骤S114。
在步骤S114,根据存储器管理表400查找与该大小减小的区域在低地址方向上接续的邻接区域,然后在步骤S116,从存储器管理表400中读取对应于所查找到的邻接区域的状态信息,并且该过程转到步骤S118。
在步骤S118,根据包括在状态信息中的2D定位标志和使用状态标志确定该邻接区域是否是2D区域或未使用区域(状态F),如果确定该邻接区域是2D区域或未使用区域(是),该过程转到步骤S120。
在步骤S120,根据包括在状态信息中的重叠标志确定该邻接区域是否是允许重叠分配的区域,如果确定该邻接区域是允许重叠分配的区域(是),该过程转到步骤S122。
在步骤S122,与该邻接区域重叠的使用区域被分配为2D区域,并且然后在步骤S124,将已经输入作为参数的包括重叠标志和2D定位标志的区域管理信息登记到存储器管理表400中。然后该过程转到步骤S126。
在步骤S126,从存储器管理表400中读取对应于该邻接区域的重叠计数器和对应于所分配的使用区域的重叠计数器,比较这两个重叠计数器,并且将具有较大值的一个重叠计数器加1。然后,在步骤S128,指向所分配的使用区域的起始指针传到请求任务10,并且整个处理结束,并恢复最初所发生的处理过程。
同时,如果在步骤S120确定该邻接区域不是允许重叠分配的区域(否),该过程转到步骤S130,其中大小减小的区域被分配为不与该邻接区域重叠的2D区域的使用区域。然后在步骤S132,将已经输入作为参数的包括重叠标志和2D定位标志的区域管理信息登记到存储器管理表400中,然后该过程转到步骤S128。
同时,如果在步骤S118确定该邻接区域不是2D区域或未使用区域(否),该过程转到步骤S130。
同时,如果在步骤S110确定该请求区域不是允许重叠分配的区域(否),该过程转到步骤S134,在那里根据存储器管理表400从二维存储器20的有效存储区域中查找具有比由输入作为参数的区域大小信息所确定的大小更大的未使用区域(状态F)作为候选区域,并且划分所查找到的候选区域以得到所需大小的区域。该过程然后转到步骤S130。
同时,如果在步骤S108确定该请求区域并不是2D区域(否),该过程转到步骤S136。
在步骤S136,根据输入作为参数的重叠标志,确定请求区域是否是允许重叠分配的区域。如果确定请求区域是允许重叠分配的区域(是),该过程转到步骤S138。
在步骤S138,根据存储器管理表400从二维存储器20的有效存储区域中查找具有比由输入作为参数的区域大小信息所确定的大小更大的未使用区域(状态E或F)作为候选区域,并且划分所查找到的候选区域以得到所需大小的区域。该过程然后转到步骤S140。
在步骤S140,根据存储器管理表400查找与被分成候选区域在低地址方向上接续的邻接区域,并且在步骤S142,从存储器管理表400读取对应于所查找到的邻接区域的状态信息,并且该过程转到步骤S144。
在步骤S144,根据包括在状态信息中的2D定位标志和使用状态标志,确定该邻接区域是否是规则区域或未使用区域(状态E或F),如果确定该邻接区域是规则区域或未使用区域(是),该过程转到步骤S146。
在步骤S146,根据包括在状态信息中的重叠标志确定该邻接区域是否是允许重叠分配的区域,如果确定该邻接区域是允许重叠分配的区域(是),该过程转到步骤S148。
在步骤S148,与该邻接区域重叠的使用区域被分配为规则区域,并且该过程转到步骤S124。
同时,如果在步骤S146确定该邻接区域不是允许重叠分配的区域(否),该过程转到步骤S150,其中不与该邻接区域重叠的大小减小的候选区域被分配为规则区域的使用区域,并且该过程转到步骤S132。
同时,如果在步骤S144确定该邻接区域不是规则区域或未使用区域(否),该过程转到步骤S150。
同时,如果在步骤S136确定该请求区域不是允许重叠分配的区域(否),该过程转到步骤S152,在那里根据存储器管理表400从二维存储器20的有效存储区域中查找具有比由输入作为参数的区域大小信息所确定的大小更大的未使用区域(状态E或F)作为候选区域,并且划分所查找到的候选区域以得到所需大小的区域。该过程然后转到步骤S150。
下面将参照图10详细描述释放使用区域的过程。
图10所述为释放使用区域的过程中的流程图。
该处理过程是作为使用区域释放单元46实现的处理过程,并且当通过CPU执行时,其首先处理步骤S200,如图10中所示。
在步骤S200,确定是否已经输入了区域释放请求。如果确定已经输入了区域释放请求(是),该过程转到步骤S202,否则(否),其在步骤S200等待,直到输入了该请求。
在步骤S202,根据存储器管理表400从二维存储器20的使用区域中查找适于该区域释放请求的使用区域作为待释放的区域。然后在步骤S204,对应于待释放区域的重叠计数器减1,并且该过程转到步骤S206。
在步骤S206,确定重叠计数器的值是否为0,并且如果确定该值为0(是),该过程转到步骤S208,其中将待释放区域释放为有效存储区域,并且整个处理结束,并恢复最初所发生的处理过程。
同时,如果在步骤S206确定重叠计数器的值不为0(否),整个处理结束,并恢复原始的处理过程。
下面将描述实施例的操作。
首先讨论的情况是任务10分配状态A中的使用区域。
当状态A中的使用区域待分配时,任务10的程序输出区域分配请求到存储器管理单元40,其包括指示存储区域应该被分配为2D区域的2D定位标志、指示允许重叠分配的重叠标志和区域大小信息。
一旦输入区域分配请求,存储器管理单元40通过步骤S108根据包括在区域分配请求中的2D定位标志确定该请求区域是否是2D区域。这里,由于任务10请求分配状态A中的使用区域,就可以确定请求区域是2D区域。
然后,通过步骤S110,根据包括在区域分配请求中的重叠标志,确定所请求区域是否是允许重叠分配的区域。这里,由于任务10请求分配状态A中的使用区域,可以确定该请求区域是允许重叠分配的区域。
然后,通过步骤112,根据存储管理表400,查找由包括在区域分配请求中的区域大小信息所确定大小的未使用区域作为候选区域。当查找到候选区域时,通过步骤S114,根据存储器管理表400查找与该候选区域在其低地址方向上接续的邻接区域。当查找到邻接区域时,通过步骤S116从存储器管理表400中读取对应于该邻接区域的状态信息。
然后,通过步骤S118和S120,根据该状态信息,确定该邻接区域是否是2D区域和未使用区域,以确定该邻接区域是否是允许重叠分配的区域。
如果邻接区域在状态A或F中,在确定步骤S118和S120确定该邻接区域是2D区域或未使用区域,并且是允许重叠分配的区域,从而通过步骤S122将与该邻接区域重叠的使用区域被分配为2D区域。
然后,通过步骤S124至S128,将分配使用区域的区域管理信息登记到存储器管理表400,对应于邻接区域的重叠计数器和对应于所分配使用区域的重叠计数器中较大的一个重叠计数器增1,并且指向所分配使用区域的起始指针传到请求任务10。
同时,在邻接区域处于状态C的情况下,在步骤S118和S120确定邻接区域是2D区域,并且是不允许重叠分配的区域,从而通过步骤S130将不与该邻接区域重叠的候选区域分配为2D区域的使用区域。
并且通过步骤S132和S128,将所分配使用区域的区域管理信息登记到存储器管理表400,并且指向所分配使用区域的起始指针传到请求任务10。
同时,在邻接区域处于状态B、D或E的情况下,在步骤S118确定邻接区域不是2D区域或未使用区域,从而通过步骤S130将不与该邻接区域重叠的候选区域分配为2D区域的使用区域。
然后通过步骤S132和S128,将所分配使用区域的区域管理信息登记到存储器管理表400,并且指向所分配使用区域的起始指针传到请求任务10。
接下来将描述的情况是任务10分配状态B中的使用区域。
当状态B中的使用区域待分配时,任务10的程序输出区域分配请求到存储器管理单元40,其包括指示存储区域应该被分配为规则区域的2D定位标志、指示允许重叠分配的重叠标志和区域大小信息。
一旦输入区域分配请求,存储器管理单元40通过步骤S108根据包括在区域分配请求中的2D定位标志,确定该请求区域是否是2D区域。这里,由于任务10请求分配状态B中的使用区域,就可以确定请求区域不是2D区域。
然后,通过步骤S136,根据包括在区域分配请求中的重叠标志,确定所请求区域是否是允许重叠分配的区域。这里,由于任务10请求分配状态B中的使用区域,可以确定该请求区域是允许重叠分配的区域。
然后,通过步骤138,根据存储管理表400,查找由包括在区域分配请求中的区域大小信息所确定大小的未使用区域作为候选区域。当查找到候选区域时,通过步骤S140,根据存储器管理表400查找与该候选区域在其低地址方向上接续的邻接区域。当查找到邻接区域时,通过步骤S142从存储器管理表400中读取对应于该邻接区域的状态信息。
然后,通过步骤S144和S146,根据该状态信息,确定该邻接区域是否是规则区域和未使用区域,以及确定该邻接区域是否是允许重叠分配的区域。
在邻接区域处于状态B、E或F的情况下,在步骤S144和S146确定该邻接区域是规则区域或者未使用区域,并且是允许重叠分配的区域,从而通过步骤S148将与该邻接区域重叠的使用区域分配为规则区域。
然后,通过步骤S124至S128,将分配使用区域的区域管理信息登记到存储器管理表400,对应于邻接区域的重叠计数器和对应于所分配使用区域的重叠计数器中较大的一个重叠计数器增1,并且指向所分配使用区域的起始指针传到请求任务10。
同时,在邻接区域处于状态D的情况下,在步骤S144和S146确定该邻接区域是规则区域,并且是不允许重叠分配的区域,从而通过步骤S150将不与该邻接区域重叠的候选区域分配为规则区域的使用区域。
并且通过步骤S132和S128,将所分配使用区域的区域管理信息登记到存储器管理表400,并且指向所分配使用区域的起始指针传到请求任务10。
同时,在邻接区域处于状态A或C的情况下,在步骤S144确定邻接区域不是规则区域,从而通过步骤S150将不与该邻接区域重叠的候选区域分配为规则区域的使用区域。
然后通过步骤S132和S128,将所分配使用区域的区域管理信息登记到存储器管理表400,并且指向所分配使用区域的起始指针传到请求任务10。
接下来将描述的情况是任务10分配状态C中的使用区域。
当状态C中的使用区域待分配时,任务10的程序输出区域分配请求到存储器管理单元40,该区域分配请求包括指示存储区域应该被分配为2D区域的2D定位标志、指示不允许重叠分配的重叠标志和区域大小信息。
一旦输入区域分配请求,存储器管理单元40通过步骤S108根据包括在区域分配请求中的2D定位标志,确定该请求区域是否是2D区域。这里,由于任务10请求分配状态C中的使用区域,就可以确定请求区域是2D区域。
然后,通过步骤S110,根据包括在区域分配请求中的重叠标志,确定所请求区域是否是允许重叠分配的区域。这里,由于任务10请求分配状态C中的使用区域,可以确定该请求区域不是允许重叠分配的区域。
然后,通过步骤134,根据存储管理表400,查找由包括在区域分配请求中的区域大小信息所确定大小的未使用区域作为候选区域。当查找到候选区域时,通过步骤S130,将不与该邻接区域重叠的候选区域分配为2D区域的使用区域。
然后,通过步骤S132和S128,将分配使用区域的区域管理信息登记到存储器管理表400,并且指向所分配使用区域的起始指针传到请求任务10。
接下来将描述的情况是任务10分配状态D中的使用区域。
当状态D中的使用区域待分配时,任务10的程序输出区域分配请求到存储器管理单元40,该区域分配请求包括指示存储区域应该被分配为规则区域的2D定位标志、指示不允许重叠分配的重叠标志和区域大小信息。
一旦输入区域分配请求,存储器管理单元40通过步骤S108根据包括在区域分配请求中的2D定位标志,确定该请求区域是否是2D区域。这里,由于任务10请求分配状态D中的使用区域,就可以确定请求区域不是2D区域。
然后,通过步骤S136,根据包括在区域分配请求中的重叠标志,确定所请求区域是否是允许重叠分配的区域。这里,由于任务10请求分配状态D中的使用区域,可以确定该请求区域不是允许重叠分配的区域。
然后,通过步骤152,根据存储管理表400,查找由包括在区域分配请求中的区域大小信息所确定大小的未使用区域作为候选区域。当查找到候选区域时,通过步骤S150,将不与该邻接区域重叠的候选区域分配为规则区域的使用区域。
然后,通过步骤S132和S128,将分配使用区域的区域管理信息登记到存储器管理表400,并且指向所分配使用区域的起始指针传到请求任务10。
现在将描述任务10如何应用使用区域。
如果所分配的使用区域是不与邻接区域重叠的区域,它可以在多个任务10中被应用而不需要具体的同步。另一方面,如果分配的使用区域是与邻接区域重叠的区域,在使用该区域之前应该获得一个信号量。
下面将描述重叠使用区域和分配使用区域的释放。
当重叠使用区域和分配使用区域待释放时,任务10的程序输出区域释放请求到存储器管理单元40。
一旦输入该区域释放请求,存储器管理单元40通过步骤S202根据存储器管理表400查找适于该区域释放请求的使用区域作为待释放区域。当查找到待释放区域时,通过步骤S204,对应于该区域的重叠计数器减1。
当重叠计数器的值在减1之后变为0时,通过步骤S208将该区域释放为有效存储区域。在这一点,如果邻接区域是未使用区域,该待释放区域和邻接区域组合成一个未使用区域。
当重叠计数器的值在减1之后大于0时,该待释放区域还不应该被释放,因为其可能会被任何其它的任务10使用。
如前所述,该实施例根据存储管理表400,查找由包括在区域分配请求中的区域大小信息所确定大小的未使用区域作为候选区域,从存储器管理表400中读取对应于与候选接区域在其低地址方向上接续的邻接区域的重叠标志,根据该重叠标志确定该邻接区域是否是允许重叠分配的区域;并且如果确定该区域允许重叠分配,就分配与该邻接区域重叠的使用区域。
这相比于常规惯例,就可以减少二维存储器20的使用量,因为如果不同任务10并不同时使用存储区域,就会利用另一任务10所使用的存储区域的重叠标志,通过允许重叠分配,分配与邻接区域重叠的使用区域。
另外,由于将分配与其邻接区域重叠的使用区域,连续地址上的区域可以被分配为使用区域。因此,对二维存储器20的访问会更有效率。
而且,该实施例根据包括在区域分配请求中的重叠标志确定请求区域是否是允许重叠分配的区域。如果确定请求区域及其邻接区域都是允许重叠分配的区域,该实施例分配与邻接区域重叠的使用区域,如果它们不是允许重叠分配的区域,其分配候选区域作为使用区域。
这使得可以分配明确指示允许重叠分配的区域,使得它们相互重叠,从而可以减少任务10中出现访问冲突的可能性。
而且,该实施例根据包括在区域分配请求中的2D定位标志确定该请求区域是否是2D区域。如果确定该区域是2D区域,其分配使用区域为2D区域,如果该区域不是2D区域,其分配使用区域为规则区域。
这就可以使得任务10的程序只通过提供包括指示存储区域应该作为2D区域分配的2D定位标志的区域分配请求,而不需要计算二维存储空间的最大宽度,就可以分配规则区域,也可以分配2D区域。从而该任务10的程序相比于常规程序可以被制作得相对简单。
而且,该实施例根据包括在区域分配请求中的重叠标志确定该请求区域是否是允许重叠分配的区域,并根据包括在区域分配请求中的2D定位标志确定该请求区域是否是2D区域。其从存储器管理表400中读取对应于邻接区域的2D定位标志,并根据该2D定位标志确定该邻接区域是否是2D区域。如果请求区域和邻接区域都是允许重叠分配的区域并且都是2D区域,该实施例将与该邻接区域重叠的使用区域分配为2D区域。
这就可以减少任务10中出现访问冲突和使用被不当格式化的使用区域的可能性,由于明确指示允许重叠分配和指示它们应该分配为2D区域的区域在分配中相互重叠。
另外,该实施例向存储器管理表400中登记指向所分配使用区域的起始指针和包括在区域分配请求中的区域管理信息,该区域管理信息包括2D定位标志和重叠标志。
这就可以使得任务10的程序只通过提供包括指示存储区域应该作为2D区域分配的2D定位标志、以及指示允许重叠分配的重叠标志的区域分配请求,就可以分配2D区域以及重叠使用区域,从而任务10的程序可以进一步简化。
而且,该实施例从存储器管理表400中读取对应于邻接区域的重叠计数器和对应于所分配的使用区域的重叠计数器,并将其进行比较,将具有较大值的重叠计数器增1。并且其根据存储器管理表400查找适于该区域释放请求的使用区域作为待释放区域,并从存储器管理表400中读取对应于待释放区域的重叠标志。根据该重叠标志,确定待释放区域是否是允许重叠分配的区域,如果确定该区域是允许重叠分配的区域,将对应于该区域的重叠计数器减1。当重叠计数器的值达到预定值,该实施例就将该区域释放为有效存储区域。
这使得重叠使用区域和分配使用区域的释放不会彼此影响。
在上面的实施例中,二维存储器20对应于发明1、2和8至10的存储器;起始指针对应于发明1、4、7、9或10的访问信息;并且重叠标志对应于发明1至4、6、7、9、或10的重叠信息。而且,2D定位标志对应于发明5至7的多维定位信息;2D区域对应于发明5或6的多维空间存储区域;以及步骤S100至S122、S130和S134至S152对应于发明1至7或9的使用区域分配部分,或发明10的使用区域分配步骤。
而且,在实施例中,步骤S124至S128和S132对应于发明1、4和7至9的区域管理信息登记部分,或发明10的区域管理信息登记步骤;步骤S108对应于发明6的第二请求区域确定部分;步骤S110和S136对应于发明3的请求区域确定部分或发明6的第一请求区域确定部分。而且步骤S112、S134、S138和S152对应于发明2或3的候选区域查找部分;步骤S118对应于发明6的第二邻接区域确定部分;以及步骤S120和S146对应于发明2、3或6的邻接区域确定部分。
而且,在实施例中,步骤S122和S148对应于发明2、3、6或8的重叠使用区域分配部分;步骤S130和S150对应于发明3的非重叠使用区域分配部分;以及步骤S200至S208对应于发明8的使用区域释放部分。而且,步骤S202对应于发明8的待释放区域查找部分;步骤S204至S208对应于发明8的使用区域释放部分。
虽然上面的实施例使用了二维存储器20,但是本发明并不限于此。相反,任何普通类型的存储器(与二维存储器相对的一维存储器)和其它扩展存储器都可以使用。
而且,虽然上面的实施例通过硬件和软件实现了图9和10的流程图所示的处理过程,但本发明并不限于此:这些处理过程可以只通过硬件实现。
而且,虽然在实施例中,通过执行预先存储在ROM中的控制程序来执行图9和10中的流程图所示的处理过程,但是本发明并不限于此。相反,描述这些过程的程序可以存储在存储介质中,并从该介质装载到RAM中,以执行该程序。
存储介质包括诸如RAM和ROM的半导体存储器介质、诸如FD和HD的磁存储的存储介质、诸如CD、CDV、LD和DVD的光读取存储器介质、诸如MO的磁存储/光读取的存储介质,以及可以被计算机读取的任何其它存储介质,不管是电的、磁的还是光学的。
而且,虽然上面的实施例将本发明的存储器管理设备、程序和方法应用到根据存储器管理表400对二维存储器20进行管理的情况,如图1中所示,但是本发明并不限于此。相反,可以不脱离本发明的范围,将本发明应用到其它情况。
Claims (8)
1.一种存储器管理设备,包括:
使用区域分配部分,其根据管理存储器使用状态的存储器管理表从所述存储器的有效存储区域中分配所需要的使用区域,其中所述使用区域分配部分包括:
候选区域查找部分,响应于包括指示所需的使用区域大小的区域大小信息的区域分配请求,根据所述存储器管理表从所述存储器的有效存储区域中查找具有由包括在区域分配请求中的区域大小信息所确定大小的区域作为候选区域,
邻接区域确定部分,用于从所述存储器管理表中读取对应于邻接区域的重叠信息,该邻接区域与所述候选区域查找部分所查找到的候选区域在地址上连续,并且根据该重叠信息确定所述邻接区域是否是允许重叠分配的区域,和
重叠使用区域分配部分,用于当所述邻接区域确定部分确定所述邻接区域允许重叠分配,就分配与所述邻接区域重叠的所述使用区域;和
区域管理信息登记部分,用于将区域管理信息登记到所述存储器管理表,该区域管理信息包括通过所述使用区域分配部分所分配的使用区域的访问信息;
其特征在于,所述区域管理信息包括重叠信息,其指示是否允许所述存储区域重叠分配;和
所述使用区域分配部分根据所述存储器管理表从所述存储区域中查找允许重叠分配的使用区域,并分配与所查找到的允许重叠分配的使用区域重叠的所述使用区域。
2.根据权利要求1的存储器管理设备,其中所述区域分配请求包括所述重叠信息,
所述使用区域分配部分进一步包括:
请求区域确定部分,用于根据包括在所述区域分配请求中的重叠信息确定所请求的使用区域是否是允许重叠分配的区域;和
非重叠使用区域分配部分,用于当所述请求区域确定部分确定所请求的使用区域不允许重叠分配时,就将所述候选区域查找部分所查找到的候选区域作为所述使用区域分配;和
如果所述请求区域确定部分和所述邻接区域确定部分都确定该区域允许重叠分配,所述重叠使用区域分配部分就分配与所述邻接区域重叠的所述使用区域。
3.根据权利要求2的存储器管理设备,其中所述区域管理信息登记部分将区域管理信息登记到所述存储器管理表中,其中区域管理信息包括由所述使用区域分配部分所分配的使用区域的访问信息,和包括在所述区域分配请求中的重叠信息。
4.根据权利要求1的存储器管理设备,其中所述区域分配请求包括指示所述存储区域是否应该被分配为虚拟多维空间区域的多维定位信息;和
所述使用区域分配部分根据包括在所述区域分配请求中的多维定位信息确定所请求的使用区域是否是虚拟多维空间区域,并且如果确定该区域是虚拟多维空间区域,将所述使用区域分配为考虑虚拟多维空间的最大空间大小的多维空间存储区域,并且如果确定该区域不是虚拟多维空间区域,其将所述使用区域分配为规则区域。
5.根据权利要求4的存储器管理设备,其中所述区域管理信息包括所述多维定位信息,
所述区域分配请求包括所述重叠信息;
所述使用区域分配部分进一步包括:
第一请求区域确定部分,用于根据包括在所述区域分配请求中的重叠信息确定所请求的使用区域是否是允许重叠分配的区域;
第二请求区域确定部分,用于根据包括在所述区域分配请求中的多维定位信息确定所请求的使用区域是否是虚拟多维空间区域;和
第二邻接区域确定部分,用于从所述存储器管理表中读取对应于所述邻接区域的多维定位信息,并根据所述多维定位信息确定所述邻接区域是否是虚拟多维空间区域;和
如果所述第一请求区域确定部分和所述邻接区域确定部分都确定该区域允许重叠分配,并且所述第二请求区域确定部分和所述第二邻接区域确定部分都确定该区域是虚拟多维空间区域,所述重叠使用区域分配部分将与该邻接区域重叠的所述使用区域分配为所述多维空间存储存储器区域。
6.根据权利要求5的存储器管理设备,其中所述区域管理信息登记部分将区域管理信息登记到所述存储器管理表中,其中区域管理信息包括由所述使用区域分配部分所分配的使用区域的访问信息,以及包括在所述区域分配请求中的多维定位信息和重叠信息。
7.根据权利要求1至6中之一的存储器管理设备,
其中所述区域管理信息包括重叠计数器,其指示所述存储区域中重叠的数目,
所述区域管理信息登记部分从所述存储器管理表中读取对应于所述邻接区域的重叠计数器和对应于所述重叠使用区域分配部分所分配的使用区域的重叠计数器,比较这两个重叠计数器,并将具有较大值的一个重叠计数器加1;
所述存储器管理设备进一步包括使用区域释放部分,用于将所述使用区域释放为有效区域;
所述使用区域释放部分包括:
待释放区域查找部分,用于响应区域释放请求,根据所述存储器管理表查找适于区域释放请求的使用区域,作为从所述存储器的使用区域中待释放的区域;和
重叠区域释放部分,用于将对应于由所述待释放区域查找部分所查找到的待释放区域的重叠计数器减1,和当所述重叠计数器的值达到预定值时,将所述待释放区域释放为有效存储区域。
8.一种存储器管理方法,包括步骤:
使用区域分配步骤,根据用于管理所述存储器使用状态的存储器管理表从所述存储器的有效存储区域中分配所需要的使用区域;和
区域管理信息登记步骤,将区域管理信息登记到所述存储器管理表中,该区域管理信息包括在所述使用区域分配步骤中所分配的使用区域的访问信息;
其特征在于,所述区域管理信息包括重叠信息,其指示是否允许所述存储区域重叠分配;和
所述使用区域分配步骤根据所述存储器管理表从所述存储区域中查找允许重叠分配的使用区域,并分配与所查找到的允许重叠分配的使用区域重叠的所述使用区域。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP335490/03 | 2003-09-26 | ||
JP2003335490A JP2005100262A (ja) | 2003-09-26 | 2003-09-26 | メモリ管理装置およびメモリ管理プログラム、並びにメモリ管理方法 |
JP335490/2003 | 2003-09-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1601486A CN1601486A (zh) | 2005-03-30 |
CN1332316C true CN1332316C (zh) | 2007-08-15 |
Family
ID=34191525
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100119873A Expired - Fee Related CN1332316C (zh) | 2003-09-26 | 2004-09-27 | 用于存储器管理的设备和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7404060B2 (zh) |
EP (1) | EP1519274A3 (zh) |
JP (1) | JP2005100262A (zh) |
CN (1) | CN1332316C (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006127106A (ja) * | 2004-10-28 | 2006-05-18 | Hitachi Ltd | ストレージシステム及びその制御方法 |
DE102005059593A1 (de) * | 2005-05-25 | 2006-11-30 | Robert Bosch Gmbh | Verfahren und Vorrichtung zur Umschaltung bei einem Speicher für ein Steuergerät |
JP4783179B2 (ja) * | 2006-03-07 | 2011-09-28 | 株式会社日立製作所 | エリア管理システム |
JP2008152470A (ja) * | 2006-12-15 | 2008-07-03 | Hitachi Ltd | データ処理システム及び半導体集積回路 |
US7818701B1 (en) * | 2006-12-22 | 2010-10-19 | Cypress Semiconductor Corporation | Memory controller with variable zone size |
KR101344475B1 (ko) * | 2007-01-05 | 2013-12-24 | 삼성전자주식회사 | 메모리 관리방법 및 장치 |
US7827286B1 (en) * | 2007-06-15 | 2010-11-02 | Amazon Technologies, Inc. | Providing enhanced access to stored data |
US7631122B1 (en) * | 2007-08-30 | 2009-12-08 | Nvidia Corporation | System and method for fast hardware atomic queue allocation |
US7865638B1 (en) | 2007-08-30 | 2011-01-04 | Nvidia Corporation | System and method for fast hardware atomic queue allocation |
US8321651B2 (en) * | 2008-04-02 | 2012-11-27 | Qualcomm Incorporated | System and method for memory allocation in embedded or wireless communication systems |
JP5092897B2 (ja) * | 2008-05-26 | 2012-12-05 | 富士通株式会社 | データ移行処理プログラム、データ移行処理装置およびデータ移行処理方法 |
JP5393813B2 (ja) * | 2012-01-27 | 2014-01-22 | 京セラドキュメントソリューションズ株式会社 | メモリー管理装置および画像処理装置 |
US9298600B2 (en) * | 2013-01-10 | 2016-03-29 | Avnera Corporation | Method and apparatus for dynamically allocating memory address space between physical memories |
US9990304B2 (en) * | 2015-11-13 | 2018-06-05 | Samsung Electronics Co., Ltd | Multimode storage management system |
US9940028B2 (en) * | 2015-11-13 | 2018-04-10 | Samsung Electronics Co., Ltd | Multimode storage device |
WO2020044671A1 (ja) * | 2018-08-30 | 2020-03-05 | ソニー株式会社 | ストレージコントローラ、ストレージシステムおよび情報処理システム |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1151548A (zh) * | 1995-12-01 | 1997-06-11 | 合泰半导体股份有限公司 | 存储器查表方法及装置 |
WO2000045270A1 (en) * | 1999-01-28 | 2000-08-03 | Infineon Technologies, Ag | Techniques for improving memory access in a virtual memory system |
WO2000045270A2 (en) * | 1999-01-28 | 2000-08-03 | Infineon Technologies Ag | Techniques for improving memory access in a virtual memory system |
JP2002222117A (ja) * | 2000-11-22 | 2002-08-09 | Seiko Epson Corp | メモリの使用方法、2次元データ・アクセス・メモリ、及び演算処理装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2127994B (en) | 1982-09-29 | 1987-01-21 | Apple Computer | Memory management unit for digital computer |
DE3781406T2 (de) | 1987-06-09 | 1993-04-01 | Ibm | Steuerungsschema fuer segmentierte puffer, gegruendet auf gemeinsam genutzter referenzzaehlung. |
JPH02311935A (ja) * | 1989-05-29 | 1990-12-27 | Fuji Photo Film Co Ltd | メモリカードの記憶管理方式 |
CN1158668A (zh) | 1994-08-10 | 1997-09-03 | 摩托罗拉公司 | 存储器件中存储数据的方法和系统 |
US5689702A (en) * | 1995-06-07 | 1997-11-18 | Microtec Research, Inc. | Flexible data structure layout for data structure including bit-field data members |
GB2313742A (en) * | 1996-05-28 | 1997-12-03 | Motorola Inc | Channel allocation in a cellular communication system |
US6058460A (en) | 1996-06-28 | 2000-05-02 | Sun Microsystems, Inc. | Memory allocation in a multithreaded environment |
WO2000005652A1 (en) | 1998-07-24 | 2000-02-03 | Sun Microsystems, Inc. | Method and apparatus for achieving deterministic memory allocation response in a computer system |
US6535969B1 (en) | 2000-06-15 | 2003-03-18 | Lsi Logic Corporation | Method and apparatus for allocating free memory |
US6505275B1 (en) | 2000-07-24 | 2003-01-07 | Sun Microsystems, Inc. | Method for scalable memory efficient thread-local object allocation |
JP3832341B2 (ja) | 2001-12-27 | 2006-10-11 | 日本電気株式会社 | メモリプール管理方式 |
-
2003
- 2003-09-26 JP JP2003335490A patent/JP2005100262A/ja active Pending
-
2004
- 2004-09-20 US US10/943,851 patent/US7404060B2/en not_active Expired - Fee Related
- 2004-09-23 EP EP04022645A patent/EP1519274A3/en not_active Withdrawn
- 2004-09-27 CN CNB2004100119873A patent/CN1332316C/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1151548A (zh) * | 1995-12-01 | 1997-06-11 | 合泰半导体股份有限公司 | 存储器查表方法及装置 |
WO2000045270A1 (en) * | 1999-01-28 | 2000-08-03 | Infineon Technologies, Ag | Techniques for improving memory access in a virtual memory system |
WO2000045270A2 (en) * | 1999-01-28 | 2000-08-03 | Infineon Technologies Ag | Techniques for improving memory access in a virtual memory system |
JP2002222117A (ja) * | 2000-11-22 | 2002-08-09 | Seiko Epson Corp | メモリの使用方法、2次元データ・アクセス・メモリ、及び演算処理装置 |
Also Published As
Publication number | Publication date |
---|---|
EP1519274A2 (en) | 2005-03-30 |
JP2005100262A (ja) | 2005-04-14 |
CN1601486A (zh) | 2005-03-30 |
EP1519274A3 (en) | 2006-11-02 |
US20050097297A1 (en) | 2005-05-05 |
US7404060B2 (en) | 2008-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1332316C (zh) | 用于存储器管理的设备和方法 | |
US8150946B2 (en) | Proximity-based memory allocation in a distributed memory system | |
US20040078339A1 (en) | Priority based licensing | |
US5454108A (en) | Distributed lock manager using a passive, state-full control-server | |
JP3358655B2 (ja) | ディスクアレイ装置におけるキャッシュメモリ管理方法 | |
CN1728118B (zh) | 资源分配管理方法和设备 | |
US20110145831A1 (en) | Multi-processor system, management apparatus for multi-processor system and computer-readable recording medium in or on which multi-processor system management program is recorded | |
JPH08123763A (ja) | 分散処理システムにおけるメモリ割り当て方式 | |
EP2564321A2 (en) | Memory usage scanning | |
GB2121995A (en) | Method of and apparatus for assigning software resources to memory devices | |
GB2381626A (en) | Controlling access to multiple isolated memories in an isolated execution environment | |
CN102866923A (zh) | 对称多核的高效一致性侦听过滤装置 | |
US20100153678A1 (en) | Memory management apparatus and method | |
JP2000029776A (ja) | メモリ要求取消し方法 | |
JPH10283230A (ja) | ファイルデータ格納装置およびプログラムを記録した機械読み取り可能な記録媒体 | |
US20030014599A1 (en) | Method for providing a configurable primary mirror | |
CN115563123A (zh) | 一种基因注入分区键的分库分表方法 | |
CN110163731B (zh) | 中介服务超市的虚拟竞价室的建立方法、系统及存储介质 | |
US12056129B2 (en) | Computer system and query processing method | |
JPS63109553A (ja) | メモリ管理方式 | |
CN107370691B (zh) | 一种资源访问方法和终端 | |
US20070162638A1 (en) | Generic DMA memory space mapping | |
JPS61109160A (ja) | システム間共用ボリユ−ムの領域管理制御方式 | |
JPS6364146A (ja) | 論理空間管理方式 | |
JPH02304615A (ja) | 並列ディスク制御バッファの割当て方式 |
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: 20070815 Termination date: 20160927 |
|
CF01 | Termination of patent right due to non-payment of annual fee |