课程讲义8_嵌入式系统软件与操作系统.ppt

课程讲义8_嵌入式系统软件与操作系统.ppt

  1. 1、本文档共186页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ?6.消息队列 消息队列的功能比信号量和邮箱更强大,使用消息队列也可以实现信号量的功能。在消息队列初始化时,可以将消息队列中的多个指针设为非NULL值,就可以实现计数信号量的功能。其中,非NULI.值的指针数表示可用的资源数。系统中的任务可以通过OSQPend()来请求“信号量”,然后通过调用OSQPost()来释放“信号量”。如果系统中只使用了计数信号量和消息队列,将OSSEM_EN设为0。就可以不使用信号量,而只使用消息队列。由于与信号量相关的程序代码都不需要使用,可以有效地节省程序代码空间。值得注意的是,这种方法为共享资源引人了大量的指针变量。在节省代码空间的同时,增加了所需要的RAM空间。此外,对消息队列的操作没有对信号量效率高。 ?习题 1.操作系统的主要功能是什么? 2.操作系统内核可提供的主要服务是什么? 3.什么是嵌入式系统? 4.请比较嵌入式系统和实时系统的异同。 5.硬实时系统和软实时系统的区别是什么? 6.实时操作系统的特点是什么? 7.请比较Linux和μCLinux的异同。 8.请比较Linux和RT-CLinux/RTAI的异同。 9.请描述μC/OS-II与处理器有关的移植实现部分。 10.请描述与μC/OS-II的任务管理相关的重要数据结构及其功能。 11.请描述μC/OS-II的任务状态和导致状态迁移的相关起因。 ?习题 12.请简要说明μC/OS-II的任务调度算法。 13.请简要说明μC/OSII的内存管理算法。 14.在μC/OS-II中,可实现数据共享的方法主要有哪些? 15.在μC/OS-II中,可实现任务同步的方法主要有哪些? 16.在μC/OS-II中,能否用消息队列机制实现信号量机制? 17.在μC/OS-II中,能否用邮箱机制实现信号量机制? 18.在μC/OS-II中,是否会出现低优先级的任务影响到高优先级任务执行的情况?请说明原因。 19.如果在μC/OS-II中实现通用操作系统中的虚存管理机制,则是否会影响μC/OS-II的实时性?请说明原因。 谢谢 * * * * * * * * * * * * * * * * * * * * * * * * * * * * 8.4.5?μC/OS-II内存管理 内存控制块包括以下内容。 OSMemAddr;是指向内存分区起始地址的指针。它在建立内存分区时被初始化,之后不能再更改了。 OSMemFreeList:?是指向下一个空闲内存控制块或者下一个空闲的内存块的指针,具体含义要根据该内存分区是香已经建立来决定。 OSMemBlkSize:是内存分区中内存块的大小,是用户建立该内存分区时指定的。 OSMemNBlks:是内存分区中总的内存块数量,也是用户建立该内存分区时指定的。 OSMemNFree:是内存分区中当前可以得到的空闲内存块数量。 8.4.5?μC/OS-II内存管理 μC/OS-II的mem.c文件中定义了几个与内存管理相关的函数。 OSMemCreate()建立一个内存分区。 OSMemGet()分配一个内存。 OSMemPut()释放一个内存块。 OSMemQuery()在询一个内存分区的状态。 8.4.5?μC/OS-II内存管理 管理相关的函数实例如下。 建立内存分区函数共有4个参数:内存分区的起始地址(void * addr)、分区内的内存块总块数(INT32U nblks)、每个内存块的字节数(INT32U blksize)和一个指向错误信息代码的指针(INT8U * err)。如果OSMemCreate()操作失败,它将返回一个NULL指针;一般情况下,它将返回一个指向内存控制块的指针。对内存管理的其他操作:OSMemGet()、OSMemPut(),OSMemQuery()函数等,都要通过该指针进行。 8.4.5?μC/OS-II内存管理 OSMemCreate()函数的功能是建立一个确定大小的内存块,每块确定字节数。用户使用它建立自己希望大小的内存分区,具体建立的过程是由μC/OS-II操作系统自动完成的。建立内存分区后,系统给用户返回一个指针。 OSMemGet()函数从已经建立的内存分区中申请一个内存块。该函数需要的参数是指向特定内存分区的指针,该指针在建立内存分区时.由OSMemCreate()函数返回。应用程序必须知道内存块的大小,并且在使用时不能超过该容量。 8.4.5?μC/OS-II内存管理 当用户

文档评论(0)

执着仅一次 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档