同步互斥与通信.pptxVIP

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

第六章同步、互斥与通信

主要内容概述信号量邮箱和消息队列管道

ISRxTaskyPOSTPEND任务与ISR之间的同步(单向)TaskxTaskyPOSTPENDPOSTPEND任务与任务之间的同步(双向)任务与任务之间的同步(单向)TaskxTaskyPOSTPEND

在单处理器平台上,嵌入式操作系统内核提供的同步、互斥与通信机制主要包括:信号量(semaphore),用于互斥与同步事件(组)(eventgroup),用于同步异步信号(asynchronoussignal),用于同步邮箱(mailbox)、消息队列(messagequeue),用于消息通信管道(pipe),提供非结构化数据交换和实现同步

以下一些机制也可用于同步与通信(在单处理器或多处理器系统中):全局变量共享内存Sockets远程过程调用(RemoteProcedureCall)

010203040506070809第一节信号量信号量的种类及用途信号量的定义计数信号量互斥信号量二值信号量信号量机制的主要数据结构典型的信号量操作

可以被初始化一个非负数wait操作(P操作)将信号量的值减1后,若该值为负,则执行wait操作的任务等待signal操作(V操作)将信号量的值增1后,若该值为非正,则执行signal操作的任务唤醒什么是信号量信号量被定义为一个整形变量,在其上定义了以下三个操作:

信号量的种类及用途用于解决同步问题用于解决资源计数问题计数信号量互斥信号量信号量用于实现任务与任务之间、任务与中断处理程序之间的同步与互斥。信号量一般分为三种:用于解决互斥问题。它比较特殊,可能会引起优先级反转问题。二值信号量将信号量进行种类细分,可以根据其用途,在具体实现时做专门处理,提高执行效率和可靠性。

互斥信号量WaitB(S):/申请信号量ifS.value1;/当前没有其他任务使用信号量thenS.value=S.value-1=0/将信号量值修改为0,独占共享资源elsebeginInsert(CALLER,S.L);/如果当前有其他任务使用信号量,将该任务放入等待队列Block(CALLER);/修改该任务的状态为等待态(阻塞任务)endSignalB(S):/释放信号量ifS.Lqueueisempty;/如果等待序列为空,没有其他任务等待使用该共享资源thenS.value=1;/释放信号量elsebeginRemove(S.L,id);/如果有其他任务等待使用该共享资源,则从等待队列中将该任务移除wakeup(id);/将该任务的状态改为就绪态(唤醒任务)end

用信号量实现任务间的互斥varmutex:SharedSemaphore;beginmutex:=1;parbeginP1:……P2:…………Pi:repeatWait(mutex);“进程Pi的临界代码段”;Signal(mutex);foreverPn:……parendendTask1Task2共享资源

互斥信号量状态图互斥信号量状态图开启锁定初始化值为1申请并获得值为0释放值为1申请(递归)并获得锁定数加1释放(递归)锁定数减1

各种互斥机制比较比较项目关中断使用测试并置位指令禁止任务切换使用信号量锁定范围互斥力度最强,锁定所有外部可屏蔽中断,凡是以中断形式到达的外部事件以及与之相关联的任务或处理过程均得不到执行凡是使用该指令访问共享资源的代码所有的任务只影响竞争共享资源的任务对系统响应时间的影响如果关中断的时间较长,对系统的响应性能有很大影响较小如果禁止切换的时间过长,则影响系统的响应性能对系统响应性能有一定影响,可能导致优先级反转实现时的系统开销小小小较大注意事项关中断时间要尽量短不是所有的处理器都具备这种指令,影响可移植性关调度的时间要尽量短需采用一定的策略解决优先级反转问题

释放(值为1)可获得初始化值为0不可获得二值信号量状态图申请并获得(值为0)二值信号量

二值信号量实现同步Task1(){……执行一些操作;

文档评论(0)

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

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

1亿VIP精品文档

相关文档