嵌入式系统Chapter6同步互斥与通信.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《嵌入式系统Chapter6同步互斥与通信.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统Chapter6同步互斥与通信.ppt(128页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心嵌入式系统Chapter6同步互斥与通信 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心第六章第六章同步、互斥与通信同步、互斥与通信电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心主要内容主要内容概述概述信号量信号量邮箱和消息队列邮箱和消息队列事件事件异步信号异步信号*管道管道*电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程
2、中心概述概述多任务系统中任务之间的关系多任务系统中任务之间的关系相互独立 仅竞争CPU资源竞争除CPU外的其他资源(互斥)同步 协调彼此运行的步调,保证协同运行的各个任务具有正确的执行次序 通信 彼此间传递数据或信息,以协同完成某项工作电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心任务能以以下方式与中断处理程序或其任务能以以下方式与中断处理程序或其他任务进行同步或通信:他任务进行同步或通信:单向同步或通信:一个任务与另一个任务或一个ISR同步或通信。双向同步或通信:两个任务相互同步或通信。双向同步不能在任务与ISR之间进行,因为ISR不能等待。概述概述电子科技大学嵌入式软件工程中
3、心电子科技大学嵌入式软件工程中心ISRxTaskyPOSTPEND任务与任务与任务与任务与ISRISR之间的同步之间的同步之间的同步之间的同步(单向)(单向)(单向)(单向)TaskxTaskyPOSTPENDPOSTPEND任务与任务任务与任务任务与任务任务与任务之间的同步之间的同步之间的同步之间的同步(双向)(双向)(双向)(双向)任务与任务任务与任务任务与任务任务与任务之间的同步之间的同步之间的同步之间的同步(单向)(单向)(单向)(单向)TaskxTaskyPOSTPEND电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心在嵌入式多任务系统中,任务间的在嵌入式多任务系统中,任
4、务间的耦合耦合程度程度是不一样的:是不一样的:耦合程度较高:任务之间需要进行大量的通信,相应的系统开销较大;耦合程度较低:任务之间不存在通信需求,其间的同步关系很弱甚至不需要同步或互斥,系统开销较小。研究任务间耦合程度的高低对于合理地研究任务间耦合程度的高低对于合理地设计应用系统、划分任务有很重要的作设计应用系统、划分任务有很重要的作用。用。概述概述电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心在单处理器平台上,嵌入式操作系统内在单处理器平台上,嵌入式操作系统内核提供的同步、互斥与通信机制主要包核提供的同步、互斥与通信机制主要包括:括:信号量(semaphore),用于互斥与同步
5、事件(组)(event group),用于同步异步信号(asynchronous signal),用于同步邮箱(mailbox)、消息队列(message queue),用于消息通信管道(pipe),提供非结构化数据交换和实现同步 概述概述电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心以下一些机制也可用于同步与通信(在以下一些机制也可用于同步与通信(在单处理器或多处理器系统中):单处理器或多处理器系统中):全局变量共享内存Sockets远程过程调用(Remote Procedure Call)概述概述电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心第一节第一节信号量信
6、号量信号量的种类及用途信号量的种类及用途互斥信号量互斥信号量二值信号量二值信号量计数信号量计数信号量信号量机制的主要数据结构信号量机制的主要数据结构典型的信号量操作典型的信号量操作电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心信号量用于实现任务与任务之间、任务信号量用于实现任务与任务之间、任务与中断处理程序之间的与中断处理程序之间的同步同步与与互斥互斥。信号量一般分为三种:信号量一般分为三种:信号量的种类及用途信号量的种类及用途用于解决互斥问题。它比较特殊,可能用于解决互斥问题。它比较特殊,可能会引起优先级反转问题。会引起优先级反转问题。用于解决同步问题用于解决同步问题用于解决资
7、源计数问题用于解决资源计数问题将信号量进行种类细分,可以根据其用途,在具体将信号量进行种类细分,可以根据其用途,在具体实现时做专门处理,提高执行效率和可靠性。实现时做专门处理,提高执行效率和可靠性。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心用互斥信号量保护的代码区称作用互斥信号量保护的代码区称作“临界区临界区”,临界区,临界区代码通常用于对代码通常用于对共享资源共享资源的访问。的访问。互斥信号量的值被初始化成互斥信号量的值被初始化成1 1,表明目前没有任务进入,表明目前没有任务进入“临界区临界区”,但最多只有一个任务可以进入,但最多只有一个任务可以进入“临界区临界区”。第一个
8、试图进入第一个试图进入“临界区临界区”的任务将成功获得互斥信的任务将成功获得互斥信号量,而随后试图进入用同一信号量保护的临界区的号量,而随后试图进入用同一信号量保护的临界区的所有其他任务就必须等待。所有其他任务就必须等待。当任务离开当任务离开“临界区临界区”时,它将释放信号量并允许正时,它将释放信号量并允许正在等待该信号量的任务进入在等待该信号量的任务进入“临界区临界区”。互斥信号量互斥信号量Task1Task2共享资源共享资源电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心互斥信号量互斥信号量共享资源可能是一段存储器空间、一个数据结构共享资源可能是一段存储器空间、一个数据结构或或
9、I/OI/O设备,也可能是被两个或多个并发任务共享设备,也可能是被两个或多个并发任务共享的任何内容。的任何内容。使用互斥信号量可以实现对共享资源的串行访问,使用互斥信号量可以实现对共享资源的串行访问,保证只有成功地获取互斥信号量的任务才能够释保证只有成功地获取互斥信号量的任务才能够释放它。放它。互斥信号量是一种特殊的二值信号量,一般它支互斥信号量是一种特殊的二值信号量,一般它支持持所有权所有权、递归访问递归访问、任务删除安全任务删除安全和一些和一些避免避免优先级反转、饥饿、死锁等互斥所固有问题的协优先级反转、饥饿、死锁等互斥所固有问题的协议议。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软
10、件工程中心互斥信号量状态图互斥信号量状态图互斥信号量状态图互斥信号量状态图开启开启锁定锁定初始化初始化值为值为1申请并获得申请并获得值为值为0释放释放值为值为1申请申请(递归递归)并获得并获得锁定数加锁定数加1释放释放(递归递归)锁定数减锁定数减1电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心互斥信号量互斥信号量所有权:当一个任务通过获取互斥信号量所有权:当一个任务通过获取互斥信号量而将其锁定时,得到该互斥信号量的所有而将其锁定时,得到该互斥信号量的所有权。相反,当一个任务释放信号量时,失权。相反,当一个任务释放信号量时,失去对其的所有权。去对其的所有权。当一个任务拥有互斥信号量
11、时,其他的任当一个任务拥有互斥信号量时,其他的任务不能再锁定或释放它,即任务要释放互务不能再锁定或释放它,即任务要释放互斥信号量,必须事前先获取该信号量。斥信号量,必须事前先获取该信号量。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心Task1RoutineARoutineB互斥信号量互斥信号量嵌套(递归)资源访问嵌套(递归)资源访问如果Task1调用RoutineA,而RoutineA又调用RoutineB,并且三者访问相同的共享资源,就发生了递归共享资源的访问同步问题。共享资源共享资源 一个递归的互斥信一个递归的互斥信号量允许嵌套锁定号量允许嵌套锁定互斥信号量,而不互斥信号量
12、,而不引起死锁。引起死锁。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心互斥信号量互斥信号量嵌套(递归)资源访问嵌套(递归)资源访问每个获取信号量的调用必须与释放信号量的调用相匹配。当最外层的获取信号量的调用与释放信号量的调用匹配时,该信号量才允许被其它任务访问。用于同步的信号量不支持嵌套访问,任务如果对同步信号量使用上述操作是错误的,任务会被永久阻塞,并且阻塞条件永远不会解除。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心互斥信号量互斥信号量删除安全:删除安全:在一个受信号量保护的临界区,经常需要保护在临界区执行的任务不会被意外地删除。删除一个在临界区执行的任务可
13、能引起意想不到的后果,造成保护资源的信号量不可用,可能导致资源处于破坏状态,也就导致了其它所有要访问该资源的任务无法得到满足。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心互斥信号量互斥信号量删除安全:删除安全:为避免任务在临界区执行时不被意外删除:提供“任务保护”和“解除任务保护”原语对同时,为互斥信号量提供“删除安全”选项。在创建信号量的时候使用这个选项,当应用每次获取信号量时隐含地使能“任务保护”功能,当每次释放信号量时隐含地使用“解除任务保护”功能。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心二值信号量二值信号量二值信号量主要用于二值信号量主要用于任务与任
14、务之间任务与任务之间、任务与中任务与中断服务程序断服务程序之间的同步之间的同步用于同步的二值信号量初始值为0,表示同步事件尚未产生;任务申请信号量以等待该同步事件的发生;另一个任务或ISR到达同步点时,释放信号量(将其值设置为1)表示同步事件已发生,以唤醒等待的任务。Task1Task2二二值值信号量信号量初初值为值为0电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心二值信号量二值信号量二值信号量状态图二值信号量状态图可获得可获得不可获得不可获得申请并获得申请并获得(值为值为0)释放释放(值为值为1)初始化初始化值为值为0电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心
15、Task1()执行一些操作执行一些操作;将信号量将信号量sem1置置1;申请信号量申请信号量sem2;Task2()申请信号量申请信号量sem1;执行一些操作执行一些操作;将信号量将信号量sem2置置1;Task2申申请请信信号号量量sem1失失败败,系系统统切换到切换到Task1sem1被被 置置 1后后,Task2得得 到到 sem1并并抢占抢占Task1Task2运运行行到到某某处处时时因因某某种种原原因因被被阻阻塞塞,系系统统切切换换到到Task1用二值信号量实现两个任务之间的双向同步用二值信号量实现两个任务之间的双向同步用二值信号量实现两个任务之间的双向同步用二值信号量实现两个任务之
16、间的双向同步 Task2Task2优先级高于优先级高于优先级高于优先级高于Task1Task1 sem1sem1和和和和sem2sem2的初始值均为的初始值均为的初始值均为的初始值均为0 0电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心计数信号量计数信号量计数信号量用于控制系统中共享资源的多计数信号量用于控制系统中共享资源的多个实例的使用,允许多个任务同时访问同个实例的使用,允许多个任务同时访问同一种资源的多个实例一种资源的多个实例计数信号量被初始化为计数信号量被初始化为n(非负整数),(非负整数),n为该种共享资源的数目。为该种共享资源的数目。Task1Task2共享资源实例共
17、享资源实例nTaskm共享资源实例共享资源实例1电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心计数信号量计数信号量计数信号量状态图计数信号量状态图可可获获得得不可不可获获得得初始化初始化值值大于大于0申申请请并并获获得得值为值为0释释放放值为值为1申申请请并并获获得得值值减减1释释放放值值加加1电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心信号量机制的主要数据结构信号量机制的主要数据结构SCB1SCB2信号量控制信号量控制块块count信号量名字或信号量名字或IDTask1Task2任任务务等待列表等待列表电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心
18、信号量机制的主要数据结构信号量机制的主要数据结构信号量控制块信号量控制块:管理所有创建的信号量,内核:管理所有创建的信号量,内核在系统运行时动态分配和回收信号量控制块在系统运行时动态分配和回收信号量控制块互斥和二值信号量控制块结构互斥和二值信号量控制块结构:Binary_Semaphore_Control_BlockBinary_Semaphore_Control_Blockwait_queue任务等待队列任务等待队列attributes信号量属性信号量属性lock_nesting_behavior试图嵌套获得时的规则试图嵌套获得时的规则wait_discipline任务等待信号量的方式任务等
19、待信号量的方式priority_ceiling优先级天花板值优先级天花板值lock是否被占有是否被占有holder拥有者拥有者 nest_count嵌套层数嵌套层数电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心计数信号量控制结构计数信号量控制结构Counting_Semaphore_Control_BlockCounting_Semaphore_Control_Block wait_queuewait_queue 任务等待队列任务等待队列 attributes attributes 计数信号量属性计数信号量属性 maximum_countmaximum_count 最大计数值最大
20、计数值 wait_discipline wait_discipline任务等待信号量的方式任务等待信号量的方式 count count当前计数值当前计数值信号量机制的主要数据结构信号量机制的主要数据结构电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心信号量内部实现机制实例说明信号量内部实现机制实例说明C/OS-II事件控制块事件控制块ECBECB同步与通信机制的基本数据结构同步与通信机制的基本数据结构typedef structtypedef structINT8UOSEventType;/事件类型INT8UOSEventGrp;/等待任务所在的组INT16UOSEventCnt;
21、/计数器(信号量)void*OSEventPtr;/指向消息或消息队列的指针INT8UOSEventTblOS_EVENT_TBL_SIZE;/等待任务列表OS_EVENT;OS_EVENT;电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心信号量内部实现机制实例说明信号量内部实现机制实例说明C/OS-II当一个事件发生当一个事件发生后,等待事件列后,等待事件列表中优先级最高表中优先级最高的任务(即在的任务(即在.OSEventTbl&O.OSEventTbl&OSEventGrpSEventGrp中所有中所有被置被置1 1的位中优先的位中优先级数值最小的任级数值最小的任务)得到该事
22、件。务)得到该事件。电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心信号量内部实现机制实例说明信号量内部实现机制实例说明C/OS-II当当.OSEventTbln.OSEventTbln中的任何一位为中的任何一位为1 1时,时,OSEventGrpOSEventGrp中的第中的第n n位为位为1 1。与任务就绪列与任务就绪列表类似!表类似!电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心信号量内部实现机制实例说明信号量内部实现机制实例说明C/OS-II将一个任务插入到等待事件将一个任务插入到等待事件的任务列表中:的任务列表中:pevent-OSEventGrp|=OSM
23、apTblprio 3;pevent-OSEventTblprio 3|=OSMapTblprio&0 x07;与将一个任务插入到就绪列表中的操作类似!IndexBitmask(Binary)0 0 0 0 0 0 0 0 11 0 0 0 0 0 0 1 02 0 0 0 0 0 1 0 03 0 0 0 0 1 0 0 04 0 0 0 1 0 0 0 05 0 0 1 0 0 0 0 06 0 1 0 0 0 0 0 07 1 0 0 0 0 0 0 0电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心信号量内部实现机制实例说明信号量内部实现机制实例说明C/OS-II从等待事件
24、的任务列表中使任务脱离等待从等待事件的任务列表中使任务脱离等待状态状态if(pevent-OSEventTblprio 3&=OSMapTblprio&0 x07)=0)pevent-OSEventGrp&=OSMapTblprio 3;与将任务从就绪列表中清除的操作类似!电子科技大学嵌入式软件工程中心电子科技大学嵌入式软件工程中心信号量内部实现机制实例说明信号量内部实现机制实例说明C/OS-II在等待事件的任务列表中查找优先级最高在等待事件的任务列表中查找优先级最高的任务的任务y=OSUnMapTblpevent-OSEventGrp;x=OSUnMapTblpevent-OSEventTb
25、ly;prio=(y OSEventPtr;OSEventFreeList=(OS_EVENT*)OSEventFreeList-OSEventPtr;if(pevent!=(OS_EVENT*)0)if(pevent!=(OS_EVENT*)0)/初始化初始化ECBECB的各个域的各个域pevent-OSEventType=OS_EVENT_TYPE_SEM;pevent-OSEventType=OS_EVENT_TYPE_SEM;/事件类型为事件类型为信号量信号量pevent-OSEventCnt=cnt;pevent-OSEventCnt=cnt;/信号量的初始计数值信号量的初始计数值p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 Chapter6 同步 通信
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内