分区存储管理实例
考试要求: 掌握     
知识路径:  > 嵌入式系统软件基础知识  > 嵌入式操作系统基础知识  > 存储管理  > 分区存储管理(固定分区、可变分区、内存保护等)  > 分区存储管理


 
       下图是一个嵌入式系统的内存布局,主要是堆空间的管理。如下图所示,整个堆空间被划分为两部分:一部分是内存块池;一部分是字节池。前者即为固定分区的存储管理方式,后者即为可变分区的存储管理方式。需要说明的是,这里的分区存储管理讨论的并不是各个任务的地址空间,而是系统的堆空间,即各个任务在运行的时候,如果它们需要使用动态内存,就会通过类似于malloc的函数提出申请,系统就会从堆当中分配相应的空间,满足任务的动态内存请求,而不是把整个任务装进来。
       
       一个嵌入式系统的堆空间
       下图(a)是内存块池的具体分布。该区域总的大小为1408KB,被划分为不同大小的块。例如,大小为64B的块有1024个,共64KB;大小为512B的块有32个,共16KB,等等。最大的块为512KB,只有一个。另外,当任务去申请一块内存空间时,其大小并不一定与某个块的大小正好相同。例如,假设任务申请的对象大小为9KB,系统只能将一个16KB的块分配给它,所以内碎片为7KB。
       
       内存块池与字节池
       上图(b)是字节池的示意图,任务可以申请一块任意大小的内存空间。在当前状态下,如果下一次请求的大小不超过段1,就会把它一分为二,满足此次请求。另外,虽然在系统中有四块空闲分区,但它们并没有连接在一起。因此,当任务在提出内存申请的时候,能够满足的最大请求为段5和段6这两块分区之和。实际上,在内存回收算法当中,应该会把这两个相邻的分区进行合并,合成一个大的空闲分区。
 

更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2025 All Rights Reserved
软考在线版权所有