CN101676883A - 内存分配及管理的方法 - Google Patents
内存分配及管理的方法 Download PDFInfo
- Publication number
- CN101676883A CN101676883A CN200810211521A CN200810211521A CN101676883A CN 101676883 A CN101676883 A CN 101676883A CN 200810211521 A CN200810211521 A CN 200810211521A CN 200810211521 A CN200810211521 A CN 200810211521A CN 101676883 A CN101676883 A CN 101676883A
- Authority
- CN
- China
- Prior art keywords
- memory
- block
- memory block
- header
- field
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种内存分配及管理的方法,以在不具有操作***的环境下,分配内存的空间,包含接收一分配要求;搜寻内存,以得到符合分配要求的多个内存区块;在符合要求的内存区块中,选出一最小内存区块;将分配要求分配至最小内存区块,使最小内存区块切割为一已使用内存区块与一未使用内存区块;提供一第一区块标头给已使用内存区块;以及提供一第二区块标头给未使用内存区块。
Description
技术领域
本发明是有关于一种内存分配及管理的方法,且特别是有关于一种不具有操作***的内存分配及管理的方法。
背景技术
随着计算机的发展日新月异,计算机应用范围也从早期的科学计算,到数据处理、生产管理、计算机辅助***及通信联络等与人类生活相关的各个层面。电子产业中,内存装置对于各种运算***、计算机、及***装置中皆有相当重要的应用,随着对***的操作速度及效能的日益提高,对于内存的速度及其管理的要求亦随之提高。
在具有操作***(operation system;OS)的环境下,内存的管理与分配会由一套对应的算法(algorithms)进行实做,使程序设计师在开发软件的时候,可以不用考虑到内存有效的使用与分配。
但是,若是在不具有操作***的环境,或是已经分配到一块内存空间后,如何在此环境中自行管理与使用内存,尤其是简单而有效率的使用内存,便成为一个重要的课题。
因此本发明提出了一种可在不具有操作***的环境下,分配及管理操作***的方法。
发明内容
因此本发明的目的就是在提供一种内存分配及管理的方法,以在不具有操作***的环境下管理及分配内存。
为了实现上述目的,本发明提出一种内存分配及管理的方法,以在不具有操作***的环境下,分配一内存的空间,包含:接收一分配要求;搜寻内存,以得到符合分配要求的多个内存区块;在符合要求的内存区块中,选出一最小内存区块;将分配要求分配至最小内存区块,使最小内存区块切割为一已使用内存区块与一未使用内存区块;提供一第一区块标头给已使用内存区块;以及提供一第二区块标头给未使用内存区块。
提供第一区块标头的步骤包含将一次一区块标头的位置写入第一区块标头的第四字段,将已使用内存区块的大小写入第一区块标头的第五字段,将第一区块标头的第六字段标记为已使用。提供一第二区块标头的步骤包含将一次一区块标头的位置写入第二区块标头的第四字段,将未使用内存区块的大小写入第二区块标头的第五字段,将第二区块标头的第六字段标记为未使用。此方法更包含修改内存的一内存标头。
为了实现上述目的,本发明的另一实施例是提供一种内存分配及管理的方法,以在不具有操作***的环境下,释放一内存的空间,包含:接收内存区块的释放要求;判断所释放的内存区块的的前一内存区块与后一内存区块是否被使用;以及修改所释放的内存区块的区块标头,将区块标头中的第六字段标示为未使用。
其中当前一内存区块未被使用时,包含合并前一内存区块与所释放的内存区块,其中还包含修改前一内存区块的一区块标头,以及删除所释放的内存区块的区块标头。当后一内存区块未被使用时,包含合并后一内存区块及所释放的内存区块,其中还包含修改所释放的内存区块的区块标头,并删除后一内存区块的区块标头。此方法中还包含修改内存的一内存标头。
本发明的内存分配与管理的方法可透过简单而有效率的方式,在不具有操作***的环境下,如Option ROM的环境下,自行分配与管理内存空间。OptionROM可包含在基本输入输出***(Basic Input-output system;BIOS)之中,或是建在视频图形阵列卡(VGA card)、局域网络卡(Lan card)、磁盘阵列卡(RAIDcard)等硬件上。
附图说明
为让本发明的所述和其它目的、特征、优点与实施例能更明显易懂,所附附图的详细说明如下:
图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均是未使用的内存区块,因此,在将第二内存区块620释放后,可合并第一内存区块610、第二内存区块620、第三内存区块630为如第6B图中所示的一块较大内存区块640。
其中,排列在前的第一区块标头612在合并时被保留,排列在后的第二区块标头622与第三区块标头632则被删除,以释放第二区块标头622与第三区块标头632的空间。图6B中,第一区块标头612为记录此较大内存区块640的数据,第四字段614为指向次一内存区块的区块标头的起始位置,第五字段616为记录此较大内存区块640的空间大小,第六字段618为标示此较大内存区块640为未使用状态,并进一步修改内存标头(图中未示)的第三字段。
本发明的内存分配与管理的方法可透过简单而有效率的方式,在不具有操作***的环境下,如Option ROM的环境下,自行分配与管理内存空间。OptionROM可包含在基本输入输出***(Basic Input-output system;BIOS)之中,或是建在视频图形阵列卡(VGA card)、局域网络卡(Lan card)、磁盘阵列卡(RAIDcard)等硬件上。
虽然本发明已以一较佳实施例揭露如上,然其并非用以限定本发明,任何熟悉此技术的人员,在不脱离本发明的精神和范围内,当可作各种的更动与润饰,因此本发明的保护范围当视权利要求书所界定的范围为准。
Claims (10)
1.一种内存分配及管理的方法,其特征在于,以在不具有操作***的环境下,分配一内存的空间,包含:
接收一分配要求;
搜寻该内存,以得到符合该分配要求的多个内存区块;
在符合要求的所述多个内存区块中,选出一最小内存区块;
将该分配要求分配至该最小内存区块,使该最小内存区块切割为一已使用内存区块与一未使用内存区块;
提供一第一区块标头给该已使用内存区块;以及
提供一第二区块标头给该未使用内存区块。
2.根据权利要1所述的内存分配及管理的方法,其特征在于,提供一第一区块标头的步骤包含将一次一区块标头的位置写入该第一区块标头的一第四字段。
3.根据权利要1所述的内存分配及管理的方法,其特征在于,提供一第一区块标头的步骤包含将该已使用内存区块的大小写入该第一区块标头的一第五字段。
4.根据权利要1所述的内存分配及管理的方法,其特征在于,提供一第一区块标头的步骤包含将该第一区块标头的一第六字段标记为已使用。
5.根据权利要1所述的内存分配及管理的方法,其特征在于,提供一第二区块标头的步骤包含将一次一区块标头的位置写入该第二区块标头的一第四字段。
6.根据权利要1所述的内存分配及管理的方法,其特征在于,提供一第二区块标头的步骤包含将该未使用内存区块的大小写入该第二区块标头的一第五字段。
7.根据权利要1所述的内存分配及管理的方法,其特征在于,提供一第二区块标头的步骤包含将该第二区块标头的一第六字段标记为未使用。
8.一种内存分配及管理的方法,其特征在于,以在不具有操作***的环境下,释放一内存的空间,包含:
接收一内存区块的释放要求;
判断所释放的该内存区块的的一前一内存区块与一后一内存区块是否被使用;以及
修改所释放的该内存区块的一区块标头,将该区块标头中的一第六字段标示为未使用。
9.根据权利要8所述的内存分配及管理的方法,其特征在于,当该前一内存区块未被使用时,包含合并该前一内存区块与所释放的该内存区块。
10.根据权利要8所述的内存分配及管理的方法,其特征在于,当该后一内存区块未被使用时,包含合并该后一内存区块及所释放的该内存区块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810211521A CN101676883A (zh) | 2008-09-17 | 2008-09-17 | 内存分配及管理的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200810211521A CN101676883A (zh) | 2008-09-17 | 2008-09-17 | 内存分配及管理的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101676883A true CN101676883A (zh) | 2010-03-24 |
Family
ID=42029453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200810211521A Pending CN101676883A (zh) | 2008-09-17 | 2008-09-17 | 内存分配及管理的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101676883A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853210A (zh) * | 2010-05-25 | 2010-10-06 | 惠州华阳通用电子有限公司 | 一种内存管理方法及装置 |
CN104111896A (zh) * | 2014-07-30 | 2014-10-22 | 云南大学 | 大数据处理中的虚拟内存管理方法及其装置 |
CN106469121A (zh) * | 2016-09-09 | 2017-03-01 | 深圳大学 | 一种内存分配的方法及装置 |
CN107015914A (zh) * | 2016-01-28 | 2017-08-04 | 长城汽车股份有限公司 | 数据标定方法及*** |
-
2008
- 2008-09-17 CN CN200810211521A patent/CN101676883A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101853210A (zh) * | 2010-05-25 | 2010-10-06 | 惠州华阳通用电子有限公司 | 一种内存管理方法及装置 |
CN104111896A (zh) * | 2014-07-30 | 2014-10-22 | 云南大学 | 大数据处理中的虚拟内存管理方法及其装置 |
CN104111896B (zh) * | 2014-07-30 | 2017-07-14 | 云南大学 | 大数据处理中的虚拟内存管理方法及其装置 |
CN107015914A (zh) * | 2016-01-28 | 2017-08-04 | 长城汽车股份有限公司 | 数据标定方法及*** |
CN106469121A (zh) * | 2016-09-09 | 2017-03-01 | 深圳大学 | 一种内存分配的方法及装置 |
CN106469121B (zh) * | 2016-09-09 | 2019-12-13 | 深圳大学 | 一种内存分配的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101606130B (zh) | 在处理器***的指令级使能资源分配标识的方法和装置 | |
CN101221536B (zh) | 嵌入式***的内存管理方法及装置 | |
EP3639144B1 (en) | Memory management in non-volatile memory | |
EP1619584A1 (en) | Memory allocation | |
CN102169461B (zh) | 存储器*** | |
US20170286008A1 (en) | Smart storage platform apparatus and method for efficient storage and real-time analysis of big data | |
CN101344861B (zh) | 一种智能卡内存管理方法 | |
CN103384877A (zh) | 包括闪存的存储***和存储控制方法 | |
CN102707966A (zh) | 加速操作***启动的方法及装置、预取信息生成方法及装置和终端 | |
CN1996258A (zh) | 一种动态内存池的实现方法 | |
CN101180612A (zh) | 计算机***、存储器管理方法及其程序 | |
CN103455379A (zh) | 资源分配方法及*** | |
US9697111B2 (en) | Method of managing dynamic memory reallocation and device performing the method | |
CN101918913A (zh) | 自动精简配置存储设备上的存储收回 | |
CN104850505B (zh) | 基于链式堆叠的内存管理方法与*** | |
US10049035B1 (en) | Stream memory management unit (SMMU) | |
CN106557427A (zh) | 共享内存数据库的内存管理方法及装置 | |
KR20170093666A (ko) | 컴포지트 메모리 장치를 포함하는 전자 장치에 파일 시스템을 제공하는 시스템 및 방법 | |
CN101676883A (zh) | 内存分配及管理的方法 | |
CN102819494A (zh) | 一种闪存顺序写入时的优化方法 | |
CN103365784A (zh) | 内存回收与分配的方法及装置 | |
CN112148226A (zh) | 一种数据存储方法及相关装置 | |
CN100583064C (zh) | 用于从别名地址池中移除别名地址的方法和设备 | |
CN104156316B (zh) | 一种Hadoop集群批处理作业的方法及*** | |
CN108255526B (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 | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20100324 |