同步互斥与通信PPT学习教案_第1页
同步互斥与通信PPT学习教案_第2页
同步互斥与通信PPT学习教案_第3页
同步互斥与通信PPT学习教案_第4页
同步互斥与通信PPT学习教案_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1 同步互斥与通信同步互斥与通信 ISR x Task y POS T PEN D Task xTask y POS T PEN D POS T PEN D Task xTask y POSTPEND 第1页/共65页 n管道(pipe),提供非结构化数 据交换和实现同步 第2页/共65页 第3页/共65页 信号量的种类及用途信号量的种类及用途 信号量的定义信号量的定义 互斥信号量互斥信号量 二值信号量二值信号量 计数信号量计数信号量 信号量机制的主要数据结构信号量机制的主要数据结构 典型的信号量操作典型的信号量操作 第4页/共65页 第5页/共65页 用于解决互斥问题。它比较特殊,可能

2、用于解决互斥问题。它比较特殊,可能 会引起优先级反转问题。会引起优先级反转问题。 用于解决同步问题用于解决同步问题 用于解决资源计数问题用于解决资源计数问题 将信号量进行种类细分,可以根据其用途,在具体将信号量进行种类细分,可以根据其用途,在具体 实现时做专门处理,提高执行效率和可靠性。实现时做专门处理,提高执行效率和可靠性。 第6页/共65页 第7页/共65页 Task1 Task2 共享资源共享资源 第8页/共65页 互斥信号量状态图互斥信号量状态图 开启开启锁定锁定 初始化初始化 值为值为1 申请并获得申请并获得 值为值为0 释放释放 值为值为1 申请申请(递归递归)并获得并获得 锁定数

3、加锁定数加1 释放释放(递归递归) 锁定数减锁定数减1 第9页/共65页 比较项目比较项目关中断关中断 使用测试并置使用测试并置 位指令位指令 禁止任务禁止任务 切换切换 使用信号量使用信号量 锁定范围锁定范围 互斥力度最强互斥力度最强, 锁定所有外部可 屏蔽中断,凡是 以中断形式到达 的外部事件以及 与之相关联的任 务或处理过程均 得不到执行 凡是使用该指 令访问共享资 源的代码 所有的任务 只影响竞争共只影响竞争共 享资源的任务享资源的任务 对系统响应时对系统响应时 间的影响间的影响 如果关中断的时 间较长,对系统 的响应性能有很 大影响 较小 如果禁止切换的 时间过长,则影 响系统的响应

4、性 能 对系统响应性能对系统响应性能 有一定影响,可有一定影响,可 能导致优先级反能导致优先级反 转转 实现时的系统实现时的系统 开销开销 小小小较大较大 注意事项注意事项 关中断时间要关中断时间要 尽量短尽量短 不是所有的处理不是所有的处理 器都具备这种指器都具备这种指 令,影响可移植令,影响可移植 性性 关调度的时间关调度的时间 要尽量短要尽量短 需采用一定的需采用一定的 策略解决优先策略解决优先 级反转问题级反转问题 第10页/共65页 可获得可获得不可获得不可获得 申请并获得申请并获得 (值为值为0) 释放释放 (值为值为1) 初始化初始化 值为值为0 二值信号量状态图二值信号量状态图

5、 第11页/共65页 Task1() 执行一些操作执行一些操作; 将信号量将信号量sem1置置1; 申请信号量申请信号量sem2; Task2() 申请信号量申请信号量sem1; 执行一些操作执行一些操作; 将信号量将信号量sem2置置1; Task2申请信号量申请信号量 sem1失败,系统失败,系统 切换到切换到Task1 s e m 1 被 置被 置 1 后 ,后 , Task2得到得到sem1并并 抢占抢占Task1 Task2运行到某处时因某种运行到某处时因某种 原因被阻塞,系统切换到原因被阻塞,系统切换到 Task1 二值信号量实现同步 第12页/共65页 Task1 Task2 共

6、享资源实例共享资源实例n Task m 共享资源实例共享资源实例1 第13页/共65页 计数信号量状态图计数信号量状态图 可获得可获得不可获得不可获得 初始化初始化 值大于值大于0 申请并获得申请并获得 值为值为0 释放释放 值为值为1 申请并获得申请并获得 值减值减1 释放释放 值加值加1 第14页/共65页 第15页/共65页 1 2 3 4 n 生产者任务生产者任务 消费者任务消费者任务 计数信号量使用实例:有界缓冲问题计数信号量使用实例:有界缓冲问题 第16页/共65页 第17页/共65页 生产者任务生产者任务 begin repeat 生产数据生产数据 /生产者生产数据生产者生产数据

