分区管理装置、分区管理方法以及程序的制作方法

文档序号:6359612阅读:133来源:国知局
专利名称:分区管理装置、分区管理方法以及程序的制作方法
技术领域
本发明涉及管理存储装置的分区的分区管理装置、分区管理方法以及程序。
背景技术
一直以来,作为用于管理存储在硬盘等存储装置中的数据的方式,例如采用FAT(File Allocation Tables :文件分配表)或 NTFS (NT File System :NT 文件系统)等文件系统。
图IA是说明目前采用的硬盘等外部存储装置中的分区分配的图。如图IA所示,例如外部存储装置306的存储区域通过未图示的盘分配程序等实用程序分配4个分区I 4 (191、192、193、194),并分别分配到某文件系统中。在分区的开头配置有主引导记录195,该主引导记录195具备存储有分区的管理数据的分区管理表195a。如在图IA中例不关于分区编号3的分区信息196那样,分区管理表195a包含分区编号196a、开始位置196b、分区尺寸196c的记录。在分区编号196a中存储有识别分区的分区编号,图示的例子是3。在开始位置中存储有分区的开头地址信息,图示的例子省略了其内容。在分区尺寸196c中存储有分区的分配单位区域的个数,图示的例子是52。针对各个分区中的文件的盘的分配管理依赖于分配各个分区的文件系统特有的分配方法,因而非常烦杂。例如,根据FAT按照每个文件保持表示已进行分配的块的链接列表。另外,根据NTFS,按照每个文件保持关于已进行分配的块的开始位置和连续块数的信肩、O为了解决这些文件系统中的分配管理的问题,例如提出了与在下述专利文献I公开的主体系统相关的技术。根据主体系统,按照由2k构成的尺寸来分割区域进行分配管理。没有使用假想存储方式的存储器管理系统中的存储区域分配,采用基本的主体系统。图IB是说明主体系统的分配原理的图。图IB所示的是尺寸为23=8的分配区域490和与其对应的树结构体580、以及表示与树结构体580的节点对应的区域是否是使用中的比特图400。分配区域490例如是图IA例示的分区I 4等。树结构体580是使将分配区域490按照二分之一尺寸依次分割到分配单位尺寸而得到的区域关系以阶层方式模型化而得到的。当设分配单位尺寸的区域的阶层为层级I时,在图示的例子中,根节点的层级为4。树结构体580的根节点480如虚线箭头所示与分割前的分配区域490整个的区域(层级4的区域)对应,记载在节点内的“8”与对应的分配区域490的尺寸相当。另外,括号内的数字是识别同一层级内的区域的层级内编号。利用链接540与根节点480连接的节点440和利用链接541与根节点480连接的节点441与对分配区域490进行二分割后的区域(层级3的区域)对应。各个区域的尺寸如图所示为4。在节点440的下位存在利用链接520连接的尺寸2的节点420和利用链接521连接的尺寸2的节点421。同样,在节点441的下位存在利用链接522连接的尺寸2的节点422和利用链接523连接的尺寸2的节点423。这4个节点与层级2的区域对应。在节点420的下位存在利用链接510连接的尺寸I的节点410和利用链接511连接的尺寸I的节点411。同样,在节点421的下位存在利用链接512连接的尺寸I的节点412和利用链接513连接的尺寸I的节点413,在节点422的下位存在利用链接514连接的尺寸I的节点414和利用链接515连接的尺寸I的节点415,在节点423的下位存在利用链接516连接的尺寸I的节点416和利用链接517连接的尺寸I的节点417。这8个节点与层级I的区域对应。根节点480以外的节点与对父节点的对应区域进行二分割后的区域之一对应。因此,各个层级的区域尺寸的总和与分配区域490的尺寸一致。图IB所示的比特图400如虚线箭头所示,具有与树结构体580的各个节点对应的比特值。比特图400的标号408所示的层级4的层级内编号409所示的比特位置的比特值表示层级4的区域是否是使用中,标号404所示的层级3的层级内编号O、I的比特值表示、相应的区域是否是使用中。同样,标号402所示的层级2的层级内编号0 3表示层级2的各个区域是否是使用中,标号401所示的层级I的层级内编号0 7表示层级I的各个区域是否是使用中。在图IB所示的例子中,表示在层级4的层级内编号O、层级3的层级内编号O、层级2的层级内编号O、层级I的层级内编号0中比特“I”成立,不能重新使用与该比特位置对应的整个区域。即,如在层级I的层级内编号0中表示其状态那样,与节点410对应的尺寸I的区域是使用中,因而表示不能直接使用包含该区域的更大尺寸的区域。根据上述主体系统,在分配某大小的文件和存储区域时,从与其大小相等或者超过其大小的由2k构成的尺寸的区域中搜索空区域进行分配、释放时,返回到该尺寸的空区域组即可,因而文件和存储区域的分配、释放以及区域的管理非常容易。现有技术文献专利文献专利文献I :日本特开平7-28693号公报

发明内容
发明要解决的问题但是,根据上述主体系统,以2的幂乘单位来分配区域,因而例如在分配2. IGB的文件时,需要4GB的区域,无论文件分配后的块是否产生没有写入数据的区域,都无法在现有的文件系统中对该区域进一步追加文件,从而不能有效地使用区域。另外,即使例如整个存储装置的存储容量是127GB,也必须将对请求存储区域的请求方分配的物理的或者逻辑的区域即分区作为最大64GB的分区进行管理。S卩,根据主体系统,以2的幂乘单位来分配区域,因而文件和存储区域的分配、释放以及区域的管理非常容易,但是,没有进行从2的幂乘尺寸的区域中取得不是2的幂乘尺寸的区域时的剩余区域的管理以及从不是2的幂乘尺寸的区域中取得2的幂乘尺寸的区域时的剩余区域的管理,因而具有不能有效地灵活应用区域这样的课题。因此,本发明的目的是提供如下的技术在从2的幂乘尺寸的区域中取得不是2的幂乘尺寸的区域时和从不是2的幂乘尺寸的区域中取得2的幂乘尺寸的区域时,能够管理剩余区域,另外,当区域管理单元向区域分配文件和存储区域时,可通过高效的方法来有效地灵活应用区域。用于解决问题的手段根据本发明的一个方式,取得分区的尺寸,在利用互不相同的2的幂乘的和与分区的分配单位尺寸之积表示分区的尺寸时,将构成该和的各个2的幂乘尺寸的区域作为主区域,按照该尺寸的顺序连续分配到分区,由此划分分区,生成多层划分分配表,该多层划分分配表与将主区域依次分割成二分之一后的尺寸的各个尺寸区域和主区域对应地,存储表示各个尺寸区域和主区域各自的文件分配状态的分配信息,根据多层划分分配表中存储的分配信息,管理向区域分配文件。然后,为了实现基于上述分配和多层划分分配表的文件分配管理,假想地取得包含已取得上述尺寸的实体分区的具有最小的2的幂乘与分区的分配单位尺寸之积的尺寸的假想分区,将该假想分区如主体系统那样依次划分成二分之一的尺寸,生成存储分配信息的多层划分分配表,该分配信息表示与实体分区对应的各个尺寸区域和主区域各自的文 件分配状态。然后,当将规定区域尺寸的2的幂乘的指数设为该区域的划分层级时,多层划分分配表按照区域的划分层级顺序,在同一划分层级中按照区域在分区内的配置顺序存储区域的分配信息,按照分配信息的存储顺序分配用于识别分配信息相应的区域的识别编号即划分编号,采用该划分编号管理区域的分配。并且,多层划分分配表不具有由于从假想分区开始划分而产生的与实际作为分区不存在的区域对应的区域的分配信息。另外,根据本发明的其它方式,在被请求分配的文件的尺寸是划分层级不同的区域的尺寸之和时,搜索比该划分层级的最大层级大I的划分层级的空区域即尺寸比分配请求尺寸大的一次分配区域,将一次分配区域分割成二次分配区域和作为剩余区域的相邻多层区域,将与二次分配区域的各个区域对应的多层划分分配表的分配状态设定为使用中,将与构成相邻多层区域的区域对应的多层划分分配表的分配状态设定为空候选状态,其中,所述二次分配区域是按照划分层级的顺序连续分配划分层级不同的区域而得到的区域,所述相邻多层区域是按照与分配二次分配区域的划分层级不同的区域的划分层级的顺序相反的顺序,连续分配划分层级不同的区域而得到的区域。发明效果根据本发明,以2的幂乘尺寸的组合来管理分区,因而能够高效地、无浪费地且有效地管理任意尺寸的分区,利用已划分分区的各个尺寸的区域进行分配管理,因此,对连续的区域无浪费地进行文件的分配,从而能够实现区域的有效灵活应用。


