内存分配及管理的方法

文档序号:6469857阅读:185来源:国知局
专利名称:内存分配及管理的方法
技术领域
本发明是有关于一种内存分配及管理的方法,且特别是有关于一种不具有 操作系统的内存分配及管理的方法。
背景技术
随着计算机的发展日新月异,计算机应用范围也从早期的科学计算,到数 据处理、生产管理、计算机辅助系统及通信联络等与人类生活相关的各个层面。 电子产业中,内存装置对于各种运算系统、计算机、及外围装置中皆有相当重 要的应用,随着对系统的操作速度及效能的日益提高,对于内存的速度及其管 理的要求亦随之提高。
在具有操作系统(operatkm system; OS)的环境下,内存的管理与分配会由 一套对应的算法(algorithms)进行实做,使程序设计师在开发软件的时候,可以 不用考虑到内存有效的使用与分配。
但是,若是在不具有操作系统的环境,或是己经分配到一块内存空间后, 如何在此环境中自行管理与使用内存,尤其是简单而有效率的使用内存,便成 为一个重要的课题。
因此本发明提出了一种可在不具有操作系统的环境下,分配及管理操作系 统的方法。

发明内容
因此本发明的目的就是在提供一种内存分配及管理的方法,以在不具有操 作系统的环境下管理及分配内存。
为了实现上述目的,本发明提出一种内存分配及管理的方法,以在不具有
操作系统的环境下,分配一内存的空间,包含接收一分配要求;搜寻内存,
以得到符合分配要求的多个内存区块;在符合要求的内存区块中,选出一最小 内存区块;将分配要求分配至最小内存区块,使最小内存区块切割为一己使用
4内存区块与一未使用内存区块;提供一第一区块标头给已使用内存区块;以及 提供一第二区块标头给未使用内存区块。
提供第一区块标头的步骤包含将一次一区块标头的位置写入第一区块标 头的第四字段,将已使用内存区块的大小写入第一区块标头的第五字段,将第 一区块标头的第六字段标记为已使用。提供一第二区块标头的步骤包含将一次 一区块标头的位置写入第二区块标头的第四字段,将未使用内存区块的大小写 入第二区块标头的第五字段,将第二区块标头的第六字段标记为未使用。此方 法更包含修改内存的一内存标头。
为了实现上述目的,本发明的另一实施例是提供一种内存分配及管理的方 法,以在不具有操作系统的环境下,释放一内存的空间,包含接收内存区块 的释放要求;判断所释放的内存区块的的前一内存区块与后一内存区块是否被 使用;以及修改所释放的内存区块的区块标头,将区块标头中的第六字段标示 为未使用。
其中当前一内存区块未被使用时,包含合并前一内存区块与所释放的内存 区块,其中还包含修改前一内存区块的一区块标头,以及删除所释放的内存区 块的区块标头。当后一内存区块未被使用时,包含合并后一内存区块及所释放 的内存区块,其中还包含修改所释放的内存区块的区块标头,并删除后一内存 区块的区块标头。此方法中还包含修改内存的一内存标头。
本发明的内存分配与管理的方法可透过简单而有效率的方式,在不具有操 作系统的环境下,如Option ROM的环境下,自行分配与管理内存空间。Option ROM可包含在基本输入输出系统(Basic Input-output system; BIOS)之中,或是 建在视频图形阵列卡(VGA card)、局域网络卡(Lan card)、磁盘阵列卡(RAID card)等硬件上。