7、 Wait(E); /减少一个空缓冲区项减少一个空缓冲区项 Wait(mutex); /分配空缓冲区和分配空缓冲区和 移动指针移动指针P操作是互斥的操作是互斥的 “分配空缓冲区并调整指针分配空缓冲区并调整指针P的的 临界段临界段”; “向空缓冲区中装入数据向空缓冲区中装入数据” Signal(mutex); /释放互斥信号释放互斥信号 量量 Signal(F); /增加一个满缓冲区增加一个满缓冲区 项项 forever end 消费者任务消费者任务 begin repeat 消费数据消费数据 /消费者取走数据消费者取走数据 Wait(F); /减少一个满缓冲区项减少一个满缓冲区项 Wait(m

8、utex); /分配满缓冲区和移分配满缓冲区和移 动指针动指针C操作是互斥的操作是互斥的 “分配满缓冲区并调整指针分配满缓冲区并调整指针C的临的临 界段界段”; “从满缓冲区中取走数据从满缓冲区中取走数据” Signal(mutex); /释放互斥信号量释放互斥信号量 Signal(F); /增加一个空缓冲区增加一个空缓冲区 项项 forever end 第18页/共65页 SCB1 SCB2 信号量控制块信号量控制块 count 信号量名字或信号量名字或ID Task1Task2 任务等待列表任务等待列表 第19页/共65页 wait_queue任务等待队列任务等待队列 attributes

