- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 同步、互斥与通信;主要内容;第一节概述;多任务系统中任务之间的关系
相互独立:仅竞争CPU资源。
竞争除CPU外的其他资源(互斥)。
同步:协调彼此运行的步调,保证协同运行的各个任务具有正确的执行次序。
通信:彼此间传递数据或信息,以协同完成某项工作。;
ISR x;任务间的耦合程度:
耦合程度较高
任务之间需要进行大量的通信,相应的系统开销较大;
耦合程度较低
任务之间不存在通信需求,其间的同步关系很弱甚至不需要同步或互斥,系统开销较小。
研究任务间耦合程度的高低对于合理地设计应用系统、划分任务有很重要的作用。 ;在单处理器平台上,嵌入式操作系统内核提供的同步、互斥与通信机制主要包括:
信号量(semaphore),用于互斥与同步。
事件(组)(event group),用于同步。
异步信号(asynchronous signal),用于同步。
邮箱(mailbox)、消息队列(message queue),用于消息通信。
管道(pipe),提供非结构化数据交换和实现同步。 ;以下一些机制也可用于同步与通信(在单处理器或多处理器系统中):
全局变量。
共享内存。
Sockets。
远程过程调用(Remote Procedure Call)。;第二节信号量;信号量用于实现任务与任务之间、任务与中断处理程序之间的同步与互斥。
信号量一般分为三种:;用互斥信号量保护的代码区称作“临界区”。
临界区代码通常用于对共享资源的访问。
获得互斥信号量的任务进入 “临界区”,其他试图获取信号量的任务就会被阻塞。
当任务离开临界区时,就是释放信号量。
互斥信号量的值被初始化成1,表明目前没有任务进入“临界区”,但最多只有一个任务可以进入“临界区”。;*;共享资源:
一段存储器空间、一个数据结构或I/O设备,也可能是被两个或多个并发任务共享的任何内容。
使用互斥信号量可以实现对共享资源的串行访问。;所有权
当一个任务通过获取互斥信号量而将其锁定时,得到该互斥信号量的所有权。
当一个任务释放信号量时,失去对其的所有权。
申请与释放要匹配:任务要释放互斥信号量,必须事前先获取该信号量。 ;*;Task1;每个获取信号量的调用必须与释放信号量的调用相匹配。
当最外层的获取信号量的调用与释放信号量的调用匹配时,该信号量才允许被其它任务访问。
用于同步的信号量不支持嵌套访问。
删除安全
需要保护在临界区执行的任务不会被意外地删除。
删除一个在临界区执行的任务可能引起意想不到的后果,造成保护资源的信号量不可用,可能导致资源处于破坏状态。;;3 二值信号量;二值信号量状态图;Task1()
{
……
执行一些操作;
将信号量sem1置1;
申请信号量sem2;
……
……
};4 计数信号量;;
1 2 3 4 ………… n;生产者任务
do
{
…
产生一个数据项
…
申请empty
申请mutex
…
将新生成的数据项添加到缓冲中
…
释放mutex
释放full
} while (1);;5 信号量机制的主要数据结构;信号量控制块:管理所有创建的信号量,内核在系统运行时动态分配和回收信号量控制块。
互斥和二值信号量控制块结构: Binary_Semaphore_Control_Block;计数信号量控制结构Counting_Semaphore_Control_Block
wait_queue 任务等待队列
attributes 计数信号量属性
maximum_count 最大计数值
wait_discipline 任务等待信号量的方式
count 当前计数值
;信号量内部实现机制实例说明-μC/OS-II;当一个事件发生后,等待事件列表中优先级最高的任务(即在.OSEventTbl[]OSEventGrp中所有被置1的位中优先级数值最小的任务)得到该事件。;当.OSEventTbl[n]中的任何一位为1时,OSEventGrp中的第n位为1。
与任务就绪列表类似!;将一个任务插入到等待事件的任务列表中:
pevent-OSEventGrp
|= OSMapTbl[prio 3];
pevent-OSEventTbl[prio 3]
|= OSMapTbl[prio 0x07];
与将一个任
您可能关注的文档
- 1 胶接基础新方案讲课资料.ppt
- 1 全国水文基础设施建设总体形势(湖北武汉)----蔡建元说课材料.ppt
- 1 水文地质钻探的重要性和基本任务2 水文地质钻孔的结构和知识分享.ppt
- 1 园林工程造价与管理(概预算)课件(2013版)教材课程.ppt
- 1. 高速公路覆盖交流资料教程文件.pptx
- 1.《建设项目安全设施“三同时”监督管理暂行办法》解读教学提纲.ppt
- 1.1-1.3 土的工程分类和性质、土方工程量计算与调配、基坑支护(4学时)-课件学习资料.ppt
- 1.1球、简单组合体的结构特征课件(北师大版必修2)培训讲学.ppt
- 1.2 框架柱钢筋的下料长度计算知识课件.ppt
- 1.2.2砌体结构水电安装工程施工图审核幻灯片课件.pptx
文档评论(0)