- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
系统内核之三电子设计技术.pdf
设计自己的嵌入式操作系统内核 Mail: blievethink@ blog: /lstzixing
设计自己的嵌入式操作系统内核之三
定长存储块管理
一、概述
这一篇主要讨论eos中作为系统内存管理者的定长存储块管理机制实现。嵌入式的OS
通常运行于内存受限的系统上,而不像windows这样的运行于大内存的系统。在Atmega32
上,片内仅有2K的RAM,且无外部存储扩展接口,当然也就不可能具备像MMU这样复杂
的存储管理硬件了。我们要实现的存储管理机制要足够的简单,能够满足最基本的需要。针
对特别的应用,系统运行时所需要的内存空间大小通常是可以预估的。复杂的存储分配方案
显然来说是不必要的。当然,使用的机制要能充分提高2K RAM的空间利用率。
除了编译器所做的存储管理(全局/局部/静态变量等)外,我所了解到的系统存储分配
方案有两种:动态存储分配方式和基于定长存储块的管理。前者实现的机制要复杂此,能够
根据需要分配存储空间,但可能会产生外部碎片,同时为了实现这些机制,分配的内存块还
需要保存存储块的信息以便管理,一个实例为LWIP协议栈的动态存储管理;而后者是在已
知应用的存储空间需求的情况下,将大的内存块化分外若干大小相同的块,无论是分配还是
回收,总是按块分配,这样不会产生外部碎片,且实现简单,操作快速,典型的代码为UC/OS
的存储管理。
在eos中所有的存储管理方案参考了uc/os的实现,同时作出了相应的改动,以适应如
下的要求:
1、系统内部所有的控制块都由存储管理者进行分配与回收;
2、存储空间利用率要高,实现要简单、快速;
3、在存储管理者初始化、分配、回收过程中,尽可能的提供必要的检查,以减小应用
存储访问越界的可能。
以下,先总体介绍方案的实现,再依次介绍数据结构定义、相应操作及存储检查机制。
二、定长存储管理机制概述
系
统
块 已分配块
链
未分配块
系统块存储分配区sys_mem
应
用
块
链
应用块存储分配区usr_mem
内存块分配示意图
1
设计自己的嵌入式操作系统内核 Mail: blievethink@ blog: /lstzixing
上图所示为某一时刻eos运行时存储管理器的运行状态图。系统中有两大存储分配区:
sys_mem,usr_mem。在存储管理器初始化时,对每一分配区,查找分配表,找出要分配的块
大小及数量后,依次从存储块中取相应大小、数量的块,组织成单链表,链表的首指针由上
图左边的数组进行维护。每一链表中的块大小相同,且块的头部预留出小块空间用于存储链
接指针。当进行块分配时,从链表中取出块,并将块除头部以外的区域分配出去,头部保存
了指向原链表中维护链表首指针的数组项,用于块的回收.。(见上图已分配块)
系统控制块链由task_struct控制块链,信号量结构控制块链等内核控制块链构成。分配
时由mpool_get( type)进行分配,type 指明块的类型,同时也是数组的索引,能够直接定位
控制块链进行分配。而应用控制块分配时由mpool_malloc(size )决定.这种方式,需要在应用
块链中查找大小适合size 的链,因为要查找,相对要慢些;但可以用mpool_get()分配,type
的值需要由应用自行进行计算。 二者的存储回收都由mpool_free(mem )实现,前面提到,
分配出去的块头部保存了链指针,可以使用该指针进行回收。上述的结构实际构成多个“链
式栈”,操作的单位为存储块,操作的方式从表头插入与删除结点。
本质上来说,上图所示的结构概括的说为一多级可用空间表结构。这种分配方式与uc/os
的一样。这里只是稍微有所改动。
三、定长存储管理机制的具体实现
一))、数据类型定
您可能关注的文档
最近下载
- 高一化学离子反应练习题.doc VIP
- 围手术期疼痛管理新进展.pptx
- 2025“才聚齐鲁成就未来”山东黄金集团井下技能工人招聘2000人笔试模拟试题及答案解析.docx VIP
- 2025“才聚齐鲁成就未来”山东黄金集团井下技能工人招聘2000人考试备考试题及答案解析.docx VIP
- 培训课件-冠心病的诊疗.ppt VIP
- 统编版道德与法治小学二年级上册《1 假期有收获》课堂教学课件PPT公开课.pptx VIP
- 2025“才聚齐鲁成就未来”山东黄金集团井下技能工人招聘2000人笔试备考试题及答案解析.docx VIP
- 2025“才聚齐鲁成就未来”山东黄金集团井下技能工人招聘2000人备考题库及答案解析.docx VIP
- 2025年山东黄金集团井下技能工人招聘(2000人)考试备考题库及答案解析.docx VIP
- 康明斯KTA19-G2型柴油机.pdf VIP
文档评论(0)