- 1、本文档共99页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六章 同步、互斥与通信 主要内容 信号量 邮箱和消息队列 事件 异步信号* 概述 多任务系统中任务之间的关系 相互独立 仅竞争CPU资源 竞争除CPU外的其他资源(互斥) 同步 协调彼此运行的步调 通信 彼此间传递数据或信息,以协同完成某项工作 概述 任务能以以下方式与中断处理程序或其他任务进行同步或通信: 单向同步或通信:一个任务与另一个任务或一个ISR同步或通信。 双向同步或通信:两个任务相互同步或通信。双向同步不能在任务与ISR之间进行,因为ISR不能等待。 概述 在嵌入式多任务系统中,任务间的耦合程度是不一样的: 耦合程度较高:任务之间需要进行大量的通信,相应的系统开销较大; 耦合程度较低:任务之间不存在通信需求,其间的同步关系很弱甚至不需要同步或互斥,系统开销较小。 研究任务间耦合程度的高低对于合理地设计应用系统、划分任务有很重要的作用。 概述 在单处理器平台上,嵌入式操作系统内核提供的同步、互斥与通信机制主要包括: 信号量(semaphore),用于互斥与同步 事件(组)(event group),用于同步 异步信号(asynchronous signal),用于同步 邮箱(mailbox)、消息队列(message queue)或管道(pipe),用于消息通信 概述 以下一些机制也可用于同步与通信(在单处理器或多处理器系统中): 全局变量 共享内存 Sockets 远程过程调用(Remote Procedure Call) 第一节信号量 信号量的种类及用途 信号量用于实现任务与任务之间、任务与中断处理程序之间的同步与互斥。 信号量一般分为三种: 用于解决互斥问题的互斥信号量。它比较特殊,可能会引起优先级反转问题。 用于解决同步问题的二值信号量。 用于解决资源计数问题的计数信号量。 将信号量进行种类细分,可以根据其用途,在具体实现时做专门处理,提高执行效率和可靠性。 互斥信号量 用互斥信号量保护的代码区称作“临界区”,临界区代码通常用于对共享资源的访问。 互斥信号量的值被初始化成1,表明目前没有任务进入“临界区”,但最多只有一个任务可以进入“临界区”。 第一个试图进入“临界区”的任务将成功获得互斥信号量,而随后试图进入用同一信号量保护的临界区的所有其他任务就必须等待。 当任务离开“临界区”时,它将释放信号量并允许正在等待该信号量的任务进入“临界区”。 各种互斥机制比较 二值信号量 二值信号量主要用于任务与任务之间、任务与中断服务程序之间的同步 用于同步的二值信号量初始值为0,表示同步事件尚未产生; 任务申请信号量以等待该同步事件的发生; 另一个任务或ISR到达同步点时,释放信号量(将其值设置为1)表示同步事件已发生,以唤醒等待的任务。 二值信号量 计数信号量 计数信号量 计数信号量 信号量机制的主要数据结构 信号量控制块:管理所有创建的信号量,内核在系统运行时动态分配和回收信号量控制块 互斥和二值信号量控制块结构:Binary_Semaphore_Control_Block 信号量内部实现机制实例说明-μC/OS-II 事件控制块ECB-同步与通信机制的基本数据结构 typedef struct{ INT8U OSEventType;//事件类型 INT8U OSEventGrp;//等待任务所在的组 INT16U OSEventCnt;//计数器(信号量) void *OSEventPtr;//指向消息或消息队列的指针 INT8U OSEventTbl[OS_EVENT_TBL_SIZE];//等待任务列表 }OS_EVENT; 信号量内部实现机制实例说明-μC/OS-II 当一个事件发生后,等待事件列表中优先级最高的任务(即在.OSEventTbl[]OSEventGrp中所有被置1的位中优先级数值最小的任务)得到该事件。 信号量内部实现机制实例说明-μC/OS-II 当.OSEventTbl[n]中的任何一位为1时,OSEventGrp中的第n位为1。 与任务就绪列表类似! 信号量内部实现机制实例说明-μC/OS-II 将一个任务插入到等待事件的任务列表中: pevent-OSEventGrp |= OSMapTbl[prio 3]; pevent-OSEventTbl[prio 3] |= OSMapTbl[prio 0x07]; 与将一个任务插入到就绪列表中的操作类似! 信号量内部实现机制实例说明-μC/OS-II 从等待事件的任务列表中使任务脱离等待状态 if ((pevent-OSEventTbl[prio 3] = ~OSMapTbl[prio 0x07]) == 0) { pevent-OSEventGrp = ~OSM
您可能关注的文档
- 立体的切割及截交线最终版.ppt
- 立体几何的结构特征及三视图直观图.ppt
- 历史新课程的导入{吕.ppt
- 汽车构造3曲柄连杆机构.ppt
- 汽车构造4发动机配气机构.ppt
- 利用网络资源辅助初中英语课堂教学1.ppt
- 粒子回旋加速器霍尔效应4.ppt
- 粒子群算法西电姚新正.ppt
- 汽车构造17万向传动装置.ppt
- 汽车构造18驱动桥.ppt
- 剧本杀行业报告:内容创作规范与剧本市场拓展策略.docx
- 剧本杀行业区域市场区域文化特色与市场潜力分析报告.docx
- 剧本杀行业区域市场拓展实战案例研究.docx
- 剧本杀行业区域市场拓展路径与模式探索报告.docx
- 剧本杀行业区域市场竞争态势与品牌差异化策略研究报告.docx
- 剧本杀行业2025年西北区域市场市场细分领域竞争态势与品牌竞争策略分析研究报告.docx
- 剧本杀行业2025年西北市场拓展前景预测报告.docx
- 剧本杀行业2025年长沙市场发展潜力分析报告.docx
- 剧本杀行业2025年长三角市场竞争策略与布局分析.docx
- 医疗行业数据合规:2025年数据安全法实施后的合规监管挑战与应对.docx
最近下载
- 手术室人员行为管理与规范.pptx VIP
- 2025年呼和浩特市土默特左旗社区工作者招聘考试试题 .pdf VIP
- 卫生院优质服务基层行创建资料(1.1.2主要任务).docx VIP
- 2025年教职工疗休养服务项目212页.docx VIP
- 2025年内蒙古自治区中考语文试题卷(含答案解析).docx
- 中学生英才计划面试常见问题.docx VIP
- 社会组织矛盾纠纷排查化解工作总结.pptx VIP
- 近十年管综数学真题.pdf VIP
- 13、安放式支管台组对焊接.pptx VIP
- SIEMENS西门子 SIMATIC ET 200SP 电机启动器 (3RK1308‑0..00‑0CP0)设备手册.pdf VIP
文档评论(0)