为让本发明的所述和其它目的、^r征、优点与实施例能更明显易懂,所附
附图的详细说明如下
图1是本发明的内存分配及管理的方法一较佳实施例的示意图2是本发明的内存分配及管理方法第一实施例的流程图3A与图3B是本发明的内存分配及管理方法第一实施例的实施示意图;图4是本发明的内存分配及管理的方法第二实施例的流程图5A及图5B是本发明的内存分配及管理方法第二实施例的实施示意图;图6A与图6B是本发明的内存分配与管理方法第二实施例的另一实施示意图。
主要组件符号说明
100:内存102:已使用内存区块
104:未使用内存区块110:内存标头
112:第一字段114:第二字段
116:第三字段120:区块标头
122:第四字段124:第五字段
126:第六字段210 260:步骤
300:内存302:内存标头
304:第一字段306:第二字段
308:第三字段310:内存区块
312:区块标头314:第四字段
316:第五字段318:第六字段
330:己使用内存区块332:第一区块标头
334:第四字段336:第五字段
338:第六字段340:未使用内存区块
342:第二区块标头344:第四字段
346:第五字段348:第六字段
410 470:步骤500:内存
510:第一内存区块520:第二内存区块
522:第二区块标头528:第六字段
530:第三内存区块600:内存
610:第一内存区块612:第一区块标头
614:第四字段616:第五字段618:第六字段620:第二内存区块
622:第二区块标头630:第三内存区块
632:第三区块标头640:较大内存区块
具体实施例方式
以下将以附图及详细说明清楚说明本发明的精神,任何所属技术领域中具有通常知识者在了解本发明的较佳实施例后,当可由本发明所教示的技术,加以改变及修饰,其并不脱离本发明的精神与范围。
当内存要求一块连续的内存空间时,即便是所有未使用的片段
(fragmentation)的内存空间加起来的和满足需求,仍无法符合连续空间的内存需求,此次要求失败。因此,本发明便提出一种内存分配与管理的方法,特别是应用在无操作系统的环境下进行动态配置,以在不知道接下来所需要内存大小或是不知道被释放的空间的大小时,尽可能的分配出一大块的连续内存空间。
参照图1,其是本发明的内存分配及管理的方法一较佳实施例的示意图。内存100具有一内存标头(memory header)110,而在每一次分配内存时,在已使用内存区块102与未使用内存区块104中加入区块标头(block header)120,以记录内存分配的相关信息。
内存标头110中包含有一第一字段112、一第二字段114、一第三字段116。其中第一字段112是用以记录第一个区块标头120的起始位置,第二字段114是用以记录整块内存100空间的大小,第三字段116则是用以记录已分配出出去的内存空间大小。其中第一字段112、第二字段114、第三字段116各占用4个位(byte),内存标头110共占用12个位。
区块标头120中则包含有一第四字段122、 一第五字段124、 一第三字段126。其中第四字段122是用以记录次一区块标头的起始位置,第五字段124是用以记录此己使用内存区块102或未使用内存区块104的大小。第六字段126则是表示此区块是为已使用或是未使用。其中第四字段122、第五字段124各占用4个位,第六字段126占用1个位,每一个区块标头120共占用9个位,所占用的空间相当少,可以提供更多的内存空间以供分配,并通过第六标头126标示区块的状态,让分配更为容易。
参照图2,其是本发明的内存分配及管理方法第一实施例的流程图。本实施例是用以在接收到分配内存要求时,找出片段的内存区块中最小可被利用的内存空间进行分配,以保留区块较大的内存,预留给之后的要求。步骤210为接收一分配内存的要求,步骤220为搜寻目前符合此要求大小的未使用内存区块,若是找不到符合要求的未使用内存区块,则进入步骤230,回复结果为零。若是找到符合要求的未使用内存区块,则进入步骤240,在这些符合要求的未使用内存区块中,选出一个最小且符合要求的内存区块对其分配,接着,步骤250为在分配到的内存区块加入区块标头,并将对应的数据写入区块标头中的第四字段、第五字段,并更改第六字段中的状态。最后,步骤260为修改内存标头中的第三字段。
参照图3A与图3B,其是本发明的内存分配及管理方法第一实施例的实施示意图。图3A中,内存300只有在起始位置的一大块未使用内存区块310符合此次要求,内存标头302中的第一字段304记录此内存区块310的区块标头312位置,第二字段306为记录全部内存空间的大小,第三字段308为记录已分配的内存大小。内存区块310的区块标头312的第四区块314则是记录次一区块标头(图中未显示)的位置,第五字段316则是记录此内存区块310的区块大小,第六字段318则是表示此区块未被使用。
将要求分配至此内存区块310后,如图3B所示,此区块被分割为已使用内存区块330及未使用内存区块340,并在已使用内存区块330与未使用内存区块340之前各自提供第一区块标头332、第二区块标头342,其中已使用内存区块330的大小为按照此次要求分配。
内存标头302的第一字段304为指向已使用内存区块330的第一区块标头332的起始位置,第二字段306为记录所有内存空间的大小,第三字段308则为记录以分配出去的内存空间大小。
已使用内存区块330的第一区块标头332可沿用原区块标头312的位置,第一区块标头332的第四字段334为指向次一内存区块,即未使用内存区块340的第二区块标头342的起始位置。第一区块标头332的第五字段336则是用以记录此分配的已使用内存区块330的大小,第六字段338则是标记此区块为已使用。
未使用内存区块340的第二区块标头342的第四字段344为指向其次一内存区块(图中未示)的区块标头起始位置,第五字段346为记录此未使用内存区块340的大小,以提供下次要求进行比对。第六字段348标记此区块未被使用。
本发明的内存分配及管理方法,可透过区块标头了解每一个内存区块的起始位置、区块大小、使用状态,以在标记为未使用的内存区块中选取一个符合分配要求的最小内存区块进行分配,继而保留较大的内存区块给之后的要求。参照图,其是本发明的内存分配及管理的方法第二实施例的流程图。本实施例是用以在完成指令之后,改写区块标头的第六字段,将此内存区块标记为未使用,以释放此内存区块的空间,并更新内存标头的第三字段中的已分配内存大小的数据。
步骤410为接收释放一内存区块的要求,步骤420为判断所释放的内存区块的前后区块是否均被使用,如前后的内存区块均被使用,则进入步骤430,修改所释放的内存区块的区块标头中的第六字段,将其标记为未使用,接着,步骤440为回复动作完成。
若是在步骤420中,所释放的内存区块的前一内存区块及/或后一内存区块未被使用,则进入步骤450,合并所释放的内存区块与未使用的前一内存区块及/或后一内存区块。步骤450中,还包含有保留排列在前的区块标头,刪除排列在后的区块标头,以释放区块标头所占用的空间。步骤460中,还包含将合并后的未使用内存区块的数据写入所保留的区块标头,并进一步修改内存标头中的数据。接着步骤470为回复动作完成。
同时参照图5A及图5B,其是本发明的内存分配及管理方法第二实施例的实施示意图。图5A中,内存500中包含有一第一内存区块510、 一第二内存区块520、 一第三内存区块530。此时,第一内存区块510、第二内存区块520、第三内存区块530均是处于使用状态中。
图5B中,第二内存区块520的工作已经结束,其前后的第一内存区块510与第三内存区块530的工作仍在进行中。在将第二内存区块520释放出来后,修改第二内存区块520的第二区块标头522中的第六字段528,将第六字段528的状态改为未使用,并进一步修改内存标头(图中未示)中的第三字段。
同时参照图6A与图6B,其是本发明的内存分配与管理方法第二实施例的另一实施示意图。本实施例中,内存600中包含有一第一内存区块610、 一第二内存区块620、 一第三内存区块630,其中第二内存区块620已被分配出去进行工作,在其前后的第一内存区块610与第三内存区块630则是未被使用。当第二内存区块620的工作结束后,第二内存区块620的空间可被释放出来。
由于第二内存区块620前后的第一内存区块610与第二内存区块630均是
9未使用的内存区块,因此,在将第二内存区块620释放后,可合并第一内存区 块610、第二内存区块620、第三内存区块630为如第6B图中所示的一块较 大内存区块640。
其中,排列在前的第一区块标头612在合并时被保留,排列在后的第二区 块标头622与第三区块标头632则被删除,以释放第二区块标头622与第三区 块标头632的空间。图6B中,第一区块标头612为记录此较大内存区块640 的数据,第四字段614为指向次一内存区块的区块标头的起始位置,第五字段 616为记录此较大内存区块640的空间大小,第六字段618为标示此较大内存 区块640为未使用状态,并进一步修改内存标头(图中未示)的第三字段。
本发明的内存分配与管理的方法可透过简单而有效率的方式,在不具有操 作系统的环境下,如Option ROM的环境下,自行分配与管理内存空间。Option ROM可包含在基本输入输出系统(Basic Input-output system; BIOS)之中,或是 建在视频图形阵列卡(VGA card)、局域网络卡(Lan card)、磁盘阵列卡(RAID card)等硬件上。
虽然本发明己以一较佳实施例揭露如上,然其并非用以限定本发明,任何 熟悉此技术的人员,在不脱离本发明的精神和范围内,当可作各种的更动与润 饰,因此本发明的保护范围当视权利要求书所界定的范围为准。
权利要求
1.一种内存分配及管理的方法,其特征在于,以在不具有操作系统的环境下,分配一内存的空间,包含接收一分配要求;搜寻该内存,以得到符合该分配要求的多个内存区块;在符合要求的所述多个内存区块中,选出一最小内存区块;将该分配要求分配至该最小内存区块,使该最小内存区块切割为一已使用内存区块与一未使用内存区块;提供一第一区块标头给该已使用内存区块;以及提供一第二区块标头给该未使用内存区块。
2. 根据权利要1所述的内存分配及管理的方法,其特征在于,提供一第一 区块标头的步骤包含将一次一区块标头的位置写入该第一区块标头的一第四字段。
3. 根据权利要1所述的内存分配及管理的方法,其特征在于,提供一第一区块标头的步骤包含将该己使用内存区块的大小写入该第一区块标头的一第五字段。
4. 根据权利要1所述的内存分配及管理的方法,其特征在于,提供一第一区块标头的步骤包含将该第一区块标头的一第六字段标记为已使用。
5. 根据权利要1所述的内存分配及管理的方法,其特征在于,提供一第二区块标头的步骤包含将一次一区块标头的位置写入该第二区块标头的一第四字段。
6. 根据权利要1所述的内存分配及管理的方法,其特征在于,提供一第二区块标头的步骤包含将该未使用内存区块的大小写入该第二区块标头的一第五字段。
7. 根据权利要1所述的内存分配及管理的方法,其特征在于,提供一第二区块标头的步骤包含将该第二区块标头的一第六字段标记为未使用。
8. —种内存分配及管理的方法,其特征在于,以在不具有操作系统的环境下,释放一内存的空间,包含接收一内存区块的释放要求;判断所释放的该内存区块的的一前一内存区块与一后一内存区块是否被使用;以及修改所释放的该内存区块的一区块标头,将该区块标头中的一第六字段标 示为未使用。
9. 根据权利要8所述的内存分配及管理的方法,其特征在于,当该前一 内存区块未被使用时,包含合并该前一内存区块与所释放的该内存区块。
10. 根据权利要8所述的内存分配及管理的方法,其特征在于,当该后一 内存区块未被使用时,包含合并该后一内存区块及所释放的该内存区块。
全文摘要
本发明涉及一种内存分配及管理的方法,以在不具有操作系统的环境下,分配内存的空间,包含接收一分配要求;搜寻内存,以得到符合分配要求的多个内存区块;在符合要求的内存区块中,选出一最小内存区块;将分配要求分配至最小内存区块,使最小内存区块切割为一已使用内存区块与一未使用内存区块;提供一第一区块标头给已使用内存区块;以及提供一第二区块标头给未使用内存区块。
文档编号G06F12/02GK101676883SQ20081021152
公开日2010年3月24日 申请日期2008年9月17日 优先权日2008年9月17日
发明者郑仰民 申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1