CN111241004A - 电动摩托车用嵌入式软件内存分配算法 - Google Patents
电动摩托车用嵌入式软件内存分配算法 Download PDFInfo
- Publication number
- CN111241004A CN111241004A CN201911391806.7A CN201911391806A CN111241004A CN 111241004 A CN111241004 A CN 111241004A CN 201911391806 A CN201911391806 A CN 201911391806A CN 111241004 A CN111241004 A CN 111241004A
- Authority
- CN
- China
- Prior art keywords
- memory block
- memory
- idle
- blocks
- size
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 220
- 239000012634 fragment Substances 0.000 abstract description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000000034 method Methods 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明涉及电动摩托车用嵌入式软件内存分配算法,包括步骤1 接收内存请求,获得所需内存大小;步骤2 根据所需内存大小确定目标内存块;步骤3 判断第一内存块组中是否具有目标内存块相应大小的第一空闲内存块,若是则将待分配内存分配至所述第一空闲内存块,若否则执行步骤4;步骤4 判断是否存在比第一空闲内存块高一级的第二空闲内存块,若存在,分配,若不存在则执行步骤5;步骤5判断第二内存块组中是否具有目标内存块相应大小的第一空闲内存块,该内存分配算法能够优化内存空间占用,减少空间碎片的产生。
Description
技术领域
本发明涉及内存分配算法,属于计算机存储领域。
背景技术
内存分配是指在程序执行的过程中分配或者回收存储空间的分配内存的方法。内存算法是以软件嵌入硬件中,电动摩托车存在各种指令,内存分配算法的优劣直接影响到指令的反应速度,内存分配算法中伙伴算法为最为经典的内存分配算法,该算法将内存分配为各中级别大小的内存块,按照一定的伙伴规则将空闲内存块进行合并,实现内存的合理利用,减少内存块出现的几率,但伙伴算法由于所有内存块均处于同一内存块组中,遵循相同的伙伴规则,则会导致碎片内存块合并的几率有待提升。
发明内容
本发明为了解决上述不足,提供了电动摩托车用嵌入式软件内存分配算法,该内存分配算法能够优化内存空间占用,减少空间碎片的产生。
本发明所采取的技术方案为:电动摩托车用嵌入式软件内存分配算法,
步骤1 接收内存请求,获得所需内存大小;
步骤2 根据所需内存大小确定目标内存块;
步骤3 判断第一内存块组中是否具有目标内存块相应大小的第一空闲内存块,若是则将待分配内存分配至所述第一空闲内存块,若否则执行步骤4;
步骤4 判断是否存在第二空闲内存块,若存在,则将所述第二空闲内存块分配为与所述目标内存块相同大小的第二一空闲内存块和剩余的第二二空闲内存块,然后将待分配内存分配至所述第二一空闲内存块,若不存在则继续向上一级寻找更大空闲内存块,然后重复步骤4;
若对第一内存块组中均不存在可分配的空闲内存块,则执行步骤5;
步骤5判断第二内存块组中是否具有目标内存块相应大小的第一空闲内存块;
所述第一内存块组与所述第二内存块组内伙伴规则不同;所述第一内存块组和所述第二内存块组中按照空闲内存块总和大小进行排序,所述第一内存块组中空闲内存块大小小于所述第二内存块组中空闲内存块大小。
进一步的,所述第二空闲内存块大于所述第一空闲内存块。
进一步的,所述第二空闲内存块级别比所述第一空闲内存块级别高一级。
进一步的,当下一级的空闲内存块为0时,上两级的空闲内存块分配为与下一级的空闲内存块大小相同的内存块和下两级的空闲内存块大小相同的内存块。
进一步的,判断目标内存块大小是否小于内存块组内最大级别内存块,若是则执行步骤3。
进一步的,所述第一内存块组的伙伴规则为:若相邻两个内存块的大小相同、物理地址除最后一位其余均相同且从同一个大块中拆分出来,则两个内存块互为伙伴块,所述第一内存块组的伙伴规则为:若相邻两个内存块的大小相同且物理地址除最后两位其余均相同,则两个内存块互为伙伴块。
本发明所产生的有益效果包括:本发明中的电动摩托车用嵌入式软件内存分配算法合理分配内存空间,确保有序的利用空间内存块,最大程度避免碎片的产生。
具体实施方式
下面结合具体实施例对本发明做进一步详细的解释说明,但应当理解为本发明的保护范围并不受具体实施例的限制。
本发明中的电动摩托车用嵌入式软件内存分配算法,包括以下步骤
步骤1 接收内存请求,获得所需内存大小;
步骤2 根据所需内存大小确定目标内存块,判断目标内存块大小是否小于内存块组内最大级别内存块,若是则执行步骤3;
步骤3 判断第一内存块组中是否具有目标内存块相应大小的第一空闲内存块,若是则将待分配内存分配至所述第一空闲内存块,若否则执行步骤4;系统将内存分配至第一内存块组和第二内存块组中,第一内存块组和第二内存块组中均包括不同级别的内存块,按照内存块大小分配级别,如一级内存块则大小为2,5级内存块则大小为32。
步骤4 判断是否存在第二空闲内存块,若存在,则将所述第二空闲内存块分配为与所述目标内存块相同大小的第二一空闲内存块和剩余的第二二空闲内存块,然后将待分配内存分配至所述第二一空闲内存块,若不存在则继续向上一级寻找更大空闲内存块,然后重复步骤4,即由低级别内存块向高级别内存块寻找目标内存块;
若对第一内存块组中均不存在可分配的空闲内存块,则执行步骤5;
步骤5判断第二内存块组中是否具有目标内存块相应大小的第一空闲内存块;
所述第一内存块组与所述第二内存块组内伙伴规则不同;所述第一内存块组的伙伴规则为:若相邻两个内存块的大小相同、物理地址除最后一位其余均相同且从同一个大块中拆分出来,则两个内存块互为伙伴块,所述第一内存块组的伙伴规则为:若相邻两个内存块的大小相同且物理地址除最后两位其余均相同,则两个内存块互为伙伴块。两个内存块组分别遵守不同的伙伴规则则可增加碎片内存块的合并几率,使得空闲内存块更容易找到伙伴。
所述第一内存块组和所述第二内存块组中按照空闲内存块总和大小进行排序,所述第一内存块组中空闲内存块大小小于所述第二内存块组中空闲内存块大小。所述第二空闲内存块级别比所述第一空闲内存块级别高一级。这样可确保先消耗较小的空闲内存块。
为了增加找到目标内存块的几率,当下一级的空闲内存块为0时,上两级的空闲内存块分配为与下一级的空闲内存块大小相同的内存块和下两级的空闲内存块大小相同的内存块。
上述仅为本发明的优选实施例,本发明并不仅限于实施例的内容。对于本领域中的技术人员来说,在本发明的技术方案范围内可以有各种变化和更改,所作的任何变化和更改,均在本发明保护范围之内。
Claims (7)
1.电动摩托车用嵌入式软件内存分配算法,其特征在于: 包括
步骤1 接收内存请求,获得所需内存大小;
步骤2 根据所需内存大小确定目标内存块;
步骤3 判断第一内存块组中是否具有目标内存块相应大小的第一空闲内存块,若是则将待分配内存分配至所述第一空闲内存块,若否则执行步骤4;
步骤4 判断是否存在第二空闲内存块,若存在,则将所述第二空闲内存块分配为与所述目标内存块相同大小的第二一空闲内存块和剩余的第二二空闲内存块,然后将待分配内存分配至所述第二一空闲内存块,若不存在则继续向上一级寻找更大空闲内存块,然后重复步骤4。
2.根据权利要求1所述的电动摩托车用嵌入式软件内存分配算法,其特征在于:执行步骤4时,若对第一内存块组中均不存在可分配的空闲内存块,则执行步骤5;所述步骤5为:判断第二内存块组中是否具有目标内存块相应大小的第一空闲内存块;
所述第一内存块组与所述第二内存块组内伙伴规则不同;所述第一内存块组和所述第二内存块组中按照空闲内存块总和大小进行排序,所述第一内存块组中空闲内存块大小小于所述第二内存块组中空闲内存块大小。
3.根据权利要求1所述的电动摩托车用嵌入式软件内存分配算法,其特征在于:
所述第二空闲内存块大于所述第一空闲内存块。
4.根据权利要求1所述的电动摩托车用嵌入式软件内存分配算法,其特征在于:所述第二空闲内存块级别比所述第一空闲内存块级别高一级。
5.根据权利要求1所述的电动摩托车用嵌入式软件内存分配算法,其特征在于:当下一级的空闲内存块为0时,上两级的空闲内存块分配为与下一级的空闲内存块大小相同的内存块和下两级的空闲内存块大小相同的内存块。
6.根据权利要求1所述的电动摩托车用嵌入式软件内存分配算法,其特征在于:判断目标内存块大小是否小于内存块组内最大级别内存块,若是则执行步骤3。
7.根据权利要求1所述的电动摩托车用嵌入式软件内存分配算法,其特征在于:所述第一内存块组的伙伴规则为:若相邻两个内存块的大小相同、物理地址除最后一位其余均相同且从同一个大块中拆分出来,则两个内存块互为伙伴块,所述第一内存块组的伙伴规则为:若相邻两个内存块的大小相同且物理地址除最后两位其余均相同,则两个内存块互为伙伴块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911391806.7A CN111241004A (zh) | 2019-12-30 | 2019-12-30 | 电动摩托车用嵌入式软件内存分配算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911391806.7A CN111241004A (zh) | 2019-12-30 | 2019-12-30 | 电动摩托车用嵌入式软件内存分配算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111241004A true CN111241004A (zh) | 2020-06-05 |
Family
ID=70879441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911391806.7A Pending CN111241004A (zh) | 2019-12-30 | 2019-12-30 | 电动摩托车用嵌入式软件内存分配算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111241004A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1963788A (zh) * | 2005-11-08 | 2007-05-16 | 中兴通讯股份有限公司 | 一种内存管理方法 |
CN102880555A (zh) * | 2012-07-28 | 2013-01-16 | 福州大学 | 面向实时系统的内存算法 |
CN106294198A (zh) * | 2016-08-05 | 2017-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种Linux操作系统的内存分配方法及释放方法 |
-
2019
- 2019-12-30 CN CN201911391806.7A patent/CN111241004A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1963788A (zh) * | 2005-11-08 | 2007-05-16 | 中兴通讯股份有限公司 | 一种内存管理方法 |
CN102880555A (zh) * | 2012-07-28 | 2013-01-16 | 福州大学 | 面向实时系统的内存算法 |
CN106294198A (zh) * | 2016-08-05 | 2017-01-04 | 浪潮(北京)电子信息产业有限公司 | 一种Linux操作系统的内存分配方法及释放方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108038002B (zh) | 一种嵌入式软件内存管理方法 | |
CN108132842B (zh) | 一种嵌入式软件内存管理系统 | |
US20110153976A1 (en) | Methods and apparatuses to allocate file storage via tree representations of a bitmap | |
CN107844372B (zh) | 一种内存分配的方法、系统 | |
WO2015058695A1 (zh) | 一种存储器资源优化方法和装置 | |
KR20100091853A (ko) | 동적 메모리 관리를 수행하는 임베디드 시스템 및 그의 메모리 관리방법 | |
CN106326134A (zh) | Ftl地址映射的方法及装置 | |
CN109582593B (zh) | 一种基于计算的ftl地址映射读、写方法 | |
CN1950802A (zh) | 存储器分配 | |
KR102498668B1 (ko) | 플래시-인지 힙 메모리 관리 방법 및 호스트 장치 | |
CN113342615B (zh) | 命令监控方法、装置、控制器、系统、设备和存储介质 | |
CN105975398A (zh) | 一种内存碎片管理方法 | |
CN102521150B (zh) | 一种应用程序cache分配方法及装置 | |
CN102035727A (zh) | 一种路由的处理方法和设备 | |
CN109960471B (zh) | 数据存储方法、装置、设备以及存储介质 | |
CN106095333B (zh) | 一种数据存储系统、数据存储方法及数据存储中心 | |
JP2005537557A (ja) | 動的メモリ管理 | |
US20160188453A1 (en) | Memory pool management method for sharing memory pool among different computing units and related machine readable medium and memory pool management apparatus | |
CN116501249A (zh) | 一种减少gpu内存重复数据读写的方法及相关设备 | |
CN113835639B (zh) | 一种i/o请求处理方法、装置、设备及可读存储介质 | |
CN108776698B (zh) | 一种基于Spark的抗偏斜的数据分片方法 | |
US20190272230A1 (en) | Memory Allocation Method and Device | |
CN111241004A (zh) | 电动摩托车用嵌入式软件内存分配算法 | |
CN111338981B (zh) | 一种内存防碎片方法、系统及储存介质 | |
US11256630B2 (en) | Cache address mapping method and related device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200605 |