嵌入式实时操作系统第7章.pdf

嵌入式实时操作系统第7章.pdf

ID:50158161

大小:1.85 MB

页数:17页

时间:2020-03-08

嵌入式实时操作系统第7章.pdf_第1页
嵌入式实时操作系统第7章.pdf_第2页
嵌入式实时操作系统第7章.pdf_第3页
嵌入式实时操作系统第7章.pdf_第4页
嵌入式实时操作系统第7章.pdf_第5页
资源描述:

《嵌入式实时操作系统第7章.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第7奎∷缶态∷呙∷挂∷叁逵应用程序在运临时获得△毕内狞李∷间∷此作为一个比行!汐了琴种特终帚雩

2、筝寅帚莩

3、因较完善的操作系纾,必须具有动态分配内存的能力

4、能杏合理1有效地对内存储器进行分配和∷管理,是衡量一个操作系统品质莳揞标之工。恃别毫对子寒时躁:砟春统粜琥,还应该保证系统在动态分配内存时:它的执荇时间必须皂苛确走曲。0C冫os⊥n改进了AkSIC用来动态分配和释放内存的函数mallocO和freeΘ,使它们可以对大小固定的内存块进行操作,从而使函数ma11ocO和freeO的执行时间成为可确定的,满足了实时操作

5、系统的要求。本章的主要内容有:●uC/OS-H对内存的分区及分块;●描述内存块的数据结构一ˉ内存控制块;●内存控制块与内存分区之间的关系;●对内存的操作。7,1内存控制块uc/os-Ⅱ对内存进行两级管理,即把一个连续的内存空间分为若干个分区,每个分区又分为若干个大小相等的内存块。操作系统以分匹为单位来管理动态内存,而任务以内存块为单位来获得和释放动态内存。内存分区及内存块的使用情况则由内存控制块来记录。7.1.1可动态分配内存的划分1.内存块uC/Os-Ⅱ以内存块为单位向应用程序提供动态内存。内存块的大小可由用户定

6、制。2.内存分区大小相等的多个内存块可以组成一个内存分区。内存分区是系统对内存进行管理的基本单位。I∶0ˉ—ˉ△动甭内胥鹭理乜3.内存分区与内存块的定义∷∷∶在内存中定义一个内存分区及其内-存块的方法非常简单?尽莩定义⊥个数组即可。=维例如:∷∷∴∷∷Ⅱ∷∷∷∷∷∴∴∷△∴∴就定义了一个用来存储INT16U类型的数据,有lO个内存块,每个内存块长度为10的内存分区。量蒌鞔稚影露婺堕堪鳞龚鼙蓝暂曼内存控制块0s内存:呐osMemAddr存F一个内存块的指针osMemFreeList块1~内osMemBlks法osMe

7、mlIBk衤osMemNFreeF=个内存块的指针读2一内≡存分F丁个内存块的指针衤块区3一(a,∷控块时∷⑻饣捏有控硎制吠叫块时pJ9r∠的分区翠有剞申分军∷∷∷∷(”囡7-1内存控制块与内存分区和内存块的关系∷∶∷∷∴∴∷∶∷∷

8、∷∷Ⅱ∷∷∷-∶∷∶∷∷.∶∶=∷7。1”∴内:存控制块0廴MEM∷的结构∷Ⅱ∷∷∷∷羌了使系统能够慧知箱宥蔌地管妞呙荐芬医:o。冫♂oLiI定义宁一本疝钣乩饽蘧铀莰(O廴MEM)的数据结构。系绋莎尽∷卒个户矸辈制块来记录和跟踪每一个内存分区的状态。内存控制块OS~MEM的定义如卞∷鳜

9、⋯灬—-∷ˉ瘼龊鲟:碣品榀Ⅱ存块以庾现还分雩00,罕帚卵!乍r∶号虍T被I∶:Ξ瘛△0

10、∶:数早⒎∴1∶j∷_II初:i∶1廴c肀槊瞌∵∶

11、会赢内存ii块的初始t∶謦雪言蹉:言ij亨扌1L::∶i∫诘1蘑雷⋯ˉ下一个空内存控制块的指针δ一

12、∷∶∶空内存控制块链表的结构如图7-2所示。osMemAddroosMemFreeL灬tosMmBks蜘osMemNBkosMemNFree共0shfAX咖PART个空内荐洚制块△∷∷∴Ⅱ图⒎△2∶I空内存控制块链表Ⅱ∷∷每当应用程序需要ell建ˉ个内存分区时,系统就会从空内存控

13、制块链表中摘取一个控制块,而把链表的头指针oSMemFreeu哎指向下△个空内存控制块;雨每当应用骞序释放△个一内存分区时。则会把该分区对应的内存控制块归还给空内存控制块链表q^¨订动态内存的管理∷uC/OS—Ⅱ用于动态内存管理的函数有:创建动态内存分区函数OSMemCreateO、请求i曦-ˉ——`———搴蠛箸.∷∷△—啷理乜获得内∷存块函数∷O$MemGeto(释放内存块函数OsMemPutO和查询动态内存分区状态函数0SMe”QⅡry0等函数,∷_∶∷∷.¨⒎△1Ⅱ∶∷犁即令叼吖争兮陉:∴∶∶∶∷∷∶∴-∴定

14、∴∷∷在用7.1.1小节介绍的方法划分要使用的分区和内存块:之后,应用程序可通过调用函数osMemCrats()来建立一个内存Ι∶分区。该函数的原型如下:∷∷∵∷嬲函数OSMemCreate()的流程图如图7-3所示。=osMEMINVALIDADDR`羽返回空指+-L+eFOsMEMINVALIDBLKs返回空指+-L+eFOsMEMINVALIDsIzE返回空指+-L+e-sMEMINVALIDPART返回空指+-L自空内存控制块链表—取个空内存控制块将分区中的所育内存块链接为单向链表在内存控制块中填写分区的信

15、息图7-3函数0sMemCreate0的流程囡饕¨⋯⋯⋯⋯ˇ⋯¨¨Ⅱ⋯攮蠛馨爨罄Ⅲ∷∷从图7-3中可以着∷到,函数首先对创建△个内存∷分∵区∴的基本条件做△系冽判断,然后定义内存分区。如果其中有一个条件不满是,就意味着函数调用失败,于是函数就返田工个NULL指针,并把相应的错误信息传递到err誊在这一系列的条件判断中有两个问题值得跬意:一耄芬圭痴呙柰咴圭莎着

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。