欢迎来到天天文库
浏览记录
ID:20245050
大小:846.00 KB
页数:128页
时间:2018-10-11
《12 同步、互斥 与通信》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、嵌入式系统及应用第六章同步、互斥与通信主要内容概述信号量邮箱和消息队列事件异步信号*管道*概述多任务系统中任务之间的关系相互独立仅竞争CPU资源竞争除CPU外的其他资源(互斥)同步协调彼此运行的步调,保证协同运行的各个任务具有正确的执行次序通信彼此间传递数据或信息,以协同完成某项工作任务能以以下方式与中断处理程序或其他任务进行同步或通信:单向同步或通信:一个任务与另一个任务或一个ISR同步或通信。双向同步或通信:两个任务相互同步或通信。双向同步不能在任务与ISR之间进行,因为ISR不能等待。概述ISRxTaskyPO
2、STPEND任务与ISR之间的同步(单向)TaskxTaskyPOSTPENDPOSTPEND任务与任务之间的同步(双向)任务与任务之间的同步(单向)TaskxTaskyPOSTPEND在嵌入式多任务系统中,任务间的耦合程度是不一样的:耦合程度较高:任务之间需要进行大量的通信,相应的系统开销较大;耦合程度较低:任务之间不存在通信需求,其间的同步关系很弱甚至不需要同步或互斥,系统开销较小。研究任务间耦合程度的高低对于合理地设计应用系统、划分任务有很重要的作用。概述在单处理器平台上,嵌入式操作系统内核提供的同步、互斥与通
3、信机制主要包括:信号量(semaphore),用于互斥与同步事件(组)(eventgroup),用于同步异步信号(asynchronoussignal),用于同步邮箱(mailbox)、消息队列(messagequeue),用于消息通信管道(pipe),提供非结构化数据交换和实现同步概述以下一些机制也可用于同步与通信(在单处理器或多处理器系统中):全局变量共享内存Sockets远程过程调用(RemoteProcedureCall)概述第一节信号量信号量的种类及用途互斥信号量二值信号量计数信号量信号量机制的主要数据
4、结构典型的信号量操作信号量用于实现任务与任务之间、任务与中断处理程序之间的同步与互斥。信号量一般分为三种:信号量的种类及用途用于解决互斥问题。它比较特殊,可能会引起优先级反转问题。用于解决同步问题用于解决资源计数问题将信号量进行种类细分,可以根据其用途,在具体实现时做专门处理,提高执行效率和可靠性。互斥信号量计数信号量二值信号量用互斥信号量保护的代码区称作“临界区”,临界区代码通常用于对共享资源的访问。互斥信号量的值被初始化成1,表明目前没有任务进入“临界区”,但最多只有一个任务可以进入“临界区”。第一个试图进入“临
5、界区”的任务将成功获得互斥信号量,而随后试图进入用同一信号量保护的临界区的所有其他任务就必须等待。当任务离开“临界区”时,它将释放信号量并允许正在等待该信号量的任务进入“临界区”。互斥信号量Task1Task2共享资源互斥信号量共享资源可能是一段存储器空间、一个数据结构或I/O设备,也可能是被两个或多个并发任务共享的任何内容。使用互斥信号量可以实现对共享资源的串行访问,保证只有成功地获取互斥信号量的任务才能够释放它。互斥信号量是一种特殊的二值信号量,一般它支持所有权、递归访问、任务删除安全和一些避免优先级反转、饥饿、
6、死锁等互斥所固有问题的协议。互斥信号量状态图互斥信号量状态图开启锁定初始化值为1申请并获得值为0释放值为1申请(递归)并获得锁定数加1释放(递归)锁定数减1互斥信号量所有权:当一个任务通过获取互斥信号量而将其锁定时,得到该互斥信号量的所有权。相反,当一个任务释放信号量时,失去对其的所有权。当一个任务拥有互斥信号量时,其他的任务不能再锁定或释放它,即任务要释放互斥信号量,必须事前先获取该信号量。Task1RoutineARoutineB互斥信号量嵌套(递归)资源访问如果Task1调用RoutineA,而RoutineA
7、又调用RoutineB,并且三者访问相同的共享资源,就发生了递归共享资源的访问同步问题。共享资源一个递归的互斥信号量允许嵌套锁定互斥信号量,而不引起死锁。互斥信号量嵌套(递归)资源访问每个获取信号量的调用必须与释放信号量的调用相匹配。当最外层的获取信号量的调用与释放信号量的调用匹配时,该信号量才允许被其它任务访问。用于同步的信号量不支持嵌套访问,任务如果对同步信号量使用上述操作是错误的,任务会被永久阻塞,并且阻塞条件永远不会解除。互斥信号量删除安全:在一个受信号量保护的临界区,经常需要保护在临界区执行的任务不会被意外
8、地删除。删除一个在临界区执行的任务可能引起意想不到的后果,造成保护资源的信号量不可用,可能导致资源处于破坏状态,也就导致了其它所有要访问该资源的任务无法得到满足。互斥信号量删除安全:为避免任务在临界区执行时不被意外删除:提供“任务保护”和“解除任务保护”原语对同时,为互斥信号量提供“删除安全”选项。在创建信号量的时候使用这个选项,当应用每次获取
此文档下载收益归作者所有