嵌入式实时操作系统uc/OS-II第7章课后习题1-4

目的

学习和理解实时操作系统

声明

习题答案是笔者基于相关书籍和网上内容自己理解的,有不对或疑问的地方大家一起沟通

硬件平台

Arm-CortexM3内核

一.什么叫内存分区?什么叫内存块?内存分区和内存块之间有什么关系?

内存分区:操作系统进行管理的基本内存单元

内存块:申请和释放内存的基本单元

关系:内存分区,有若干内存块构成

二.同一个分区的内存块是按什么组织起来的?

通过内存块中单向链表的方式组织起来的,详见下图:

上图中的实现非常巧妙,具体代码如下:

具体实现思想:

空闲块关联:空闲内存块前4个byte存储下一个空闲内存块,直到所有的内存块被链接完,最后一个空闲内存块前4个byte存储空地址表示结束。

内存申请:取第一个空闲块返回给应用,同时OSMemFreeList指向下一个空闲块

内存释放:将当前内存块挂载到空闲内存块链表上(空闲内存块链表头部

注:OSMemFreeList指向当前空闲内存块,其存储的内容是下一个空闲内存块的地址

三.什么叫内存控制块?内存控制块都记录了什么信息?

内存控制块:用来管理内存分区中内存块的数据结构

内存控制块成员:1>内存分区首地址;2>空闲块链表首地址;3>内存块总数;4>空闲块总数;5>空闲块大小(单位byte),详见如下数据结果:

 四.设计一个有两个任务的应用程序,其中一个任务用来进行两个加数的运算,另一个任务用来显示结果,要求把加法运算的结果存放到动态内存当中。

实现方法:

1>创建一个信号量,实现两个任务的同步,即任务0计算出结果后,任务1才能得到显示的结果

2>申请一块动态内存,加数运算的结果。

关键代码:

 验证结果:

 总结

该内存管理只是确保申请内存的实时性(申请和释放内存时间是一样的),应用性差;

由于是固定内存块大小,申请和释放内存都是对内存块进行操作,不存在内存碎片概念

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值