- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章任务的同步与通讯之信号量.ppt
优先级继承协议基本思想 当一个任务阻塞了一个或多个高优先级任务时,该任务将不使用其原来的优先级,而使用被该任务所阻塞的所有任务的最高优先级作为其执行临界区的优先级。 当该任务退出临界区时,又恢复到其最初的优先级。 优先级反转解决办法 优先级继承协议(priority inheritance protocol) 优先级天花板协议(priority ceiling protocol) 优先级天花板协议 每个信号量有个优先级天花板,为所有使用该信号量的任务的最高优先级。 在优先级天花板协议中,如果任务获得信号量,则在任务执行临界区的过程中,任务的优先级将被抬升到所获得信号量的优先级天花板。 μC/OS-II采用这种 μC/OS-II的互斥型信号量数据结构 由3个元素组成: 1个标志,指示mutex是否可以使用(0或1) 1个优先级,天花板 1个等待该mutex的任务列表 0xFF信号量表示可用 互斥型信号量的操作 OSMutexCreat() OSMutexDel() OSMutexPend() , OSMutexPost() , OSMutexAccept() , OSMutexQuery() 建立一个互斥型信号量,OSMutexCreat() 函数OSMutexCreat()的原型如下: OS_EVENT *OSMutexCreat(INT8U prio,INT8U *err); 参数: prio: 优先级天花板(PIP)。 err:指向其出错代码的指针: OS_NO_ERR,调用成功,mutex已被成功地建立。 OS_ERR_CREAT_ISR,试图在中断服务子程序中建立mutex。 OS_PRIO_EXIST,优先级为PIP的任务已经建立。 OS_ERR_PEVENT_NULL,已经没有OS_ENENT结构可以使用的了。 OS_PRIO_INVALID,定义的优先级非法,其值大于OS_LOWEST_PRIO 返回值: 返回一个指针,该指针指向分配给mutex的事件控制块。如果得不到事件控制块,则返回一个空指针。 互斥型信号量的操作 OSMutexCreat() OSMutexDel() OSMutexPend() , OSMutexPost() , OSMutexAccept() , OSMutexQuery() 删除一个互斥型信号量,OSMutexDel() OSMutexDel()的原型如下: OS_EVENT *OSMutexDel(OS_EVENT *pevent, INT8U opt, INT8U *err); 参数: prevent:指向mutex的指针。 opt: 该选项定义mutex的删除条件。可以选择只能在已经没有任何任务在等待该mutex时,才能删除(OS_DEL_NO_PEND);或者,不管有没有任务在等待这个mutex,立即删除(OS_DEL_NO_ALWAYS),在这种情况下,所有等待mutex的任务都立即进入就绪态。 err:指向其出错代码的指针。出错代码为以下值之一: OS_NO_ERR,调用成功,mutex已被删除。 OS_ERR_DEL_ISR,试图在中断服务子程序中删除mutex。 OS_ERR_INVALID_OPT,定义的opt参数无效,不是上面提到的2个参数之一。 OS_ERR_TASK_WAITING,定义了OS_DEL_NO_PEND,而有一个或一个以上的任务在等这个mutex。 OS_ERR_EVENT_TYPE,pevent不是指向mutex的指针。 OS_ERR_PEVENT_NULL,已经没有可以使用的OS_EVENT数据结构了。 返回值: 如果mutex已经删除,则返回空指针;如果mutex没能删除,则返回pevent 互斥型信号量的操作 OSMutexCreat() OSMutexDel() OSMutexPend() , OSMutexPost() , OSMutexAccept() , OSMutexQuery() 等待一个互斥型信号量,OSMutexPend() 函数OSMutexPend()的原型如下: void OSMutexPend(OS_EVENT *pevent,INT16U timeout,INT8U *err); 参数: prevent:指向mutex的指针。 timeout:以时钟节拍数目定义的等待超时时限。如果在这一时限中得不到mutex,任务将恢复执行。Timeout的值为0,表示将无限期地等待mutex。Timeout的最大值是65535个时钟节拍。 如果mutex被优先级较低的任务占用了,那么OSMutexPend()会将占用mutex的任务的优先级提升到优先级天花板。 e
您可能关注的文档
- 第一章操作系统引论.ppt.ppt
- 第一章CATV工程设计标准-Read.doc
- 第一章产品说明.doc
- 第一章精细化工概述.ppt.ppt
- 第一章函数与极限总习题.doc
- 第一章绪论-南京大学EMBA教育中心.doc
- 第一章自动控制基本理论知识-西南科技大学网络教育学院--网络学习.ppt
- 第一章绪论-智能诊断与专家系统研究室-南京航空航天大学.doc
- 第一章绪论-计算机网络和Internet-电子科技大学.ppt
- 第一单元介绍LabVIEW之操作环境,包含人机介面、程式方块区.ppt
- 中国农业科学院2026年度第一批统一公开招聘备考题库有答案详解.docx
- 中煤地质集团有限公司2025年度公开招聘备考题库及一套完整答案详解.docx
- 中国科学院山西煤炭化学研究所2025-2026年度科研人员第二次招聘54人备考题库带答案详解.docx
- 中国社会科学院中国边疆研究所2026年非事业编制人员招聘备考题库有答案详解.docx
- 中国科学院西北高原生物研究所2026年第一批科研岗位招聘备考题库完整参考答案详解.docx
- 上海财经大学2026年辅导员及其他非教学科研岗位人员招聘备考题库及答案详解1套.docx
- 2026年黑龙江省绥阳林业局有限公司招聘备考题库及答案详解参考.docx
- 上海歌剧院2025年第四季度(第二批)工作人员公开招聘备考题库带答案详解.docx
- 2026年雄安空天备考题库研究院招聘备考题库完整参考答案详解.docx
- 中国中医科学院望京医院2026年公开招聘合同制职工(第一批)备考题库及一套参考答案详解.docx
最近下载
- 深度解析(2026)《AQ 2013-2008金属非金属地下矿山通风安全技术规范》.pptx VIP
- 智慧园区智能安防解决方案概述.pptx VIP
- 领导班子2025年度民主生活会对照检查材料1.doc VIP
- 多元羧酸和磷酸对牙本质脱钙作用的比较.pdf VIP
- GB 55007-2021 砌体结构通用规范.docx VIP
- 2026五个带头发言材料三.docx VIP
- 鹤煤三矿围岩地质力学评估报告-终稿.pdf VIP
- 中国新型城镇化的低碳发展路径——问题、策略与案例.pdf VIP
- HAF003《核电厂质量保证安全规定》的理解要点共109页.ppt VIP
- 产品质量先期策划控制程序APQP.docx VIP
原创力文档


文档评论(0)