9、信号量属性信号量属性 lock_nesting_behavior 试图嵌套获得时的规试图嵌套获得时的规 则则 wait_discipline 任务等待信号量的方式任务等待信号量的方式 priority_ceiling 优先级天花板值优先级天花板值 lock是否被占有是否被占有 holder拥有者拥有者 nest_count嵌套层数嵌套层数 第20页/共65页 信号量机制的主要数据结构 第21页/共65页 第22页/共65页 第23页/共65页 信信 号号 量量 的的 属属 性性 信号量的类型 互斥信号量(互斥信号量(MUTEX_SEMAPHORE) 计数信号量(计数信号量(COUNTING_S

10、EMAPHORE) 二值信号量(二值信号量(BINARY_SEMAPHORE) 任务等待信号量 的方式 先进先出(先进先出(FIFO)顺序)顺序 优先级(优先级(PRIORITY)顺序)顺序 优先级反转问题的 解决方法(只适用 于互斥信号量) 优先级继承算法(优先级继承算法(INHERIT_PRIORITY) 优先级天花板算法优先级天花板算法(PRIORITY_CEILING) , 需给出所有可能获得此信号量的任务中优先级需给出所有可能获得此信号量的任务中优先级 最高的任务的优先级。最高的任务的优先级。 第24页/共65页 第25页/共65页 第26页/共65页 级将恢复到原来的高度。 第27

11、页/共65页 第28页/共65页 SignalTas k Task2 二值信号量二值信号量 初值为初值为0 Flush Task1 Task3 第29页/共65页 通信方式概述通信方式概述 消息队列机制的主要数据结构消息队列机制的主要数据结构 典型的消息队列操作典型的消息队列操作 第30页/共65页 第31页/共65页 队列控制块队列控制块 队列长度队列长度 QCB1 队列名或队列名或ID Task3Task4 接收任务等待列接收任务等待列 表表 Task1Task2 发送任务等待列发送任务等待列 表表最大最大 消息消息 长度长度 QCB2 消息队列及其相关的参数和支持数据结构消息队列及其相关

12、的参数和支持数据结构 第32页/共65页 Sending TaskReceiving Task Message 1 Message 1 Message 1 发送任务的发送任务的 内存区域内存区域 消息队列的消息队列的 内存区域内存区域 接收任务的接收任务的 内存区域内存区域 1st copy2nd copy 消息的发送或接收的两种方法 第33页/共65页 number_of_message max_message_count number_of_message max_message_size wait_discipline wait_queue queue_start queue_in qu

13、eue_out queue_end message message message message message message message message message max_message_count 消息队列消息队列 控制块控制块 消息队列消息队列 缓冲区缓冲区 第34页/共65页 max_message_count queue_end queue_start queue_out number_of_message queue_in 消息指针消息指针 第35页/共65页 非空非空 满满 队列创建队列创建 消息数为消息数为0 消息队列状态图消息队列状态图 消息发送消息发送 消息数

14、加消息数加1 空空 消息发送消息发送 消息数为消息数为1 消息接收消息接收 消息数为消息数为0 消息接收消息接收 消息数减消息数减1 消息接收消息接收 消息数减消息数减1 消息发送消息发送 消息数等于队列长度消息数等于队列长度 第36页/共65页 第37页/共65页 第38页/共65页 Msg 3 接收任接收任 务务 等待列等待列 表表 Msg 2 Msg 1 消息队消息队 列列 发送普通消息先进先出发送普通消息先进先出 (FIFO)次序)次序 Msg 3 接收任接收任 务务 等待列等待列 表表 Msg 2 Msg 1 消息队消息队 列列 发送紧急消息后进先出发送紧急消息后进先出 (LIFO)

15、次序)次序 第39页/共65页 Task 4 High 消息队列消息队列 接收任务等待列表接收任务等待列表 任务等待列表基于任务等待列表基于 优先级的次序优先级的次序 Task 2 medium Task 3 medium Task 1 Low Task 4 High 消息队列消息队列 接收任务等待列表接收任务等待列表 任务等待列表先进先出任务等待列表先进先出 (FIFO)次序)次序 Task 2 medium Task 3 medium Task 1 Low 第40页/共65页 第41页/共65页 Task1Task2 第42页/共65页 Task1 Task2 第43页/共65页 概述概述

16、 管道机制的主要数据结构管道机制的主要数据结构 典型的管道操作典型的管道操作 管道机制的典型应用管道机制的典型应用 第44页/共65页 Task 1 Task 2 管道管道 管道中的数据管道中的数据 写描述符写描述符读描述符读描述符 向管道向管道 写数据写数据 从管道从管道 读数据读数据 数据在管道内像一个非结构字节流,按数据在管道内像一个非结构字节流,按FIFOFIFO的次序从管道的次序从管道 中读出。当管道空时,阻塞读者,当管道满时,阻塞写者中读出。当管道空时,阻塞读者,当管道满时,阻塞写者 。 第45页/共65页 Task1 Task5 管道管道 Task2 Task3 Task4 Ta

17、sk6 ISR1 ISR2 ISR3 公共管道操公共管道操 作作 第46页/共65页 非空非空 满满 创建管道创建管道 无写入数无写入数 据据 读数据,有读数据,有 剩余数据剩余数据 空空 写数据写数据 读数据,读数据, 无数据留无数据留 下下 写数据,有写数据,有 剩余空间剩余空间 读数据读数据 写数据,无写数据,无 剩余空间剩余空间 第47页/共65页 管道控制块管道控制块 Byte count Data buffer Buffer size Output position Input position Task3Task4 接收任务等待列表接收任务等待列表 Task1Task2 发送任务

18、等待列表发送任务等待列表 第48页/共65页 Task 1 ISR Task 2 Task 3 Pipe1 Pipe2 Pipe3 任务任务Task3Task3等待从等待从Pipe1Pipe1 和和Pipe2Pipe2这两个管道读数这两个管道读数 据并写到第三个管道据并写到第三个管道 Pipe3Pipe3上。在这种情况下上。在这种情况下 ,当头两个管道中的任,当头两个管道中的任 意一个有数据时,意一个有数据时, SelectSelect调用返回。调用返回。 第49页/共65页 Task A Task B Select操作操作Select操作操作 管道管道C 管道管道D 任务任务A A和任务和任

19、务B B打开两个打开两个 管道作为任务间的通信管道作为任务间的通信 方式:打开管道方式:打开管道C C作为作为 从任务从任务A A到任务到任务B B的数据的数据 传输,打开管道传输,打开管道D D作为作为 从任务从任务B B到任务到任务A A的回应的回应 。任务。任务A A等待管道等待管道C C编程编程 可写,也等待管道可写,也等待管道D D上上 来自任务来自任务B B的回应。的回应。 两个任务之间的同步 管道主要用于任务到任务或管道主要用于任务到任务或ISRISR到任务的数据传输到任务的数据传输 第50页/共65页 概述概述 事件机制的主要数据结构事件机制的主要数据结构 典型的事件操作典型的

20、事件操作 事件机制的典型应用事件机制的典型应用 第51页/共65页 第52页/共65页 第53页/共65页 概述 任务任务 任务任务 任务任务 任务任务 ISR ISR OR AND “与与”型同步型同步 “或或”型同步型同步 事件集事件集 事件集事件集 POST POST PEND PEND 第54页/共65页 概述 任务任务 任务任务 任务任务 ISR OR AND 事件集事件集 事件集事件集 事件集事件集 (8,16或或32位)位) POST PEND PEND 第55页/共65页 n 包括事件条件中的任一事件即可 满足要求; n“与”同步:其二是待处理事件 集必须包括事件条件中的全部事

21、 件方可满足要求。 概述 第56页/共65页 第57页/共65页 第58页/共65页 第59页/共65页 WAIT NO_WAIT 接收事件(集)时可等待接收事件(集)时可等待 接收事件(集)时不等待接收事件(集)时不等待 接收者永远等待,直到事接收者永远等待,直到事 件条件被满足后成功返回件条件被满足后成功返回 ; 接收者根据指定的时限等接收者根据指定的时限等 待。待。 EVENT_ALL EVENT_ANY 待处理事件集必须包含事件条件中的全部事件方可满足要求,待处理事件集必须包含事件条件中的全部事件方可满足要求, 即按照即按照“与与”条件接收事件条件接收事件 待处理事件集只要包含事件条件中的任一事件即可满足要求,待处理事件集只要包含事件条件中的任一事件即可满足要求, 即按照即按照“或或”条件接收事件条件接收事件 第60页/共65页 n 事

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论