fans-rt 内存管理设计方案(5)局部堆管理模块设计-需求分析

5.1需求分析

1.创建堆

根据传入的内存指针、长度以、堆内块大小、最大行的块数量创建一个堆并返回堆对象指针。

2.删除堆

根据传入的堆对象指针删除堆。

3.从堆中分配行

根据传入的堆对象指针和需要分配的内存长度从堆中分配若干个连续的块组成一行。如果分配的行的块个数不是2的幂,则需要将分剩余部分分割成若干个行关联到空闲伙伴表中。

4.释放内存到堆中

根据传入的堆对象指针和需要释放的行指针,将行释放到堆中。如果释放非对齐行(行中的块数量不是2的N次幂),需要将行分割为若干对齐行再关联到伙伴表中,如果释放的行存在伙伴行,则需要将两个空闲伙伴行合并为一个空闲行。

5.查询堆中每个块的容量(可测试性需求)

6.查询堆中总的块数量(可测试性需求)

7.查询堆所支持的最大空闲行容量(可测试性需求)

8.查询堆中当前最大空闲行容量(可测试性需求)

9.查询堆中总空闲块数量(可测试性需求)

10.查询堆中指定长度的空闲行数量(可测试性需求)

11.创建任务局部堆

从MMS中申请内存并使用申请的内存创建一个堆,将堆对象指针保存到指定任务上下文中。

12.删除任务局部堆

清除指定任务局部堆指针,并将删除堆对象,释放堆内存到MMS中。

13.查询任务局部堆指针

从任务上下文对象中返回局部堆指针。

14.从局部堆中分配内存

根据查询到的局部堆指针,从该堆中分配内存。

15.释放内存到局部堆中

根据用户传入的内存指针和查询到的局部堆指针,将内存释放到局部堆中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值