第六章 同步、互斥与通信 电子科技大学嵌入式件工程中心 EsE匚
电子科技大学嵌入式软件工程中心 第六章 同步、互斥与通信
主要内容 概述 信号量 邮箱和消息队列 事件 ●异步信号* 管道* 电子科技大学嵌入式件工程中心 EsE匚
电子科技大学嵌入式软件工程中心 主要内容 • 概述 • 信号量 • 邮箱和消息队列 • 事件 • 异步信号* • 管道*
概述 多任务系统中任务之间的关系 相互独立仅竞争CPU资源 竞争除CPU外的其他资源(互斥) 同步协调彼此运行的步调,保证协同运行的 各个任务具有正确的执行次序 通信彼此间传递数据或信息,以协同完成某 项工作 电子科技大学嵌入式件工程中心 EsE匚
电子科技大学嵌入式软件工程中心 概述 • 多任务系统中任务之间的关系 – 相互独立 仅竞争CPU资源 – 竞争除CPU外的其他资源(互斥) – 同步 协调彼此运行的步调,保证协同运行的 各个任务具有正确的执行次序 – 通信 彼此间传递数据或信息,以协同完成某 项工作
概述 任务能以以下方式与中断处理程序或其 他任务进行同步或通信: 单向同步或通信:一个任务与另一个任务或 个SR同步或通信。 双向同步或通信:两个任务相互同步或通信 双向同步不能在任务与SR之间进行,因为 SR不能等待。 电子科技大学嵌入式件工程中心 EsE匚
电子科技大学嵌入式软件工程中心 • 任务能以以下方式与中断处理程序或其 他任务进行同步或通信: – 单向同步或通信:一个任务与另一个任务或 一个ISR同步或通信。 – 双向同步或通信:两个任务相互同步或通信。 双向同步不能在任务与ISR之间进行,因为 ISR不能等待。 概述
POST PEND 任务与任务 Task asK v 之间的同步 (单向) POST PEND 任务与SR ISRX Ty)之间的同步 (单向) POS PEND 任务与任务 Task Task y之间的同步 (双向) PEND POST 电子科技大学嵌入式件工程中心 EsE匚
电子科技大学嵌入式软件工程中心 ISR x Task y POST PEND 任务与ISR 之间的同步 (单向) Task x Task y POST PEND PEND POST 任务与任务 之间的同步 (双向) 任务与任务 之间的同步 (单向) Task x Task y POST PEND
概述 在嵌入式多任务系统中,任务间的耦合 程度是不一样的: 耦合程度较高:任务之间需要进行大量的通 信,相应的系统开销较大; 耦合程度较低:任务之间不存在通信需求, 其间的同步关系很弱甚至不需要同步或互斥 系统开销较小 研究任务间耦合程度的高低对于合理地 设计应用系统、划分任务有很重要的作 用。 电子科技大学嵌入式件工程中心 EsE匚
电子科技大学嵌入式软件工程中心 • 在嵌入式多任务系统中,任务间的耦合 程度是不一样的: – 耦合程度较高:任务之间需要进行大量的通 信,相应的系统开销较大; – 耦合程度较低:任务之间不存在通信需求, 其间的同步关系很弱甚至不需要同步或互斥, 系统开销较小。 • 研究任务间耦合程度的高低对于合理地 设计应用系统、划分任务有很重要的作 用。 概述
概述 在单处理器平台上,嵌入式操作系统内 核提供的同步、互斥与通信机制主要包 括 信号量( semaphore),用于互斥与同步 事件(组)( event group),用于同步 异步信号( asynchronous signal),用于同 步 邮箱( mailbox)、消息队列( message queue),用于消息通信 管道(pⅰpe),提供非结构化数据交换和实 现同步 电子科技大学嵌入式件工程中心 EsE匚
电子科技大学嵌入式软件工程中心 • 在单处理器平台上,嵌入式操作系统内 核提供的同步、互斥与通信机制主要包 括: – 信号量(semaphore),用于互斥与同步 – 事件(组)(event group),用于同步 – 异步信号(asynchronous signal),用于同 步 – 邮箱(mailbox)、消息队列(message queue),用于消息通信 – 管道(pipe),提供非结构化数据交换和实 现同步 概述
概述 以下一些机制也可用于同步与通信(在 单处理器或多处理器系统中) 全局变量 共享内存 Sockets 远程过程调用( Remote procedure cal 电子科技大学嵌入式件工程中心 EsE匚
电子科技大学嵌入式软件工程中心 • 以下一些机制也可用于同步与通信(在 单处理器或多处理器系统中): – 全局变量 – 共享内存 – Sockets – 远程过程调用(Remote Procedure Call) 概述
第一节 信号量 信号量的种类及用途 互斤信号量 二值信号量 计数信号量 信号量机制的主要數据结枸 典型的信号量操作 电子科技大学嵌入式件工程中心 EsE匚
电子科技大学嵌入式软件工程中心 第一节 信号量 信号量的种类及用途 互斥信号量 二值信号量 计数信号量 信号量机制的主要数据结构 典型的信号量操作
信号量的种类及用途 信号量用于实现任务与任务之间、任务 与中断处理程序之间的同步与互斥 信号量一般分为三种: 互斥信号量能决点蛋同比特,可能 二值信号量用解决同步问题 计数信号量用于解决资源计数问题 将信号量进行种类细分,可以根据其用途,在具体 实现时做专门处理,提高执行效率和可靠性。 电子科技大学嵌入式件工程中心 EsE匚
电子科技大学嵌入式软件工程中心 • 信号量用于实现任务与任务之间、任务 与中断处理程序之间的同步与互斥。 • 信号量一般分为三种: 信号量的种类及用途 用于解决互斥问题。它比较特殊,可能 会引起优先级反转问题。 用于解决同步问题 用于解决资源计数问题 将信号量进行种类细分,可以根据其用途,在具体 实现时做专门处理,提高执行效率和可靠性