图IA是说明外部存储装置中的分区分配的图。图IB是说明主体系统的分配原理的图。图2A是说明本发明一个实施方式中的分区管理的概念的图。图2B是说明本发明一个实施方式中的分配系统的软件和硬件环境例的图。图2C是说明本发明一个实施方式中的硬件结构例的图。
图3是说明本发明一个实施方式中的与分区尺寸对应的分区的初始化状态例的图。图4A是说明本发明一个实施方式中的对分区初始化的前级处理流程例的图。图4B是说明本发明一个实施方式中的对分区初始化的后级处理流程例的图。图4C是说明本发明一个实施方式中的按照划分层级对多层划分分配表初始化的处理流程例的图。图5是说明进行区域分配的整个处理的概括处理流程的图。图6是说明搜索分配请求划分层级的空区域并取得空区域的划分编号的处理流程例的图。
图7A是说明搜索包含分配请求划分层级的尺寸的空区域并取得空区域的划分编号的处理流程例的图。图7B是利用具体例子来说明分配请求划分层级具有空区域时的区域搜索的图。图7C是利用具体例子来说明分配请求划分层级没有空区域时的区域搜索的图。图8A是说明对虚拟分配区域进行多层划分而得到一次分配区域的处理流程例的图。图SB是利用具体例子来说明对虚拟分配区域进行多层划分而得到一次分配区域的处理的图。图9是说明搜索分配请求划分层级的空候选区域并取得空候选区域的划分编号的处理流程例的图。图IOA是说明搜索包含分配请求划分层级的尺寸的空候选区域并得到空候选区域的划分编号的处理流程例的图。图IOB是说明将分配状态是空候选的虚拟分配区域划分成多层区域并得到一次分配区域的处理流程例的图。图IlA是说明对一次分配区域进行多层划分而得到分配请求划分的二次分配区域的前级处理流程例的图。图IlB是说明对一次分配区域进行多层划分而得到分配请求划分的二次分配区域的后级处理流程例的图。图IlC是利用具体例子来说明对一次分配区域进行多层划分而得到分配请求划分的二次分配区域的处理的图。图12是说明释放分配区域并尝试连接空区域的整个处理的概括处理流程例的图。图13是说明利用划分编号来检索多层划分管理表并求出与划分编号对应的划分层级的处理流程例的图。图14A是说明尝试释放包含在一次分配区域内的区域和连接空区域的处理流程例的图。图14B是利用具体例子来说明尝试释放包含在一次分配区域内的区域和连接空区域的处理的图。图15是说明求出分配区域内的分割分配状况并压入分割分配状况堆栈的处理流程例的图。
图16是说明尝试释放划分编号指向的划分对的处理流程例的图。图17A是说明尝试连接一次分配区域与相邻的空区域并使上位区域的分配状态是空的处理流程例的图。
图17B是利用具体例子来说明尝试连接一次分配区域与相邻的空区域并使上位区域的分配状态是空的处理的图。图17C是说明尝试释放划分编号指向的划分对的处理流程例的图。图18A是说明本发明一个实施方式中的分区管理装置的功能块结构例的图。图18B是说明本发明一个实施方式中的区域分配单元的功能块结构例的图。图18C是说明本发明一个实施方式中的区域释放单元的功能块结构例的图。
具体实施例方式以下,参照附图来详细说明本发明的优选实施方式。图2A是说明本发明一个实施方式中的分区管理的概念的图。参照图2A来说明本发明一个实施方式中的分区管理的概念,并且定义与本发明的分区管理相关的一些用语。首先,预先进行分区的定义。在本发明中,如参照图IA说明的那样,“分区”是指预先分配的区域,是最初分配的区域。在本发明中,将分区已经取得作为前提。分区在本发明中是对请求存储区域的请求方分配的物理的或者逻辑的区域,请求方和执行分配的主体没有是文件系统还是盘分配程序这样的限制。另外,本发明中的分区不限于外部存储装置的存储区域,例如可以是后面参照图2C说明的数据存储装置308中包含的各种存储装置的预先分配的区域。此外,预先进行本发明所述的存储区域的定义。存储区域是由请求分配分区区域的请求方进行请求,并利用分区管理装置对请求方分配的分区内的区域。如果请求方是文件系统,则利用文件系统将分配给文件系统的存储区域作为文件的存储区域使用。在以下的说明中,作为请求方举例说明文件系统,因而采用分配文件这样的表达或分配文件和存储区域这样的表达。“区域”是指分配后的区域。分区是预先分配的区域,因而是区域之一,是区域中的特定区域。将区域分割成具有2的幂乘与分配单位区域之积的尺寸的多个区域称作“多层划分”。另外,将多层划分后的区域称作“多层区域”。此外,在以下的说明中省略了关于分配单位区域的表述,关于区域的尺寸有时仅使用2的n乘的尺寸等表述。另外,为了使表述简化,例如将在图IA例示的分区编号196a中存储的值3称作分区编号196a那样,有时用该存储区域的名字来称呼存储区域中存储的或者设定的值。以下,对比关于区域的用语和关于与其对应的分区的用语进行定义。“划分”是指分配区域或者分割区域后进行分配,有时也称作“分配”。区域是区域或分区。特别地,将如下的情况称作“主划分”,该情况是当利用相互不同的2的幂乘和来表示分区的尺寸时,按照该尺寸的顺序将构成该和的各个2的幂乘尺寸的区域连续分配到分区,由此划分分区。另外,将通过主划分分配的区域称作“主区域”。主划分在本发明中是针对分区的初始分配。在以下的说明中,假定主区域是从区域的开头按照尺寸从大到小的顺序依次进行分配的,但是,根据后面的说明,本领域的普通人员可知,即使与其相反按照尺寸从小到大的顺序依次进行分配也能够实施本发明。在图2A的例示中,分区690整体的尺寸是11,划分成尺寸是23=8的主区域698、尺寸是21=2的主区域692以及尺寸是20=1的主区域691。换言之,将主区域698、692、691初始分配到分区690。将基于划分或主划分的区域或主区域的分配尺寸即2的幂乘的指数称作“划分层级”。图2A所示的主区域698、692、691各自的划分层级是3、1、0。当利用上述定义的用语进行说明时,作为本发明原理的分区管理方法将分区连续地划分成分配有互不相同的2的幂乘个分区的分配单位区域的区域,将区域作为连续分配的区域进行管理。 在本发明中,假想地取得包含分区的最小的2的幂乘尺寸的假想分区。有时将该假想分区的假想取得称作假想分配。如图2A的虚线箭头7160a所示,假想分配包含尺寸为11的分区690的尺寸为16的假想分区690a。为了表示假想分区690a的分配是假想的,利用虚线矩形框来表现假想分区690a。并且,如图所示,在假想分区690a中假想地初始分配有尺寸为16的主区域6916。主区域6916是假想分配的,因而节点6160与假想分区690a同样用虚线矩形框来表现。另外,在图2A中记述有将与假想分配上述主区域6916的主划分对应的节点6160作为根节点的树结构体790和将与树结构体790的节点对应的分配状态缩减成比特图的表示区域的分配状态的分配比特图600。根节点6160如虚线箭头7160所示,与分配划分层级4的整个主区域6916的主划分(以下有时称作主划分7160)对应。树的结构与图IB所述的树结构体580的结构的相同点是都为二等分树。根节点6160内记载的“16”与对应的主区域6916的尺寸相当。另外,括号内的数字是识别按照各划分层级的每个区域对假想分区690a进行多层划分的各个划分(有时称作划分单元)的划分编号。与最大尺寸的主区域6916对应的主划分7160的划分编号是I。此外,以下,划分编号有时称作利用以该划分编号识别的划分进行划分的区域的划分编号。即,改变成主划分7160的划分编号这样的表现,有时称作主区域6916的划分编号。另外,有时将利用某划分编号的划分单元进行划分的区域称作该划分编号的区域。利用链接780与根节点6160连接的节点680和利用链接781与根节点6160连接的节点681对应于对主区域6916进行二分割后分配划分层级3且尺寸为8的区域的划分。各个划分编号是与上一位划分层级4的节点对应的划分编号的末尾I后的2和3。在节点680的下位存在利用链接740连接的尺寸4的节点640和利用链接741连接的尺寸4的节点641。同样,在节点681的下位存在利用链接742连接的尺寸4的节点642和利用链接743连接的尺寸4的节点643。这4个节点与划分层级2的区域的划分对应。另外,与这4个节点对应的划分编号是与作为上一位划分层级的划分层级3的节点对应的划分编号末尾的编号3后的4 7。在节点640的下位存在利用链接720连接的尺寸2的节点620和利用链接721连接的尺寸2的节点621。同样,在节点641的下位存在利用链接722连接的尺寸2的节点622和利用链接723连接的尺寸2的节点623。另外,在节点642的下位存在利用链接724连接的尺寸2的节点624和利用链接725连接的尺寸2的节点625。此外,在节点643的下位存在利用链接726连接的尺寸2的节点626和利用链接727连接的尺寸2的节点627。这8个节点与划分层级I的区域的划分对应。另外,与这8个节点对应的划分编号是与作为上一位划分层级的划分层级2的节点对应的划分编号末尾的编号7后的8 15。在节点620的下位存在利用链接710连接的尺寸I的节点610和利用链接711连接的尺寸I的节点611。同样,在节点621的下位存在利用链接712连接的尺寸I的节点612和利用链接713连接的尺寸I的节点613,在节点622的下位存在利用链接714连接的尺寸I的节点614和利用链接715连接的尺寸I的节点615,在节点623的下位存在利用链接716连接的尺寸I的节点616和利用链接717连接的尺寸I的节点617。此外,在节点624的下位存在利用链接718连接的尺寸I的节点618与利用链接719连接的尺寸I的节点619,在节点625的下位存在利用链接720连接的尺寸I的节点6110和利用链接721连接的尺寸I的节点6111,在节点626的下位存在利用链接722连接的尺寸I的节点6112和利用链接723连接的尺寸I的节点6113,在节点626的下位存在利用链接724连接的尺寸I的节点6114和利用链接725连接的尺寸I的节点6115。这16个节点与划分层级0的区域的划分对应。另外,与这16个节点对应的划分编 号是与作为上一位划分层级的划分层级I的节点对应的划分编号末尾的编号15后的16 31。树结构体790中的与根节点6160同样地相当于假想分配的区域的节点681、节点642、节点643、节点625、节点626、节点627、节点6111、节点6112、节点6113、节点6114、节点6115与根节点6160同样地用虚线矩形框来表现。另外,与主区域698、主区域692以及主区域691分别对应的节点680、节点624以及节点6110用粗线矩形框来表现。接着,对本发明一个实施方式的划分编号的性质进行说明。首先,当给出作为存储管理对象的分区的尺寸时,根据该尺寸进行假想分区,针对假想分区按照划分层级进行多层划分。在图2A的例子中,当给出尺寸为11的分区690时,可假想取得尺寸为16的假想分区690a,生成与假想分区690a对应的树结构体790。然后,在同一划分层级内将左侧设为小编号,可从树结构体最上位的划分层级的节点向下位的节点如图2A所不唯一地赋予划分编号。然后,当通过管理每个划分层级的划分编号来给出划分编号时,可求出通过以该划分编号识别出的划分单元划分出的区域尺寸即划分层级,此外,可根据该划分层级的开头划分编号与相应划分编号之差,求出作为上述划分单元的分配对象的区域在分区上的位置。图2A所示的比特图600如虚线箭头所示,具有将与树结构体780的各个节点对应的分配状态缩减成比特图的比特值。在图2A的例示中,2比特的值与各个节点对应。后面将会详细说明比特图600的比特值。这里,以下简单说明图2A的例示。分配比特图600的比特值表示与具有各个划分编号的节点对应的区域在初始分配结束时的分配状态。标号6016所示的划分层级4的比特位置即划分编号609的值是I的比特位置的比特值11表示划分编号I的划分的区域是假想分配的区域(以下,有时称作假想区域)。此外,不需要管理假想区域,因此,在后面的说明中,假定不具有假想区域的管理信息,作为假想区域以外的区域(以下,有时简称作区域。另外,有时称作实体区域)的状态管理信息,利用比特值11来表示使用中。标号608所示的划分层级3的比特位置即划分编号609的值是2的比特位置的比特值00表示划分编号2的划分的区域为空。另外,标号608所示的划分层级3的比特位置即划分编号609的值是3的比特位置的比特值11表示相应的区域是假想区域。同样,标号604所示的划分层级2的比特位置即划分编号4、5的比特值10表示相应的区域的分配状态为保留。标号604所示的划分层级2的比特位置即划分编号6、7的比特值11表示相应的区域是假想区域。·将标号602所示的划分层级I的划分编号8 11作为比特位置的比特值表示相应的区域的分配状态为保留,将划分编号12作为比特位置的比特值表示相应的区域的分配状态为空。另外,将划分编号13 15作为比特位置的比特值表示相应的区域是假想区域。将标号601所示的划分层级0的划分编号16 25作为比特位置的比特值表示相应的区域的分配状态为保留,将划分编号26作为比特位置的比特值表示相应的区域的分配状态为空。另外,将划分编号27 31作为比特位置的比特值表示相应的区域是假想区域。分配状态的空和保留的区别与对分配请求的尺寸的空区域进行分配时的优先位次相关。即,即使实质上是空状态的区域,也可以从分配状态是空的区域进行使用。后面将会说明其详细内容。图2B是说明本发明一个实施方式的分配系统的软件和硬件环境例的图。分配系统100由初始化部101和多层划分管理部102构成。后面将会详细说明初始化和多层划分管理。初始化部101接受例如来自盘分配程序或者文件系统的初始化部这样的初始化程序201的包含分区尺寸的初始化请求,对分配给构成数据存储装置308的例如主存储装置305、外部存储装置306、经由通信装置访问的远方存储装置307等(以下,有时简称作存储装置)的分区的多层划分管理信息进行初始化。多层划分管理部102根据来自文件系统202的包含分配请求尺寸的区域的分配请求写入多层划分管理信息,由此执行分区的划分即区域的分割分配,读出已写入的多层划分管理信息,将包含分配划分编号的分配结果返回到文件系统202。文件系统202接受来自利用应用程序/OS等文件的系统200的文件操作请求,当该文件操作请求需要向文件分配区域时,对上述分配系统100的多层划分管理部102进行包含分配请求尺寸的分配请求并接收分配结果,指定从分配系统100的多层划分管理部返回的划分编号作为分配划分编号,对文件操作系统203进行文件的操作请求。文件操作系统203利用指定的划分编号取得由多层划分管理部102分配的区域地址,作为针对存储装置中存储的文件的文件操作执行数据的写入或者数据的读出,将操作结果返回到文件系统202。文件系统202将从文件操作系统203返回的操作结果作为文件操作响应返回到利用应用程序/OS等文件的系统200。即使文件系统202和文件操作系统203是现有的系统,也可以通过调整与本发明的分配系统100之间的接口来使用本发明的分配系统100。另外,虽然未描述利用应用程序/OS等文件的系统200,但是初始化程序201也同样可应用现有的系统。因此,省略关于这些程序、系统的说明。图2C是说明本发明一个实施方式中的硬件结构例的图。通过至少具备中央处理装置302和高速缓冲存储器303的数据处理装置301,采用数据存储装置308来实施本发明一个实施方式的存储装置的分区管理以及针对文件的区域分配释放处理。数据存储装置308包含后面说明的对每个划分层级的区域进行多层管理的多层划分管理表309、保持每个划分的分配状态的多层划分分配表310以及作为管理对象的分区311。如图2C所示,数据存储装置308可通过主存储装置305、外部存储装置306或它们的组合来实现,或者还可以采用经由通信装置307连接的配置于远方的装置。即,还可以将主存储装置305作为数据处理装置301内的装置,可认为多数情况下主存储装置305具有多层划分分配表310和多层划分管理表309,将分区311分配给外部存储装置306,但是,由后面的说明可知,即使在将分区分配给主存储装置305时也能够适用 本发明。在图2C的例示中,主存储装置305、外部存储装置306以及通信装置307利用一根总线304与数据处理装置301连接,但连接方法不仅限于此。另外,虽然没有特别地图示,但为了在后面的处理中使用在处理途中得到的各种值而采用与各个处理相应的临时存储区域是显然的。并且,在以下的说明中,有时将临时存储区域中存储的或设定的数据的名字作为该临时存储区域的名字,相反,有时将临时存储区域的名字作为该临时存储区域中存储的或者设定的数据的名字。接着,参照图3、图4A 图4C来说明本发明一个实施方式中的多层划分管理信息的初始化。此外,有时还将多层划分管理信息的初始化表述为分区的初始化。图3是示出与分区尺寸对应的分区的初始化状态例的说明图。首先,如在图2B的说明中所述的那样,在对文件系统分配分区后,接受来自初始化程序的包含该分区的分区尺寸的初始化请求,由此通过分配系统的初始化部来进行分区的初始化。在图3所示的分区尺寸120中,分配给该文件系统且包含在分区311的初始化请求中的分区尺寸“52”以2进制的形式表示,52=25+24+22,因而第2比特、第4比特以及第5比特是“I”。根据从该初始化程序接收到的分区尺寸生成分区结构主划分表130。分区结构主划分表130由记录构成,该记录由如其后缀0 7所示与划分层级对应的I比特组成,在图3的例示中,具有与从划分层级0到分区结构主划分表最上位的划分层级7对应的8个记录。如箭头122、124以及125所示,根据以2进制形式表示分区尺寸时的比特值,设定对应的划分层级的记录的比特值。在图3所示的分区311中,如利用从分区结构主划分表130起的箭头135、134以及132表示对应关系那样,初始分配与分区结构主划分表130的比特值是“I”的记录对应的划分层级的尺寸的主区域185、184以及182。另外,假想地取得包含分区311的最小的2的幂乘尺寸的假想分区311a,对假想分区311a假想地分配划分层级6的区域。并且,虽然在图3中未示出,但是与图2A所述的主区域6916同样地,对假想区域311a整体假想地分配划分层级6的主区域。此外,有时还将与主区域对应的划分层级称作主划分层级。即,分区结构主划分表130可称作利用比特值I表示主划分层级的表。多层划分管理表309如图3所不包含主划分编号管理表309a、末尾编号管理表309b以及最上位划分层级管理表309c。主划分编号管理表309a和末尾编号管理表309b如其后缀0 7所示,与分区结构主划分表130同样地由与划分层级对应的记录构成。主划分编号管理表309a的记录由主划分编号114构成,末尾编号管理表309b的记录由末尾编号116构成。各个记录的值根据分区结构主划分表130的值在初始化处理中进行设定。在最上位划分层级管理表309c中设定与假想分区311a的尺寸相当的划分层级即最上位划分层级115。在图3所示的例子中设定与假想分区311a的尺寸相当的6。在主划分编号114中,当管理分区311内的区域的分配状态的多层划分分配表310具有与某划分层级的主划分对应的记录时,在 该划分层级的记录中存储与该主划分对应的划分编号,在某划分层级中多层划分分配表310不具有与主划分对应的记录时,在该划分层级的记录中存储“-I”作为无效的划分编号。在图3的例子中,主划分编号114的各个记录的值从上位的划分层级起是_1、_1、2、6、_1、28、-I、-I。此外,如根据先前在图2A所示的比特图600的说明中叙述而理解的那样,在多层划分分配表中没有设置与假想区域对应的记录,仅设置有与实体区域对应的记录。末尾编号116是与多层划分分配表310的各个记录唯一对应的划分编号中的与各个划分层级的划分分配表的末尾记录对应的划分编号,图3例示的末尾编号116的各个记录的值从上位的划分层级起是-I、_1、2、6、13、28、57、115。后面参照图4A 图4C详细说明这些值的设定。多层划分分配表310如先前所述用于管理分区311内的区域的分配状态。与图2A所示的分配比特图600类似,划分编号与分配比特图600同样地包含假想区域并赋予编号,但是没有对假想区域设置保持状态管理信息的记录即分配状态170。在初始化处理中,根据多层划分管理表309的值生成多层划分分配表310,进行初始设定。多层划分分配表310如图中虚线箭头140 145所示,由与从最下位的划分层级到分区结构主划分表130的比特值是I的最上位的划分层级的各个划分层级对应的划分分配表160 165构成。各个划分分配表的记录由与该记录相应的划分编号区域的2比特的分配状态170构成。分配状态的比特值“00”、“01”、“10”、“11”分别与各个划分编号区域的“空”、“空候选”、“保留”、“使用中”的状态对应。这些状态的意思将会在后面详细说明,可以通过在分配状态170中采用2比特来识别“空候选”,从而能够更加没有浪费地利用存储区域。另外,划分分配表160 165的各个记录如图3的箭头175、174、172所示,具有与主划分即主区域对应的记录、和与将上一位划分层级的区域分割成2个的划分即将上一位划分层级的区域分割成2个的区域对应的记录。可将从I起的连续编号中的对实体区域附加的编号即划分编号171与多层划分分配表310的各个记录对应,该连续编号是从在最上位划分层级管理表309c中设定的最上位划分层级即划分层级6的假想区域到将该划分层级6的假想区域依次二分割而得到的划分层级0的区域的末尾区域依次附加的。末尾编号管理表30%的末尾编号116是相应的划分层级中的划分编号的末尾编号。如根据先前参照图2A说明而理解的那样,当给出分区尺寸即分区结构主划分表时,唯一地决定针对实体区域的多层划分分配表的结构,还唯一地决定利用以划分编号识别出的划分单元进行划分的区域在分区内的位置和尺寸。在多层划分分配表310的初始状态下,如箭头175、174、172所示,在与主区域对应的记录的分配状态170中初始设定表示空的“00”,在其它记录的分配状态中初始设定表示保留的“10”。因此,当针对空的区域观察分配状态时,在分区311中分割分配主区域185、184、182,在设定利用多层划分分配表310进行管理的区域中的空区域这样的意义上,初始分配分区311。后面参照图4A 图4C详细说明多层划分分配表310的初始设定。此外,上述划分编号171的编号赋予方法仅仅是例示,对于本领域的普通技术人员来说,只要能够进行后述的文件分配管理,则可进行例如将开头编号设为0而不是I、使编号的赋予顺序相反等各种变形,这是显而易见的。如以上说明的那样,根据本发明,分配给文件系统的分区311采用多层划分分配表31根据与划分层级对应的分配状态170对同一区域进行多层管理。、根据分配请求的尺寸,通过多层划分分配表的搜索来取得某划分层级的空区域或者不同划分层级的连续空区域的划分编号,将该划分编号设为使用中,由此进行采用多层划分分配表310的区域分配。在没有空区域的情况下,搜索空候选的区域。如图2B所示,将使用中的划分编号作为分配划分编号从分配系统返回到已进行文件分配请求的文件系统。文件操作系统在接受指定该划分编号的文件操作请求时,从多层划分管理部接收该划分编号的区域的地址信息。多层划分管理部利用划分编号搜索多层划分管理表309,取得与划分编号对应的区域的划分层级和层级内编号,由此能够知道分配给文件的区域在分区内的位置和尺寸。后面将会详细说明这些处理。接着,参照图4A、图4B以及图4C说明对分区初始化的处理。这里对分区初始化的处理具体地说是初始设定例如图3所示的多层划分管理表309和多层划分分配表310的值的处理。以下,作为例子参照多层划分管理表309和多层划分分配表310进行说明。图4A是说明对分区初始化的前级处理流程例的图。如图4A所示,首先,在步骤S401中,根据从请求分区初始化的程序接收到的分区尺寸,生成根据以2进制形式表示分区尺寸时的比特值来设定划分层级的记录的比特值的分区结构主划分表。然后,在步骤S402中,将分区结构主划分表的最上位的划分层级设定为主划分层级,进到步骤S404。在图3所示的例子中,生成分区结构主划分表130,其最上位的划分层级是7,因而对主划分层级设定7。上述步骤S402中的、设定分区结构主划分表的最上位的划分层级的主划分层级是先前所述的未图示的临时存储区域的一例。在步骤S404中,取出主划分层级指向的分区结构主划分表的比特值,在步骤S405中,判定该取出的比特值是否有效即是否是值I。当上述取出的比特值不是I时分支到步骤S406,在主划分层级指向的主划分编号管理表内设定值“-1”,接着,在步骤S407中,在主划分层级指向的末尾编号管理表内设定值“-1”,在步骤S408中,对主划分层级减I并返回到步骤S404。在步骤S405中初次判定为分区结构主划分表的比特值有效之前,反复进行上述步骤S404 步骤S408的循环处理。在图3所示的例子中,在将主划分层级设定为5之前,分区结构主划分表的比特值是0,因而通过该循环处理,对主划分编号管理表309a和末尾编号管理表309b的划分层级7和划分层级6都设定值“-I”。另一方面,当上述取出的比特值是I时,进到步骤S408a,判定在分区结构主划分表中设定的比特值为I的记录是否是I个即分区结构主划分表是否为单比特结构,如果是单比特结构,则在步骤S408b中,将主划分层级设定为最上位划分层级,进到图4B所示的步骤S409,如果不是单比特结构,即是多比特结构,则在步骤S408c中,将主划分层级加I而得到的值设定为最上位划分层级,进到图4B所示的步骤S409。在图3的例示中,是多比特结构且最初分区结构主划分表的比特值为I的主划分层级是5,因而对最上位划分层级设定6。该最上位划分的设定相当于取得假想分区并在该假想分区假想地分配主区域。图4B是说明对分区初始化的后级处理流程例的图。在步骤S409中,将以从最上位划分层级减去主划分层级而得到的值为指数的2的幂乘设定为开头编号,在步骤S410中,将值“ I ”设定为划分数,进到步骤S411。上述步骤S409的开头编号和步骤S410的划分数也是先前所述的未图示的临时存储区域的例子。分 别将数据的名字作为临时存储区域的名字。在图3的例示中,将2的(6-5)次幂乘2设定为开头编号。在步骤S411中,将开头编号加上划分数后再减I而得到的值设定为主划分编号。在图3的例示中,在步骤S411的最初处理中,利用步骤S409的处理对开头编号设定2,利用步骤S410的处理对划分数设定1,因而对主划分编号设定2。接着,在步骤S412中,在主划分层级指向的主划分编号管理表中设定主划分编号。在图3例示的步骤S412的最初处理中,对主划分编号管理表309a的划分层级5设定2。接着,进到步骤S414,对主划分层级指向的划分层级的多层划分分配表的分配状态初始化。后面将会参照图4C说明步骤S414的详细处理。接着,在步骤S416中,判定主划分层级是否是最下位的划分层级,如果是最下位的划分层级则结束处理,如果不是最下位的划分层级则分支到步骤S417。在步骤S417中,对主划分层级减1,在步骤S418中,使开头编号成为2倍,在步骤S419中使划分数成为2倍,进到步骤S420。在步骤S420中,取出主划分层级指向的划分层级的分区结构主划分表的比特值,在步骤S421中,判定该取出的比特值是否有效即是否是值I。当在步骤S420中取出的主划分层级指向的分区结构主划分表的比特值无效,则分支到步骤S422,对主划分编号设定值“-I ”,返回到步骤S412,如果有效,则分支到步骤S423,对划分数加上1,返回到步骤S411。在步骤S416中判定为主划分层级是最下位的划分层级之前,反复进行上述步骤S411 步骤S423的循环处理。此时,当主划分层级指向的划分层级的分区结构主划分表的比特为无效比特即该比特值是“0”时,如上所述,对该划分层级的主划分编号设定值“-I”。在图3所示的例子中,在步骤S418的最初处理中对开头编号设定4,划分数在步骤S419中设为2,在步骤S423中设为3,因而在步骤S411中对主划分编号管理表309a的划分层级4设定6。另外,在步骤S422的处理中,对主划分编号管理表309a的划分层级3设定-I。以下同样地,对主划分编号管理表309a的划分层级2、1、0分别设定28、-I、-I。图4C是说明本发明一个实施方式中的按照划分层级对多层划分分配表初始化的处理流程例的图,是详细说明图4B所示的步骤S414的处理的图。根据图4C例示的处理流程,对与从构成多层划分分配表的最下位划分层级到分区结构主划分表的比特值是I的最上位划分层级的各个划分层级对应的划分分配表初始化。图3的例子是将划分分配表160 165各自的值设定为图示的值的处理。每当执行图4B所示的步骤S411 步骤S423的循环处理时,进行从划分分配表165到划分分配表160的划分分配表的初始化,多层划分分配表310的初始化完成。如图4C所示,在步骤S431中将开头编号设定为划分编号,在步骤S432中,将开头编号加上划分数后再减I而得到的值设定为末尾编号。此外,在步骤S433中,在主划分层级指向的末尾编号管理表中设定末尾编号,进到步骤S434。步骤S431和步骤S432中的开头编号是在图4B所示的步骤S409或者步骤S418中设定的。另外,步骤S432中的划分数是在图4B所示的步骤S410、步骤S419或者步骤S423中设定的。
在图3的例示中,执行步骤S431 步骤S433的处理时的主划分层级是5,对划分编号设定在图4B所示的步骤S409中设定的2,对末尾编号设定开头编号2加上在图4B所示的步骤S410中设定的划分数I后再减I而得到的2。在步骤S434中,判定划分编号与末尾编号是否相等。如果划分编号与末尾编号不等,则在步骤S435中,将划分编号指向的多层划分分配表的分配状态设定为保留,在步骤S436中对划分编号加1,返回到步骤S434,反复进行划分编号与末尾编号是否相等的判定。该步骤S434 步骤S436的循环处理是从与处理中的划分层级对应的划分分配表的开头划分编号到末尾编号的前一个划分编号,将划分编号指向的划分分配表的分配状态设定为保留的处理。另一方面,在步骤S434中判定为划分编号与末尾编号相等时,进到步骤S437,判定主划分编号是否是值“-I”。这里的主划分编号是在图4B所示的步骤S411或者步骤S422中设定的。当在步骤S437中判定为主划分编号是值“-I”时,在步骤S438中将划分编号指向的多层划分分配表的分配状态设定为保留,结束处理,当在步骤S437中判定为主划分编号不是值“-I”时,在步骤S439中将划分编号指向的多层划分分配表的分配状态设定为空,结束处理。该步骤S438和步骤S439的处理是设定与处理中的划分层级对应的划分分配表的末尾划分编号的分配状态的处理。如图3例示的那样,与主区域对应的划分单元的划分编号是与该主区域的划分层级对应的划分编号的末尾,该末尾划分编号的划分分配表的分配状态如在划分编号2、6、28的分配状态中看到的那样为“00”即空。其它的多层划分分配表的分配状态全部为“10”即保留。在以上详细说明的分区的初始化中,对区域的分配状态除了导入“空”之外还导入“保留”,这是为了容易地确保连续的大的空区域。例如在图3的例子中,当从文件系统请求分配尺寸是16的区域时,可从空状态的区域即主区域中选择主区域184即划分编号6的区域。当没有保留这样的分配状态时,划分编号4、5的区域也为空,这样,为了在产生未来尺寸大于16的区域的分配请求时分配连续的区域,为了有效地利用区域,需要从划分编号4、5、6中选择划分编号6的区域的手段。但是,该手段与对分配状态导入“保留”相比变得复杂。
此外,在本实施方式中,虽然导入“保留”这样的状态,并用2比特的值“10”来表示该状态,但如上述说明的那样,将区域的分配状态设定为保留是为了从分配的对象中去除该区域。因此,在上述步骤S438中,还可以将划分编号指向的多层划分分配表的分配状态设定为表示不向区域分配该划分编号的空以外的状态。接着,参照图5 图IlC说明本发明一个实施方式中的采用多层划分管理信息的区域分配。如先前在图2B的说明中所述的那样,在分区初始化后,接受来自文件系统的包含分配请求尺寸的分配请求,由此通过分配系统的多层划分管理部来进行区域分配。图5是说明进行区域分配的全部处理的概括处理流程例的图。首先,在步骤S501中设定分配请求尺寸,在步骤S502中,设定隐含分配请求尺寸的最小的2的幂乘尺寸的指数作为分配请求划分层级。例如,当分配请求尺寸是11 (以2进制表示为“01011”)时,对分配请求划分层级设定16 (以2进制表示为“ 10000”)=24的指数4。另外,当分配请求尺寸是2的幂乘8时,设定其指数3。
接着,在步骤S503中,参照多层划分分配表,在分配请求划分层级的区域中,搜索该区域的分配状态是“空”的空区域,取得空区域的划分编号。后面将会参照图6详细说明步骤S503的处理。在步骤S504中,判定是否能够取得空状态的区域的划分编号,在能够取得的情况下进到步骤S507,在不能取得的情况下进到步骤S505。在步骤S505中,参照多层划分分配表,搜索分配请求划分层级的区域中的分配状态是“空候选”的空候选区域,取得空候选区域的划分编号。后面将会参照图9详细说明步骤S505的处理。在步骤S506中,判定是否能够取得空候选状态的区域,在能够取得的情况下转移至步骤S507,在不能取得的情况下作为取得失败结束区域分配处理。在步骤S507中,判定与在步骤S503的处理中取得的划分编号的划分层级对应的区域尺寸是否大于在步骤S501中设定的分配请求尺寸。如果分配请求尺寸不等于2的幂乘,即以2进制形式表示时有效的比特位置为多个(将此时的分配请求称作多比特请求,另一方面,在分配请求与2的幂乘相等时称作单比特请求),则取得的区域尺寸大于分配请求尺寸。因此,在步骤S507中判定分配请求是多比特请求还是单比特请求。当步骤S507中的判定是单比特请求时进到步骤S509,当步骤S507中的判定是多比特请求时分支到步骤S508。在步骤S508中,将与取得的划分编号对应的一次分配区域划分成多层区域,得到分配请求划分的二次分配区域,进到步骤S509。此外,在二次分配中得到的区域是由多个区域构成的多层区域,以下将该区域称作二次分配区域。后面将会参照图IlA 图IlC详细说明步骤S508的处理。另外,后面也会详细说明一次分配和二次分配。在步骤S509中,作为分配结果,将一次分配的分配区域的划分编号设定为分配划分编号,结束处理。这里设定的分配划分编号如图2A所示作为分配结果返回到文件系统。分配系统的多层划分管理部可采用与该文件对应的分配划分编号从多层划分管理表中,求出从分配给文件系统的分区的开头位置到分配请求后分配给文件的区域的开头位置的相对地址。接着,详细说明图5的步骤S503、步骤S505以及步骤S508的处理。
图6是详细说明图5的步骤S503的处理的图,是说明从多层划分分配表中搜索分配请求划分层级的空区域并取得空区域的划分编号的处理流程例的图。如图所示,在步骤S601中,从多层划分分配表中搜索包含分配请求划分层级的尺寸的空区域,取得空区域的划分编号。根据本发明一个实施方式的多层划分管理,即使在不能发现分配请求划分层级的空区域的情况下,只要存在比分配划分层级大的划分层级的空区域就能够发现它。例如在图3所示的例子中,当分配请求划分层级是3时,如划分层级3的划分分配表163所示,划分层级3的区域没有空。但是,划分层级2存在划分编号6的空区域,取得该划分编号6。这样,有时将分配比分配划分层级大的划分层级的空区域称作虚拟分配。后面将会参照图7A 图7C详细说明步骤S601。接着,在步骤S602中,判定在步骤S601的处理中是否能够取得划分编号,当不能取得时返回取得失败并结束处理,当能够取得时进到步骤S603。在步骤S603中,判定在步骤S601的处理中取得的划分编号涉及的划分层级(取得 的划分层级)与分配请求划分层级是否相等。该判定相当于是否进行虚拟分配的判定。当取得的划分层级与分配请求划分层级相等时,返回取得成功并结束处理,当取得的划分层级与分配请求划分层级不等即进行虚拟分配时,分支到步骤S604。在步骤S604中,将虚拟分配的虚拟分配区域划分成多层区域,得到分配请求划分层级的划分编号的一次分配区域。即,作为一次分配取得分配请求划分层级的尺寸的区域,取得该划分编号,返回取得成功并结束处理。后面将会参照图8A和图SB详细说明步骤S604。图7A是详细说明图6的步骤S601的处理的图,是说明从多层划分分配表中搜索包含分配请求划分层级的尺寸的空区域并取得空区域的划分编号的处理流程例的图。如图所示,在步骤S701中,将分配请求划分层级设定为划分层级。这里,分配请求划分层级的值是在图5的步骤S502中设定的。接着,在步骤S702中,将以最上位划分层级减去划分层级而得到的值为指数的2的幂乘设定为开头编号,在步骤S703a中,将该开头编号设定为划分编号。然后,在步骤S703b中,从末尾编号管理表中取出当前处理中的划分层级指向的末尾编号。接着,在步骤S704中,读出设定为划分编号的值指向的多层划分分配表的分配状态。然后,在步骤S705中,判定读出的分配状态是否是空。在步骤S705的判定中判定为分配状态是空时,进到步骤S710。另一方面,在步骤S705的判定中判定为分配状态不是空时,分支到步骤S706。然后,在步骤S706中判定划分编号与在步骤S703b中取出的末尾编号是否相等。当划分编号与末尾编号不等时,分支到步骤S707,对划分编号加上1,返回到步骤S704。以后在同一划分层级内对划分编号每次加上1,检索空状态的区域。在步骤S706中判定为划分编号与末尾编号相等时,进到步骤S708,判定划分层级是否是存在分区结构主划分表的有效比特的最上位划分层级。可通过判定在步骤S702中设定的开头编号是I还是2来进行该判定。当在步骤S702中设定的开头编号是I或者2时,无论分区结构主划分表是单比特结构还是多比特结构,直到存在有效比特的最上位划分层级为止的空状态区域的搜索都结束,因而返回取得失败并结束处理。当在步骤S708中判定为划分层级不是存在有效比特的最上位划分层级时(划分层级是存在有效比特的最上位划分层级下位的划分层级时),进到步骤S709,对划分层级加上1,前进到步骤S709a,将开头编号除以2而得到的商设定为开头编号,返回到步骤S703a。当返回到步骤S702时,反复进行上述处理,逐个搜索关于上位划分层级的多层划分分配表的分配状态。当搜索的结果是取得空状态的区域时,进到步骤S710。在步骤S710中,将设定为划分编号的值指向的多层划分分配表的分配状态设定为使用中,结束处理。作为图7A的处理结果,将作为临时存储区域的划分编号、对划分层级分别设定的值和表示取得成功或者取得失败的数据作为搜索结果输出。图7B和图7C是参照图3所示的多层划分管理表310利用具体例子说明图7A所示的空区域的搜索处理的图。图7B所示的例子是分配请求为多比特请求且在分配请求划分层级上搜索空区域 的例子。如图所示,对分配请求尺寸220的第I比特(划分层级I)和第3比特(划分层级3)设定比特值I。因此,如虚线箭头224所示,对分配请求划分层级234设定划分层级3的上位划分层级4。在图5的步骤S501和步骤S502的处理中进行此前的设定。接着,根据图示的实线箭头所示的划分层级4的分配请求240,进行多层划分分配表310的附加标号164a的分配前的划分层级4的划分分配表的空搜索244。在图示的例子中,划分编号171是4和5的分配状态为“II”表示是使用中,划分编号是6的分配状态为“00”表示是空。因此,如图示的实线箭头所示进行空区域的取得274a,如附加标号164b的分配后的划分层级4的划分分配表所示,对划分编号171为6的分配状态设定“11”,表示是使用中。结果,如利用图示的箭头274对应示出的那样,对分区311分配划分层级是4且划分编号是6的区域作为一次分配区域280。利用图7A所示的步骤S704 步骤S707的循环处理和步骤S710的处理来执行上述一次分配区域280的分配。接着,根据图7C所示的例子,说明分配请求是单比特请求且在分配请求划分层级上不能搜索空区域的情况。在图7C中没有记载分配请求尺寸220,但是,虚线箭头所示的分配请求241a是分配请求划分层级I的分配请求,因而分配请求是仅第I比特为I的单比特请求。当在分配请求划分层级上不能搜索空区域时,在图7A所示的流程中,在上位划分层级上发现空区域之前,反复进行在步骤S706中分支到步骤S708并经由步骤S709返回到步骤S702的循环处理。与该反复处理对应的处理是,如图7C所示,从下位划分层级(在图7C中为划分层级I)起依次参照上位划分层级的划分分配表,在搜索后的划分层级内没有空状态区域时进一步搜索上位划分层级。关于从划分层级I开始的各个划分层级的区域,从开头编号起依次搜索空状态。首先,请求搜索图示的虚线箭头241a所示的分配请求划分层级即划分层级I的空区域,对于多层划分分配表310中的划分层级I的划分分配表161的分配状态下,以划分编号升序的方式从开头编号即划分编号32到末尾编号即划分编号57搜索空状态(参照图7C的箭头241b)。在图示的例子中,即使搜索到划分编号是末尾编号57的区域也没有空状态的区域,因而请求搜索对图中虚线箭头242a所示的划分层级加上I而得到的上位划分即划分层级2的空区域。然后,对于划分层级2的划分分配表162的分配状态,以划分编号升序的方式从开头编号即划分编号16到末尾编号即划分编号28搜索空状态(参照图7C的箭头242b)。即使搜索到划分编号是末尾编号28的区域也没有空状态的区域,因而请求搜索对划分层级加上I而得到的上位划分即划分层级3的空状态(参照图7C的箭头243a)。同样关于划分层级3的划分分配表163,也依次搜索从开头编号即划分编号8的区域到末尾编号即划分编号13的区域的分配状态(参照图7C的箭头243b),但是没有得到空区域,因而请求对划分层级加上I而搜索上位划分即划分层级4的空区域(参照图7C的244a)。在图7C的例示中,附加标号164a的分配前的划分层级4的划分分配表的空区域搜索(参照图7C的244b)的结果是,得到划分编号是5的区 域作为分配状态是“00”的空区域,如图7C的箭头所示的空取得244c对应示出的那样,将标注标号164b的分配后的划分层级4的划分分配表的划分编号5的分配状态变更成表示使用中的“II”。即,如箭头244d所示,虚拟分配划分编号5的区域,作为虚拟分配区域280a来取得。此外,关于空区域的搜索处理,不仅限于以升序的方式搜索上述划分编号的方法,还可以采用任意的搜索算法。通过以上参照图7A 图7C进行说明的处理,得到一次分配区域或者虚拟分配区域。图8A是详细说明图6的步骤S604的处理的图,是说明多层划分在步骤S601的处理中得到的虚拟分配区域并得到分配请求划分层级的划分编号的一次分配区域的处理流程例的图。首先,在步骤S804中,将取得的划分层级减I而得到的值设定为划分层级,进到步骤 S808。在步骤S808中,将划分编号的2倍值设定为划分编号。步骤S808的最初处理开始时的划分编号是指示在图7A所示的步骤S710中将分配状态设定为使用中的多层划分分配表的记录的划分编号。接着,在步骤S809中,将划分编号加上I而得到的值设定为对的划分编号。例如,将某划分层级中的划分编号是“10”的区域二分割后的下一位划分层级中的区域的划分编号为“20”、“21”。接着,在步骤S810中,将划分编号指向的多层划分分配表的分配状态设定为使用中,在步骤S811中,将对的划分编号指向的多层划分分配表的分配状态设定为空,进到步骤 S812。在步骤S812中,判定划分层级是否大于分配请求划分层级,如果大于分配请求划分层级则分支到步骤S813,对划分层级中设定的值减1,返回步骤S808。如果判定结果为不大于即划分层级与分配请求划分层级相等,则结束处理。图8A所示的处理是以进行虚拟分配为前提的,因而已取得的划分层级大于分配请求划分。并且,一边对划分层级逐渐减I 一边反复进行步骤S808 步骤S813的循环处理,因而在步骤S812中判定为划分层级不大于分配请求划分层级是在划分层级与分配请求划分层级相等的时刻。根据以上的处理,对虚拟分配的区域进行多层划分,得到一次分配的区域。上述步骤S804的处理和步骤S808 步骤S813的循环处理是从虚拟分配的区域开始,将区域分割成下一位划分层级的2个区域对,将小号侧区域的分配状态设定为使用中,将大号侧区域的分配状态设定为空。根据本发明的一个实施方式,在不将取得的全部虚拟分配区域设为使用中的情况下,在虚拟分配区域的划分编号的小号侧对分配请求划分层级的区域进行一次分配,将剩余连续区域设定为空,因而能够有效地利用区域。此外,本领域的普通技术人员可知,不仅限于在划分编号的小号侧进行一次分配,也可以在大号侧进行一次分配。图8B是参照图3所示的多层划分管理表310利用具体例子说明对图8A所示的虚拟分配区域进行多层划分来得到一次分配区域的处理的图。图SB所示的例子与图7C例示的同样,分配请求为单比特请求的分配请求,从图7C所示的虚拟分配区域280a中取得一次分配区域。在图8B中示出标号为280a且是一次分配前的分配状态的虚拟分配区域(划分编、号5)。根据请求划分从虚拟分配区域280a起的箭头241所示的、虚拟分配区域的划分层级4到划分层级I的相关各个区域的多层划分请求,从附加有标号164b的划分层级4的划分分配表中开始处理。在划分分配表164b中存储与图7C所示相同的分配状态。根据通过虚拟分配将分配状态设定为使用中的、从划分层级4的划分分配表164b的划分编号171的值为5的记录起的箭头274a所示的划分请求,将划分层级3的划分分配表163中的划分编号10的划分单元的划分中的区域(以下,表述为“划分编号10的区域”)的分配状态设定为使用中“11”,对划分编号10的划分单元和构成划分对293a的划分编号11的划分单元的划分中的区域(以下,表述为“划分编号10的区域和构成划分对293a的划分编号11的区域”)的分配状态设定为空“00”。通过划分层级3中的图8A的步骤S808 步骤S811的处理来执行该设定处理。最初的划分编号是5,在步骤S808中对划分编号设定使上述划分编号成为2倍而得到的10。另外,作为对的划分编号得到11。以下同样地,与使用中的划分编号10的记录对应地,根据箭头273a所示的划分请求,将划分层级2的划分分配表162中的划分编号20的区域的分配状态设定为使用中“11”,将划分编号20的区域和构成划分对292a的划分编号21的分配状态设定为空“00”。另一方面,将划分编号11的分配状态设定为空,因而如利用箭头273b对应示出的那样,对附加有标号280b的一次分配后的虚拟分配区域分配空状态的划分编号11的区域283b。接着,与使用中的划分编号20的记录对应地,根据箭头272a所示的划分请求,将划分层级I的划分分配表161中的划分编号40的区域的分配状态设定为使用中“11”,将划分编号40的区域和构成划分对291a的划分编号41的分配状态设定为空“00”。然后,将划分编号21的分配状态设定为空,因而如利用箭头272b对应示出的那样,对一次分配后的虚拟分配区域280b分配空状态的划分编号21的区域282b。多层划分请求是到划分层级1,因而如利用箭头271a和箭头271b分别对应示出的那样,对一次分配后的虚拟分配区域280b —次分配划分编号40的区域281a作为使用中,分配划分编号41的区域281b作为空。根据上述多层划分,将一次分配后的虚拟分配区域280b分割成如图所示的使用中的一次分配区域281a和由空的区域281b、282b、283b构成的与一次分配区域281a相邻的相邻多层区域290b。
图9是详细说明图5的步骤S505的处理的图,是说明从多层划分分配表中搜索分配请求划分层级的空候选区域并取得空候选区域的划分编号的处理流程例的图。将后面将会参照图IlA 图IlC说明的构成分割多比特请求中的一次分配区域进行二次分配时的剩余相邻多层区域的区域的分配状态设定为空候选。与空区域搜索同样地进行空候选区域搜索,空候选区域搜索的图9所示的流程与图6所示的空区域搜索的流程对应,图9的步骤S901 步骤S904是在图6所示的步骤S601 步骤S604中,将空区域改作空候选区域,因而省略说明。另外,详细说明图9的步骤S901的处理的图IOA是说明从多层划分分配表中搜索分配请求划分层级的尺寸以上的空候选区域并取得空候选区域的划分编号的处理流程的图,与图7A所示的说明从多层划分分配表中搜索分配请求划分层级的尺寸以上的空区域并取得空区域的划分编号的处理流程的图对应。关于图IOA的步骤S1001 步骤SlOlOdX在步骤S1005中判定分配状态是否是空候选而与在图7A的步骤705中是判定分配状态是否是空这一点不同,因而也省略关于图IOA的说明。
另外同样地,详细说明图9的步骤S904的处理的图IOB是说明对在步骤S901的处理中得到的虚拟分配区域进行多层分区并取得分配请求划分层级的划分编号的一次分配区域的处理流程的图,与图8A所示的说明对在图6的步骤S601的处理中得到的虚拟分配区域进行多层分区并取得分配请求划分层级的划分编号的一次分配区域的处理流程的图对应。关于图IOB的步骤S1024 步骤S1033,仅在步骤S1031中将对的划分编号指向的多层划分分配表的分配状态设定为空候选而在图8A的步骤811中是将对的划分编号指向的多层划分分配表的分配状态设定为空这一点不同,因而还省略关于图IOB的说明。接着,参照图IlA 图IlC详细说明图5的步骤S508的处理。图IlA是说明将取得的划分编号的一次分配区域划分成多层区域并得到分配请求划分的二次分配区域的前级处理流程的图。首先,在步骤S1103中,将取得的一次分配区域的划分编号的2倍值设定为划分编号。在图7B的例示中,取得的一次分配区域的划分编号是6,因而利用该步骤S1103的处理将12设定为划分编号。接着,在步骤S1104中,为了分割一次分配区域,根据分配请求尺寸生成由2进制表示分配请求尺寸的比特值构成的分配结构划分表。然后,在步骤S1105中,将取得的划分层级减I而得到的值设定为分割划分层级。在图7B的例示中,取得的一次分配区域的划分层级是4,因而利用该步骤S1105的处理,将3设定为分割划分层级。接着,在步骤S1106中,将分配结构划分表中的比特值是I的比特位置且从下位第0比特观察最下位的比特位置设定为最小分割划分层级,进到图IlB的步骤S1110。例如,在分配请求尺寸如图7B所示且分配结构划分表的比特值是“1010”时,将比特位置I设定为最小分割划分层级。图IlB是说明将取得的划分编号的一次分配区域分割成多层划分并得到分配请求划分的二次分配区域的后级处理流程的图。在步骤SlllO中,将划分编号加上I而得到的值设定为对的划分编号。接着,在步骤Sllll中,从分割划分层级指向的分配结构划分表中取出比特值,在步骤SI 112中判定取出的比特值是否是I。
在步骤S1112中判定为取出的比特值不是I (是0)时,分支到步骤S1113,当判定为取出的比特值是I时,进到步骤S1115。在步骤S1113中,将划分编号指向的多层划分分配表的分配状态设定为使用中,在步骤S1114中,将对的划分编号指向的多层划分分配表的分配状态设定为空候选,进到步骤SI 119。另一方面,在步骤SI 115中,判定分割划分层级是否是在步骤SI 106中设定的最小分割划分层级。当分割划分层级与最小分割划分层级不等时,分支到步骤S1116,在相等的情况下进到步骤SI 121。在步骤S1116中,将划分编号指向的多层划分分配表的分配状态设定为使用中,在步骤S1117中,将对的划分编号指向的多层划分分配表的分配状态设定为使用中。接着,在步骤SI 118中,对划分编号加上I,进到步骤SI 119。
在步骤SI 119中,使划分编号成为2倍,进到步骤SI 120,对分割划分层级减1,返回到步骤S1110。当在步骤S1115中判定为分割划分层级与最小分割划分层级相等而进到步骤S1121时,将划分编号指向的多层划分分配表的分配状态设定为使用中,在步骤S1122中,将对的划分编号指向的多层划分分配表的分配状态设定为空候选,结束处理。图IlC是参照图3所示的多层划分分配表310利用具体例子说明对图IlA和图IlB所示的一次分配区域进行多层分区并得到分配请求划分的二次分配区域的处理的图。图IlC例示的是将设定为分配请求尺寸220的值和一次分配区域作为划分编号6的一次分配区域280,因而对图7B例示的一次分配继续进行二次分配。与图7B所示的相同,2进制表示分配请求尺寸的分配请求尺寸220的第I比特和第3比特的比特值是I。分配结构划分表230如下面0 5所示的那样由记录构成,该记录由与划分层级对应的I比特构成,在图IlC的例示中,具有与划分层级0到最上位划分层级5对应的6个记录。如图中虚线箭头223、221对应示出的那样,根据以2进制形式表示分配请求尺寸时的比特值,设定对应的划分层级的记录的比特值。利用图5的步骤S501和图IlA的步骤S1104的处理来进行此前的设定。基于上述分配结构划分表230的比特值来执行二次分配。根据直到从一次分配区域280起的箭头244所示的一次分配区域的最小分割划分层级即划分层级I为止的多层划分请求,从附加有标号164b的取得划分层级即划分层级4的划分分配表中开始多层划分。在划分分配表164b中存储有与图7B所示相同的分配状态。关于划分层级4的划分编号6的区域的划分请求274c,如虚线箭头233对应示出的那样,分配结构划分表230的与划分层级4减I而得到的划分层级3对应的比特值是1,因而利用图IlB的步骤SI 116与步骤SI 117的处理,将划分层级3的划分分配表163中的划分编号12和划分编号13双方的划分单元的分配状态,设定为表示使用中的“11”,其中,划分编号12和划分编号13是划分层级3的区域且是同与划分编号6的区域占同一区域的I组区域对应的划分对293b。通过图IlB的步骤S1117后的步骤S1118的处理对划分编号加1,因而划分层级3的划分编号13的区域接着成为划分请求273d的对象。如虚线箭头232对应示出的那样,与分配结构划分表230的划分层级2对应的比特值是0,因而通过图IlB的步骤SI 113和步骤SI 114的处理,将划分层级2的划分分配表162中的划分编号26的分配状态设定为表示使用中的“11”,将划分编号27的分配状态设定为表示空候选的“01”,其中,划分编号26和划分编号27是划分层级2的区域且是同与划分编号13的区域占同一区域的I组区域对应的划分对292b。然后,划分层级2的划分编号26的区域成为划分请求272c的对象。如虚线箭头231对应示出的那样,与分配结构划分表230的划分层级I对应的比特值是I且划分层级I是最小分割划分层级,因而根据图IlB的步骤S1121和步骤S1122的处理,将划分层级I的划分分配表161中的划分编号52的分配状态设定为表示使用中的“11”,将划分编号53的分配状态设定为表示空候选的“01”,其中,划分编号52和划分编号53是划分层级I的区域且是同与划分编号26的区域占同一区域的I组区域对应的划分对291b。以上,与二次分配相伴的多层划分分配表310的更新完成。利用该多层划分分配表310的更新,如二次分配后的一次分配区域280c所示,对一次分配区域280进行多层划分。如箭头273c对应示出的那样,将划分层级3的划分编号12的区域283c分配为使用中, 与其连续,如箭头271c对应示出的那样,将划分层级I的划分编号52的区域281c分配为使用中,作为多层区域分配二次分配区域290c。另一方面,如箭头272d对应示出的那样,将划分层级2的划分编号27的区域282d分配为空候选,与其连续,如箭头271d对应示出的那样,将划分层级I的划分编号53的区域281d分配为空候选,同时分配为相邻多层区域290d。在二次分配区域290c中,以划分层级降序的方式分配区域,在相邻多层区域290d中,以与二次分配区域相反的顺序即划分层级升序的方式分配区域。即使在进行二次分配的情况下,也将在一次分配中取得的划分编号作为分配划分编号返回到文件系统中,但由上述说明可知,在一次分配中取得的划分编号(在上述例子中为6)的区域的开头位置与进行二次分配的二次分配区域的开头位置相同,因而能够与来自文件操作系统的指定划分编号的分配区域的地址询问对应。此外,在上述说明中,从划分编号的小号侧进行二次分配,但是,本领域的普通技术人员可知,也能够如先前对虚拟分配后的一次分配记述的那样,从划分编号的大号侧进行二次分配。接着,参照图12 图17C说明本发明一个实施方式中的分配区域的释放。与区域分配相同,还利用分配系统的多层划分管理部进行基于文件删除等的区域释放处理。图12是说明释放分配区域并尝试连接空区域的整个处理的概括处理流程例的图。可根据图12所示的分配区域的释放处理和空区域的连接,重新设定包含释放后的分配区域的区域的分配状态,再次分配该区域。如图所示,在步骤S1201中,将分配区域编号设定为划分编号。在将作为释放对象的区域分配到文件时,该分配区域编号返回到文件系统,可包含于来自文件系统的分配区域的释放请求中。另外,在此情况下还可同时包含分配请求尺寸。接着,在步骤S1202中,利用设定的划分编号来检索多层划分管理表,求出与该划分编号对应的划分层级。后面将会参照图13详细说明步骤S1202的处理。接着,进到步骤S1203,判定在步骤S1202的处理中是否已求出划分层级,在没有求出的情况下,结束处理。在已求出的情况下,进到步骤S1204。在步骤S1204中,将在步骤S1202的处理中求出的划分层级设定为释放划分层级,在步骤S1205中,对与连接请求相应的临时存储区域初始设定有作为尝试连接空区域的标
O 接着,在步骤S1206中,尝试划分编号指向的一次分配区域中包含的区域的释放和空区域的连接。如果最初的分配请求是单比特请求,则将在步骤S1201中设定的划分编号的分配状态设定为空,结束步骤S1206的处理。如果最初的分配请求是多比特请求,则不仅进行二次分配并进行二次分配区域的释放,还尝试连接相邻多层区域的空候选区域与释放后的区域并将上位划分层级的区域的分配状态设定为空。后面将会参照图14A、图14B详细说明步骤S1206的处理。接着,在步骤S1207中,判定是否具有连接请求。如果没有连接请求则结束处理,如果具有连接请求,则在步骤S1208中,尝试连接划分编号指向的一次分配区域和相邻的相邻区域并将上位区域的分配状态设定为空。依据后面的说明可变得更加清楚,具有连接请求而进到步骤S1208是在步骤S1206的处理中释放一次分配区域的情况下。后面将会参照图17A、图17B以及图17C详细说明步骤S1208的处理。当步骤S1208的处理结束时,图12所示的处理结束。图13是详细说明图12的步骤S1202的处理的图,是说明根据划分编号检索多层划分管理表并求出与该划分编号对应的划分层级的处理流程例的图。首先,在步骤S1301中,从最上位划分层级管理表中取出最上位划分层级。然后,在步骤S1302中,判定最上位划分层级指向的主划分编号管理表的主划分编号是否有效。该判定相当于判定分区结构主划分表是单比特结构还是多比特结构。如果步骤S1302的判定结果是否定的即分区结构主划分表是多比特结构,则在步骤S1303中,将最上位划分层级减I而得到的值设定为划分层级,进到步骤S1305。另一方面,如果是肯定的,则在步骤S1304中,将最上位划分层级设定为划分层级,进到步骤
51305。在步骤S1305中,将以最上位划分层级减去划分层级而得到的值为指数的2的幂乘设定为开头编号。接着,在步骤S1306中,从末尾编号管理表中取出划分层级指向的末尾编号,在步骤S1307中,判定划分编号是否位于在步骤S1305中设定的开头编号与在步骤S1306中取出的末尾编号的范围内。在该判定是肯定的情况下成为具有划分层级而返回划分层级,结束处理。在否定的情况下,进到步骤S1308。在步骤S1308中,判定划分层级是否是最下位的划分层级。当划分层级是最下位的划分层级时,成为没有相应的划分层级,结束处理。当划分层级不是最下位的划分层级时,进到步骤S1309a,使开头编号成为2倍,在步骤S1309中对划分层级减I并返回步骤
51306。一边对划分层级逐渐减I 一边反复进行上述步骤S1306 步骤S1309的循环处理,在某划分层级的步骤S1307的判定中,划分编号处于在步骤S1305中设定的开头编号或者在步骤S1309a中设定的开头编号与在步骤S1306中取出的末尾编号的范围内时的划分层级,是划分编号指向的划分单元涉及的划分层级。在虽然划分层级成为最下位的划分层级,但是划分编号不处于在步骤S1305中设定的开头编号或者在步骤S1309a中设定的开头编号与在步骤S1306中取出的末尾编号的范围内时,划分编号是不当的编号,由此可知相应的划分层级不存在。接着,参照图14A、图14B详细说明图12的步骤S1206的处理。图14A是说明尝试划分编号指向的一次分配区域中包含的区域的释放和空区域的连接的处理流程例的图。首先,在步骤S1401中,根据分配请求尺寸生成分配结构划分表。分配请求尺寸如先前所述可以包含在进行区域释放请求的文件系统的释放请求中。与图IlA所示的步骤S1104的处理同样地生成分配结构划分表。图IlA所示的是关于多比特请求的分配请求的内容,不过显然在单比特请求的情况下可构成比特值是I的一个比特位置的分配结构划分表。
接着,在步骤S1402中,将从分配结构划分表的下位第0比特观察的最初比特I成 立的比特位置设定为最小划分层级。在步骤S1405中,根据分配结构划分表,求出分配区域内的分割分配状况并压入分割分配状况堆栈,进到步骤S1407。这里,分割分配状况是指对分配区域进行分割分配后的区域的划分层级、划分编号、释放显示。当划分层级指向的分配结构划分表的比特值是I时具有释放显示,当比特值是0时没有释放显示。后面将会参照图15详细说明步骤S1405的处理。在步骤S1407中,弹出分割分配状况堆栈,读出划分层级、划分编号、释放显示。接着,在步骤S1409中,判定该读出的划分层级是否是释放划分层级,当划分层级是释放划分层级时分支到步骤S1416,当不是释放划分层级时进到步骤S1411。此外,当原来的分配请求是单比特请求时,在最初的步骤S1409的判定处理中分支到步骤S1416。在步骤S1411中,判定是否表示具有在步骤S1407中读出的释放显示。当具有释放显示时进到步骤S1413,当没有释放显示时进到步骤S1412。在步骤S1412中,判定是否具有连接请求。当具有连接请求时进到步骤S1413,当没有连接请求时返回步骤S1407。在步骤S1413中,尝试释放划分编号指向的划分对,返回步骤S1407。后面将会参照图16详细说明步骤S1413的处理。在上述步骤1409中判定为划分层级与释放划分层级相等而分支的步骤S1416以后的处理是释放划分层级的区域的释放处理。在步骤S1416中,判定是否具有连接请求,当没有连接请求时结束处理,当具有连接请求时,在步骤S1417中,将划分编号指向的多层划分分配表的分配状态设定为空并结束处理。即,即使在多比特请求的情况下,只要具有连接请求,就利用步骤S1417的处理将关于由二次分配区域和相邻多层区域构成的一次分配区域的分配状态设定为空。图14B是参照图3所示的多层划分分配表310利用具体例子来说明尝试图14A和后述的图16所示的一次分配区域中包含的区域的释放和空区域的连接的处理的图。图14B所示的例子是释放与图IIC例示的相同的根据多比特请求二次分配的二次分配区域,并与相邻区域连接而将上位划分层级区域的分配状态设定为空。因此,分配请求尺寸220和分配结构划分表230中设定的值与图IlC所示的相同。图14B所示的二次分配后的一次分配区域280c是释放并连接二次分配区域之前的分配状态,图IlC所示的二次分配后的一次分配区域280c的空候选即划分编号27的区域282d为使用中。划分编号53的区域281d的分配状态保持空候选的状态。参照分配结构划分表230的比特值,从最小划分层级即划分层级I向上位划分层级依次进行释放与连接的处理。首先,在最小划分层级即划分层级I中,分配结构划分表230的对应比特值是1(利用虚线箭头231a示出对应)。S卩,由于具有释放显示,因而执行图14A的步骤S1413即图16所示的处理。如划分层级I的释放请求的箭头251a所示,能够保障区域281c的释放,并且,附加有标号161c的释放前的划分层级I的划分分配表中的、与划分编号171的值是52的区域成对的划分编号53的区域的分配状态是空候选,因而后面说明的图16的步骤S1605中的判定是肯定的,具有将由划分编号52的区域和划分编号53的区域构成的划分层级I的划分对291c的上位划分层级区域的分配状态设定为空的连接请求(箭头241c所示),如附加有标号161d的释放后的划分层级I的划分分配表所示,将划分编号52和对划分编号53的分配状态设定为保留。在将上位划分层级区域设定为空时,将该区域中包含的下位划分层级区域的分配状态设定为保留,这与图3所示的多层划分分配表310的初始设定的情况 相同。在划分层级2中,分配结构划分表230的对应比特值是0 (利用虚线箭头232a示出对应),由于具有连接请求241c,因而进行箭头241d所示的上位划分区域即附加有标号162c的释放前的划分层级2的划分分配表的划分编号26的区域的释放请求。与划分编号26的区域构成划分对292c的划分编号27的区域处于使用中,因而图16的步骤S1605中的判定为否定的,如箭头242c所示,仅释放划分编号26的区域,划分对292c的分配状态如附加有标号162d的释放后的划分层级2的划分分配表所示为空和使用中。另外,成为没有连接请求。因此,如虚线箭头242d所示成为划分对292c的上位区域,如附加有标号163c的释放前的划分层级3的划分分配表所示,没有释放分配状态为使用中的划分编号13的区域。接着,在划分层级3中,分配结构划分表230的对应比特值是1(利用虚线箭头233a示出对应),如划分层级3的释放请求的箭头253a所示,释放区域283c。但是如先前所述,分配状态是使用中的划分编号13的区域未被释放仍是使用中。因此,如箭头243c所示,仅释放与划分编号13的区域构成划分对293c的划分编号12的区域,划分对293c的分配状态如附加有标号163d的释放后的划分层级3的划分分配表所示为空和使用中。另外,由于没有连接请求,因而如虚线箭头244d所示成为划分对293c的上位区域,如附加有标号164的释放前的划分层级4的划分分配表所示,分配状态是使用中的划分编号6的区域未被释放,分配状态保持是使用中的状态。根据以上区域的释放和连接的处理,如利用箭头273e、272e以及虚线箭头272f 示出与多层划分分配表310的分配状态的对应那样,将释放二次分配区域后的分配状态的一次分配区域280d划分成划分编号是12的空区域283c、划分编号是26的空区域282c以及划分编号是27的使用中区域282d。图15是详细说明图14A的步骤S1405的处理的图,是说明利用分配结构划分表求出分配区域内的分割分配状况并压入分割分配状况堆栈的处理流程例的图。首先,在步骤S1501中,将在图12所示的步骤S1204中设定的释放划分层级设定为划分层级,进到步骤S1502。
在步骤S1502中,从分配结构划分表中取出划分层级指向的比特值作为释放显示。当比特值是I时具有释放显示,当比特值是0时没有释放显示。然后,在步骤S1502a中,将划分层级、划分编号、释放显示作为分配区域内的分割分配状况压入分割分配状况堆栈。接着,进到步骤S1504,判定划分层级是否与最小划分层级相等。当判定为划分层级大于最小划分层级时,分支到步骤S1504a判定是否具有释放显示,当没有释放显示时进到步骤S1506,当具有释放显示时,在步骤S1505中,对划分编号加I并进到步骤S1506。在步骤S1506中,使划分编号成为2倍,在步骤S1507中对划分层级减I并返回到步骤S1502。在步骤S1504中判定为划分层级与最小划分层级相等之前反复进行上述步骤S1502 步骤S1507的循环处理。当在步骤S1504中判定为划分层级与最小划分层级相等时,结束处理。·在图14B的例示中,对划分编号初始设定为6,对划分层级初始设定为4,分配结构划分表的划分层级4指向的比特值是0,因而最初压入分割分配状况堆栈的划分层级、划分编号、释放显示分别是4、6、0 (没有释放显示)。在划分层级4的处理中,由于没有释放显示,因而将划分编号更新为6 X 2=12,将划分层级更新为3。另外,分配结构划分表的划分层级3指向的比特值是I。因此,向分割分配状况堆栈分别压入3、12、I (具有释放显示)作为划分层级、划分编号、释放显示。在划分层级3的处理中,由于具有释放显示,因而将划分编号更新为(12+1) X 2=26,将划分层级更新为2。另外,分配结构划分表的划分层级2指向的比特值是O。因此,向分割分配状况堆栈分别压入2、26、0 (没有释放显示)作为划分层级、划分编号、释放显示。在划分层级2的处理中,由于没有释放显示,因而将划分编号更新为26X2=52,将划分层级更新为最小划分层级I。另外,分配结构划分表的划分层级I指向的比特值是I。因此,向分割分配状况堆栈分别压入1、52、1 (具有释放显示)作为划分层级、划分编号、释放显示。图14B所示的例子是释放根据多比特请求而分配的区域的例子。当释放根据单比特请求而分配的区域时,释放划分层级与最小划分层级相等,压入分割分配状况堆栈的划分层级、划分编号、释放显示仅仅是I组,并且具有释放显示。在图12的步骤S1205中,将作为被压入上述分割分配状况堆栈的分割分配状况的划分层级、划分编号、释放显示初始设定为“具有”,根据在后述的图16所示的处理中更新的连接请求,进行图14B例示的分配区域的释放。图16是详细说明图14A的步骤S1413的处理,是说明尝试释放划分编号指向的划分对的处理流程例的图。如图14A所示的处理流程那样,通过依次弹出分割分配状况堆栈,按照从最小划分层级到释放划分层级的下一位划分层级的每个划分层级执行图16所示的处理步骤。如图所示,首先,在步骤S1602中,将划分编号加上值I而得到的值设定为对的划分编号并进到步骤S1604,读出对的划分编号指向的多层划分分配表的分配状态,在步骤S1605中,判定读出的分配状态是否是空或空候选。当读出的分配状态是空或空候选时,进到步骤S1606,当读出的分配状态不是空也不是空候选时,分支到步骤S1609。在步骤S1606中,将划分编号指向的多层划分分配表的分配状态设定为保留,在步骤S1607中,将对的划分编号指向的多层划分分配表的分配状态设定为保留。接着,在步骤S1608中设定为具有连接请求并结束处理。这些步骤S1606 S1608的处理在图14B的例示中与箭头241c所示的具有连接请求的处理对应。另一方面,在分支到步骤S1609的情况下,将划分编号指向的多层划分分配表的分配状态设定为空,在步骤S1610中,设定为没有连接请求并结束处理。该处理在图14B的例示中与仅释放箭头242c、243c所示的本区域的处理对应。接着,参照图17A、图17B以及图17C详细说明图12的步骤S1208的处理。
图17A是说明尝试连接一次分配区域与相邻的空区域并将上位区域的分配状态设定为空的处理流程例的图。如图所示,在步骤S1701中,将释放划分层级设定为划分层级,在步骤S1703中,将分配划分编号设定为划分编号并进到步骤S1704。在步骤S1704中,从主划分编号管理表中取出划分层级指向的主划分编号,进到步骤S1705。在步骤S1705中,判定划分编号与主划分编号是否相等。当相等时分支到步骤S1710,当不相等时进到步骤S1706。在步骤S1706中,尝试释放划分编号指向的划分对。后面将会参照图17C详细说明步骤S1706的处理。接着,进到步骤S1707,判定是否具有连接请求。当没有连接请求时,意味着在图16的步骤S1605中判定为对的划分编号的分配状态不是空也不是空候选,因而结束区域的连接处理,当具有连接请求时,分支到步骤S1708以后的处理,尝试上位划分层级的区域的连接处理。在步骤S1708中,将划分层级设为上一位的层级,前进到步骤S1709,将划分编号除以值2而得到的商设定为划分编号,返回到步骤S1704。此外,在步骤S1708中,划分编号根据步骤S1706中的处理而成为偶数。在步骤S1705中判定为划分编号与主划分编号相等时而分支的步骤S1710中,将划分编号指向的多层划分分配表的分配状态设定为空并结束处理。在划分编号与主划分编号相等的情况下,由图3的例示可知,不存在与该划分编号成对的划分编号的区域,因而在步骤S1710中,将划分编号指向的多层划分分配表的分配状态设定为空并结束处理。图17B是参照图3所示的多层划分分配表310利用具体例子来说明尝试连接图17A和后述的图17C所示的一次分配区域与相邻的空区域并将上位区域的分配状态设定为空的处理的图。此外,在以下的说明中,有时将连接一次分配区域与相邻的空区域并将上位区域的分配状态设定为空简称作连接。图17B所示的例子是释放与图SB例示的内容同样的根据单比特请求进行一次分配的区域,因而与相邻区域连接并将上位划分层级的区域的分配状态设定为空。在图17B中,作为连接已释放的一次分配区域之前的分配状态的多层区域,例示图8B所示的一次分配后的虚拟分配区域280b的使用中的划分编号40的区域已被释放且空的划分编号11的区域283b正在使用中的多层区域280e。划分编号41的区域281b与划分编号21的区域282b的分配状态保持空的状态。从释放划分层级即划分层级I向不可能再进行连接处理的上位划分层级依次进行连接处理。即,连接与被释放的划分编号40的区域281a依次相邻的区域即不是使用中的区域。首先,图12所示的步骤S1207的判定是肯定的,因而对被释放的区域281a进行箭头240e所示的连接请求,进行释放划分层级即划分层级I的处理。附加有标号161e的划分层级I的划分分配表的与划分编号171的值为40的区域成对的划分编号41的区域的分配状态是空,因而具有将由划分编号40的区域与划分编号41的区域构成的划分对291d的上位划分层级的区域的分配状态设定为空的连接请求(箭头241e所示),如附加有标号161f的划分层级I的划分分配表所示,将划分编号40和对的划分编号41的分配状态设定为保留。如在图14B的说明中记述的那样,当将上位划分层级的区域设定为空时,将该区域中包 含的下位划分层级的区域的分配状态设定为保留,与图3所示的多层划分分配表310的初始设定的情况相同。在划分层级2中,由于具有连接请求,因而如箭头241f所示进行上位划分区域即附加有标号162e的连接前的划分层级2的划分分配表的划分编号20的区域的释放请求。与划分编号20的区域构成划分对292d的划分编号21的区域为空,因而如箭头242e所示具有连接请求,如附加有标号162f的连接后的划分层级2的划分分配表所示,将划分编号20和对的划分编号21的分配状态设定为保留。接着,在划分层级3中,由于具有连接请求,因而如箭头242f所示进行上位划分区域即附加有标号163e的连接前的划分层级2的划分分配表的划分编号10的区域的释放请求。与划分编号10的区域构成划分对293d的划分编号11的区域是使用中,因而如箭头243e所示仅将划分编号10的区域的分配状态设定为空,划分对293d的分配状态成为附加有标号163f的连接后的划分层级3的划分分配表所示的空和使用中。然后,由于没有连接请求,因而如虚线箭头243f所示成为上位区域,如划分层级4的划分分配表164所示,分配状态是使用中的划分编号5的区域未被释放,分配状态保持使用中的状态。根据以上区域的释放和连接的处理,如利用箭头273e和虚线箭头272f示出与多层划分分配表310的分配状态的对应那样,将一次分配区域与邻接的空区域连接后的分配状态的多层区域280f 划分成划分编号是10的空区域283e和划分编号是11的使用中区域283f0图17C是详细说明图17A的步骤S1706的处理的图,是说明尝试释放划分编号指向的划分对的处理流程例的图。这里,划分编号指向的划分对是指利用划分编号识别的划分单元所属的划分对这样的意思,如后面说明的那样,该划分编号不一定是小号。换言之,该划分编号不一定是偶数。如图17A所示的处理流程那样,从释放划分层级向上位划分层级的方向按照每个划分层级执行图17C所示的处理流程,连接空区域尝试释放上位划分层级的区域。如图所示,首先,在步骤S1711中,判定划分编号是否是偶数。图17C所示的处理流程与图16所示的类似,但如先前所述,在图17A即图12的步骤S1208的处理中,划分编号不一定是偶数。这是因为与被释放并且为空状态的一次分配区域对应的划分编号既有偶数的情况也有奇数的情况。例如,在图17B所示的使用中的区域283f是一次分配区域且该区域283f为空时,该划分编号是奇数11。当划分编号是偶数时,在步骤S1712中将划分编号加上值I而得到的值设定为对的划分编号并进到步骤S1714,当划分编号是奇数时,在步骤S1713中将划分编号减I而得到的值设定为对的划分编号并进到步骤S1714。在步骤S1714中,读出对的划分编号指向的多层划分分配表的分配状态,在步骤S1715中,判定读出的分配状态是否是空或空候选 。当读出的分配状态是空或空候选时,进到步骤S1716,当读出的分配状态既不是空也不是空候选时,分支到步骤S1719。在步骤S1716中,将划分编号指向的多层划分分配表的分配状态设定为保留,在步骤S1717中,将对的划分编号指向的多层划分分配表的分配状态设定为保留。接着,在步骤S1718中设定为具有连接请求并结束处理。这些步骤S1716 S1718的处理在图17B的例示中与箭头241e、242e所示的连接请求的处理对应。另一方面,在分支到步骤S1719的情况下,将划分编号指向的多层划分分配表的分配状态设定为空,在步骤S1720中,设定为没有连接请求并结束处理。这些处理在图17B的例示中与仅释放箭头243e所示的本区域的处理对应。此外,可知利用使例如图2C例示的数据处理装置301这样的计算机执行本发明的分区管理方法的程序,可在计算机上构建本发明的分区管理装置。因此,以下说明与本发明的分区管理装置相关的功能块结构例。图18A是说明本发明一个实施方式中的分区管理装置的功能块结构例的图。如图所示,分区管理装置800大致由初始化部810和多层划分管理部840构成。初始化部810和多层划分管理部840与图2B例示的分配系统(初始化部)101和分配系统(多层划分管理部)102相当。初始化部810包含取得分区的尺寸的分区尺寸取得单元820和多层划分分配表生成单元830。多层划分分配表生成单元830在利用互不相同的2的幂乘的和与分区的分配单位尺寸之积表示分区的尺寸时,利用尺寸是构成该和的各个2的幂乘与分区的分配单位尺寸之积的主区域,按照该尺寸的大小顺序分割分区,由此对该分区进行划分,将各主区域每次分割成二分之一而依次划分成各个尺寸的区域,直到成为分区的分配单位尺寸为止,生成多层划分分配表并进行初始化,该多层划分分配表与包含主区域的各个区域对应地存储表示该各个区域各自的分配状态的分配信息。另外,多层划分分配表生成单元830将包含分区的具有2的幂乘尺寸的最小分区设为假想分区,利用规定该假想分区的尺寸的2的幂乘尺寸的区域,将假想分区划分成假想主区域,将该假想主区域每次分割成二分之一而依次假想地划分成各个尺寸的区域,直到成为分区的分配单位尺寸为止,按照假想区域的划分层级顺序,在同一划分层级中按照该假想区域在假想分区内的配置顺序分配用于识别该假想划分成的假想区域的划分编号。通过参照图4A 图4C说明的处理流程例可实现该多层划分分配表生成单元830的功能。多层划分管理部840包含向文件或存储区域的空区域进行分配的区域分配单元850和根据文件或存储区域的分配来释放分配区域的区域释放单元860。图18B是说明本发明一个实施方式中的区域分配单元的功能块结构例的图。如图所示,区域分配单元850包含接受分配请求的分配请求接受单元851、空区域搜索单元852、二次分配单元853、分配划分编号输出单元,空区域搜索单元852包含虚拟分配单元857。通过参照图5说明的处理流程例可实现区域分配单元850的功能。空区域搜索单元852在分配请求中包含的尺寸即分配请求尺寸利用互不相同的2的幂乘的和与分区的分配单位尺寸之积表示是划分层级不同的区域尺寸之和时,搜索比该划分层级的最大层级大I的划分层级的空区域即尺寸比分配请求尺寸大的一次分配区域,在利用2的幂乘与上述分区的分配单位尺寸之积表示分配请求中包含的尺寸即分配请求尺寸时,搜索该分配请求尺寸的空区域作为一次分配区域。空区域搜索单元852的功能与图6、图9例示的处理流程对应。空区域搜索单元852中的虚拟分配单元857在一次分配区域的划分层级没能搜索到空区域时,参照多层划分分配表的与上位划分层级的区域对应的分配状态,搜索上位划分层级的空区域,将该区域作为虚拟分配区域,将上述多层划分分配表的分配状态设为使、用中,并且,将虚拟分配区域分割成一次分配区域和作为剩余区域的相邻多层区域,将与一次分配区域内的区域对应的多层划分分配表的分配状态设定为使用中,将与构成相邻多层区域的区域对应的多层划分分配表的分配状态设定为空状态,其中,所述相邻多层区域是按照划分层级从小到大的顺序连续分配划分层级不同的区域而得到的区域。虚拟分配单元857的功能与图7A和图8A、图IOA和图IOB例示的处理流程对应。二次分配单元853在一次分配区域的尺寸大于分配请求尺寸的情况下,将一次分配区域分割成二次分配区域和作为剩余区域的相邻多层区域,将与二次分配区域的各个区域对应的多层划分分配表的分配状态设定为使用中,将与构成相邻多层区域的区域对应的上述多层划分分配表的分配状态设定为空候选状态,其中,所述二次分配区域是按照划分层级从大到小的顺序连续分配划分层级不同的区域而得到的区域,所述相邻多层区域是按照划分层级从小到大的顺序连续分配划分层级不同的区域而得到的区域。二次分配单元853的功能与图11A、图IlB例示的处理流程对应。图18C是说明本发明一个实施方式中的区域释放单元的功能块结构例的图。如图所示,区域释放单元860包含接受释放请求的释放请求接受单元851、尝试释放一次分配区域内的区域的一次分配区域内释放单元862、尝试释放划分层级比一次分配区域的划分层级大的区域的上位区域释放单元863。区域释放单元860的功能与图12例示的处理流程例对应。一次分配区域内释放单元862在释放请求中包含的尺寸即释放请求尺寸是划分层级不同的区域之和时,求出相邻多层区域内的最小区域的划分编号,从该划分编号指向的多层划分分配表中读出分配状态,当读出的分配状态是空或空候选的状态时,将与二次分配区域内的最小区域和相邻多层区域内的最小区域对应的多层划分分配表的分配状态设定为保留,并且,尝试释放上一位划分层级的区域,当相邻多层区域内的最小区域的分配状态是使用中时,将二次分配区域内的最小区域的分配状态设为空状态。一次分配区域内释放单元862的功能与图14A例示的处理流程对应。上位区域释放单元863在一次分配区域被释放,且其划分编号指向的多层划分分配表的分配状态是空状态时,从多层划分分配表中读出以将与一次分配区域相同的划分层级即上一位划分层级的区域分割成2个时的一个区域为一次分配区域时的另一个区域的分配状态,当另一个区域的分配状态是空或空候选的状态时,将与上述一个区域和另一个区域对应的多层划分分配表的分配状态设定为保留,并且,尝试释放上位划分层级的区域,当另一个区域的分配状态是使用中时,将一个区域的分配状态作为空状态。上位区域释放单元863的功能与图17A例示的处理流程对应。以上对用于实施本发明的方式进行了详细说明,但本领域的普通技术人员可知本发明的实施方式不仅限于上述内容还可以进行各种变形。还可知以上说明的本发明实施方式的分区管理方法以及其等同物可利用使计算机执行这些方法的程序来实现。因此,上述程序以及存储有上述程序的计算机可读取的存储介质也包含在本发明的实施方式中。另夕卜,利用本发明的分区管理方法来管理该分区的存储装置也包含在本发明的实施方式中。并且,在存储装置由存储介质驱动装置和存储介质构成时,利用本发明的分区管理方法管理该分区的存储介质也包含在本发明的实施方式中。如以上说明的那样,根据本发明,能够与存储容量无关地、有效且高效地管理存储装置。另外,可通过采用多层划分分配表和多层 划分管理表对各划分层级的区域以多层的方式进行管理,对连续的区域进行文件分配。
权利要求
1.一种存储装置的分区管理装置,其特征在于, 该分区管理装置具有 初始化部,其包含多层划分分配表生成单元和取得分区的尺寸的分区尺寸取得单元,该多层划分分配表生成单元在利用互不相同的2的幂乘的和与所述分区的分配单位尺寸之积表示该分区的尺寸时,利用尺寸是构成该和的各个2的幂乘与所述分区的分配单位尺寸之积的主区域,按照该尺寸的顺序分割所述分区,由此划分该分区,将各个所述主区域每次分割成二分之一而依次划分成各个尺寸的区域,直到成为所述分区的分配单位尺寸为止,生成多层划分分配表并进行初始化,该多层划分分配表与包含所述主区域在内的各个区域对应地存储表示该各个区域各自的分配状态的分配信息;以及 多层划分管理部,其根据所述多层划分分配表中存储的所述分配信息,管理所述各个区域的分配, 当将规定所述区域的尺寸的2的幂乘的指数作为该区域的划分层级时,所述多层划分分配表按照所述区域的划分层级顺序,在同一划分层级中按照所述区域在所述分区内的配置顺序存储所述区域的分配信息, 所述多层划分分配表生成单元将包含所述分区的具有2的幂乘与所述分区的分配单位尺寸之积的尺寸的最小分区作为假想分区,利用尺寸是规定该假想分区的尺寸的2的幂乘与所述分区的分配单位尺寸之积的区域,将所述假想分区划分成假想主区域,将该假想主区域每次分割成二分之一而依次假想划分成各个尺寸的区域,直到成为所述分区的分配单位尺寸为止,将用于识别该假想划分成的假想区域的划分编号按照该假想区域的划分层级顺序,在同一划分层级中按照该假想区域在所述假想分区内的配置顺序进行分配, 所述多层划分管理部采用分配给所述区域对应的所述假想区域的所述划分编号,管理所述区域的分配。
2.根据权利要求I所述的分区管理装置,其特征在于, 所述多层划分分配表生成单元设定表示是空的空状态作为所述主区域的分配信息的初始值,设定表示不向分割所述主区域而得到的区域进行分配的空以外状态作为该区域的分配信息的初始值。
3.根据权利要求2所述的分区管理装置,其特征在于, 所述多层划分管理部包含 分配请求接受单元,其接受包含尺寸的文件或者存储区域的分配请求; 空区域搜索单元,其参照所述多层划分管理表,在所述分配请求中包含的尺寸即分配请求尺寸由互不相同的2的幂乘的和与所述分区的分配单位尺寸之积表示且是所述划分层级不同的区域的尺寸之和时,搜索作为比该划分层级的最大层级大I的划分层级的空区域的、尺寸比所述分配请求尺寸大的一次分配区域,求出与该一次分配区域对应的划分编号作为分配划分编号,在所述分配请求中包含的尺寸即分配请求尺寸由2的幂乘与所述分区的分配单位尺寸之积表示时,搜索该分配请求尺寸的空区域作为一次分配区域,求出与该一次分配区域对应的划分编号作为分配划分编号;二次分配单元,其在所述一次分配区域的尺寸大于所述分配请求尺寸时,将该一次分配区域分割成二次分配区域和作为剩余区域的相邻多层区域,求出与所述二次分配区域的各个区域对应的划分编号,将该划分编号对应的所述多层划分分配表的分配状态设定为使用中,求出与构成所述相邻多层区域的区域对应的划分编号,将该划分编号对应的所述多层划分分配表的分配状态设定为空候选状态,其中,所述二次分配区域是按照所述划分层级的顺序连续分配划分层级不同的区域而得到的区域,所述相邻多层区域是按照与分配所述二次分配区域的划分层级不同的区域的划分层级顺序相反的顺序,连续分配划分层级不同的区域而得到的区域;以及 分配划分编号输出单元,其输出所述分配划分编号作为所述文件或者存储区域的分配请求的分配结果之一, 所述二次分配区域内的最小区域与相邻多层区域内的最小区域的划分层级相等,是在所述多层划分分配表中对比所述划分层级上一位的划分层级的区域进行二分而得到的。
4.根据权利要求3所述的分区管理装置,其特征在于, 所述空区域搜索单元包含虚拟分配单元,该虚拟分配单元在所述一次分配区域的划分层级上没能搜索到空区域时,参照所述多层划分分配表的与上位划分层级的区域对应的分配状态,搜索上位划分层级的空区域,求出该区域的划分编号,将该划分编号的区域即虚拟分配区域分割成所述一次分配区域和作为剩余区域的相邻多层区域,求出与所述一次分配区域内的区域对应的划分编号,将该划分编号对应的所述多层划分分配表的分配状态设定为使用中,求出与构成所述相邻多层区域的区域对应的划分编号,将该划分编号对应的所述多层划分分配表的分配状态设定为空状态,其中,所述相邻多层区域是按照所述划分层级的顺序连续分配划分层级不同的区域而得到的区域。
5.根据权利要求4所述的分区管理装置,其特征在于, 所述空区域搜索单元在没能搜索到可分配被请求分配的文件或者存储区域的空状态的区域时,从所述多层划分分配表中搜索空候选状态的区域。
6.根据权利要求5所述的分区管理装置,其特征在于, 所述多层划分管理部具有 释放请求接受单元,其接受包含尺寸和分配划分编号的文件或者存储区域的释放请求; 一次分配区域内释放单元,其在所述释放请求中包含的尺寸即释放请求尺寸是所述划分层级不同的区域之和时,求出所述相邻多层区域内的最小区域的划分编号,从该划分编号指向的所述多层划分分配表中读出分配状态,当该读出的分配状态是空或者空候选的状态时,将与所述二次分配区域内的最小区域和相邻多层区域内的最小区域对应的所述多层划分分配表的分配状态设定为空或者空候选以外的状态,并且,尝试释放所述上一位的划分层级的区域,当所述相邻多层区域内的最小区域的分配状态是使用中时,将所述二次分配区域内的最小区域的分配状态设定为空状态;以及 上位区域释放单元,其在所述一次分配区域被释放,且其划分编号指向的所述多层划分分配表的分配状态是空状态时,从所述多层划分分配表中读出将作为与该一次分配区域相同的划分层级、对上一位的划分层级的区域进行二分时的一个区域作为所述一次分配区域时的另一个区域的分配状态,当该另一个区域的分配状态是空或者空候选的状态时,将与所述一个区域和另一个区域对应的所述多层划分分配表的分配状态设定为空或者空候选以外的状态,并且,尝试释放所述上位划分层级的区域,当所述另一个区域的分配状态是使用中时,将所述一个区域的分配状态设定为空状态。
7.一种计算机执行的存储装置的分区管理方法,其特征在于, 该分区管理方法具有以下的步骤 分区尺寸取得步骤,取得分区的尺寸; 多层划分分配表生成步骤,在利用互不相同的2的幂乘的和与所述分区的分配单位尺寸之积表示该分区的尺寸时,利用尺寸是构成该和的各个2的幂乘与所述分区的分配单位尺寸之积的主区域,按照该尺寸的顺序分割所述分区,由此划分该分区,将各个所述主区域每次分割成二分之一而依次划分成各个尺寸的区域,直到成为所述分区的分配单位尺寸为止,生成多层划分分配表并进行初始化,该多层划分分配表与包含所述主区域在内的各个区域对应地存储表示该各个区域各自的分配状态的分配信息;以及 多层划分管理步骤,根据所述多层划分分配表中存储的所述分配信息,管理所述各个区域的分配, 当将规定所述区域的尺寸的2的幂乘的指数作为该区域的划分层级时,所述多层划分分配表按照所述区域的划分层级顺序,在同一划分层级中按照所述区域在所述分区内的配置顺序存储所述区域的分配信息, 在所述多层划分分配表生成步骤中,将包含所述分区的具有2的幂乘与所述分区的分配单位尺寸之积的尺寸的最小分区作为假想分区,利用尺寸是规定该假想分区的尺寸的2的幂乘与所述分区的分配单位尺寸之积的区域,将所述假想分区划分成假想主区域,将该假想主区域每次分割成二分之一而依次假想划分成各个尺寸的区域,直到成为所述分区的分配单位尺寸为止,将用于识别该假想划分成的假想区域的划分编号按照该假想区域的划分层级顺序,在同一划分层级中按照该假想区域在所述假想分区内的配置顺序进行分配,在所述多层划分管理步骤中,采用分配给所述区域对应的所述假想区域的所述划分编号,管理所述区域的分配。
8.根据权利要求7所述的分区管理方法,其特征在于, 在所述多层划分分配表生成步骤中,设定表示是空的空状态作为主区域的分配信息的初始值,设定表示不向分割所述主区域而得到的区域进行分配的空以外状态作为该区域的分配信息的初始值。
9.根据权利要求8所述的分区管理方法,其特征在于, 所述多层划分管理步骤包含以下的步骤 分配请求接受步骤,接受包含尺寸的文件或者存储区域的分配请求; 空区域搜索步骤,参照所述多层划分管理表,在所述分配请求中包含的尺寸即分配请求尺寸由互不相同的2的幂乘的和与所述分区的分配单位尺寸之积表示且是所述划分层级不同的区域的尺寸之和时,搜索作为比该划分层级的最大层级大I的划分层级的空区域的、尺寸比所述分配请求尺寸大的一次分配区域,求出与该一次分配区域对应的划分编号作为分配划分编号,在利用2的幂乘与所述分区的分配单位尺寸之积表示所述分配请求中包含的尺寸即分配请求尺寸时,搜索该分配请求尺寸的空区域作为一次分配区域,求出与该一次分配区域对应的划分编号作为分配划分编号; 二次分配步骤,在所述一次分配区域的尺寸大于所述分配请求尺寸时,将该一次分配区域分割成二次分配区域和作为剩余区域的相邻多层区域,求出与所述二次分配区域的各个区域对应的划分编号,将该划分编号对应的所述多层划分分配表的分配状态设定为使用中,求出与构成所述相邻多层区域的区域对应的划分编号,将该划分编号对应的所述多层划分分配表的分配状态设定为空候选状态,其中,所述二次分配区域是按照所述划分层级的顺序连续分配划分层级不同的区域而得到的区域,所述相邻多层区域是按照与分配所述二次分配区域的划分层级不同的区域的划分层级顺序相反的顺序,连续分配划分层级不同的区域而得到的区域;以及 分配划分编号输出步骤,输出所述分配划分编号作为所述文件或者存储区域的分配请求的分配结果之一, 所述二次分配区域内的最小区域与相邻多层区域内的最小区域的划分层级相等,是在所述多层划分分配表中对比所述划分层级上一位的划分层级的区域进行二分而得到的。
10.根据权利要求9所述的分区管理方法,其特征在于, 所述空区域搜索步骤包含虚拟分配步骤,在该虚拟分配步骤中,在所述一次分配区域的划分层级上没能搜索到空区域时,参照所述多层划分分配表的与上位划分层级的区域对应的分配状态,搜索上位划分层级的空区域,求出该区域的划分编号,将该划分编号的区域即虚拟分配区域分割成所述一次分配区域和作为剩余区域的相邻多层区域,求出与所述一次分配区域内的区域对应的划分编号,将该划分编号对应的所述多层划分分配表的分配状态设定为使用中,求出与构成所述相邻多层区域的区域对应的划分编号,将该划分编号对应的所述多层划分分配表的分配状态设定为空状态,其中,所述相邻多层区域是按照所述划分层级的顺序连续分配划分层级不同的区域而得到的区域。
11.根据权利要求10所述的分区管理方法,其特征在于, 在所述空区域搜索步骤中,在没能搜索到可分配被请求分配的文件或者存储区域的空状态的区域时,从所述多层划分分配表中搜索空候选状态的区域。
12.根据权利要求11所述的分区管理方法,其特征在于, 所述多层划分管理步骤包含以下的步骤 释放请求接受步骤,接受包含尺寸和分配划分编号的文件或者存储区域的释放请求; 一次分配区域内释放步骤,在所述释放请求中包含的尺寸即释放请求尺寸是所述划分层级不同的区域之和时,求出所述相邻多层区域内的最小区域的划分编号,从该划分编号指向的所述多层划分分配表中读出分配状态,当该读出的分配状态是空或者空候选的状态时,将与所述二次分配区域内的最小区域和相邻多层区域内的最小区域对应的所述多层划分分配表的分配状态设定为空或者空候选以外的状态,并且,尝试释放所述上一位的划分层级的区域,当所述相邻多层区域内的最小区域的分配状态是使用中时,将所述二次分配区域内的最小区域的分配状态设定为空状态;以及 上位区域释放步骤,在所述一次分配区域被释放,且其划分编号指向的所述多层划分分配表的分配状态是空状态时,从所述多层划分分配表中读出将作为与该一次分配区域相同的划分层级、对上一位的划分层级的区域进行二分时的一个区域作为所述一次分配区域时的另一个区域的分配状态,当该另一个区域的分配状态是空或者空候选的状态时,将与所述一个区域和另一个区域对应的所述多层划分分配表的分配状态设定为空或者空候选以外的状态,并且,尝试释放所述上位划分层级的区域,当所述另一个区域的分配状态是使用中时,将所述一个区域的分配状态设定为空状态。
13.一种程序,其特征在于,该程序使计算机执行权利要求7 12中的任意一项所述的方法。
14.一种计算机可读取的记录介质,其特征在于,该记录介质记录有使计算机执行权利要求7 12中的任意一项所述的方法的程序。
15.一种存储装置,其特征在于,该存储装置利用权利要求7所述的分区管理方法来管理分区。
16.一种存储介质,其特征在于,该存储介质利用权利要求7所述的分区管理方法来管理分区。
全文摘要
本发明提供可与存储装置的容量无关地、灵活地分区并管理区域,当对分区分配文件时可利用高效的方法来有效灵活应用区域的技术。在利用互不相同的2的幂乘和表示存储装置的分区尺寸,将构成和的各个2的幂乘尺寸的区域作为主区域时,划分成将各个主区域依次每次分割成二分之一后的尺寸的各个尺寸区域,生成存储分配信息的分配表,该分配信息表示包含主区域的各个尺寸区域各自的文件的分配状态。识别各个区域的分配信息的划分编号根据包含分区的2的幂乘尺寸的假想区域进行分配。根据分配表中存储的分配信息来管理分区。
文档编号G06F12/02GK102754085SQ20118000931
公开日2012年10月24日 申请日期2011年2月9日 优先权日2010年2月15日
发明者吉冈诚, 国分光裕, 新庄敏男 申请人:新叶股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1