系统内核之三电子设计技术.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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 的一样。这里只是稍微有所改动。 三、定长存储管理机制的具体实现 一))、数据类型定

文档评论(0)

ziyouzizai + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档