嵌入式系统教学:操作系统4-同步ppt课件_第1页
嵌入式系统教学:操作系统4-同步ppt课件_第2页
嵌入式系统教学:操作系统4-同步ppt课件_第3页
嵌入式系统教学:操作系统4-同步ppt课件_第4页
嵌入式系统教学:操作系统4-同步ppt课件_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、进程管理进程同步 定义:我们把在异步环境下的一组并发进定义:我们把在异步环境下的一组并发进程因直接制约,相互发送音讯,并进展相互协程因直接制约,相互发送音讯,并进展相互协作、相互等待,使得各进程按一定的速度执行作、相互等待,使得各进程按一定的速度执行的过程称为进程间的同步。的过程称为进程间的同步。 具有同步关系的一组并发进程称为协作进具有同步关系的一组并发进程称为协作进程;协作进程间相互发送的信号称为音讯或事程;协作进程间相互发送的信号称为音讯或事件。件。 同步的概念进程同步进程同步 例:计算进程和打印进程公用同一缓冲区例:计算进程和打印进程公用同一缓冲区BufBuf。 PC( PC(计算计算

2、) PP) PP打印打印 A:local Buf B:local Pri A:local Buf B:local PriRepeat RepeatRepeat Repeat Buf Buf Pri Buf Buf Buf Pri BufUntil Buf=Until Buf=空计算空计算Until Pri Until Pri 空空得到计算结果得到计算结果打印打印BufBuf中数据中数据Buf Buf 计算结果计算结果 去除去除BufBuf中数据中数据Goto A Goto A Goto B Goto B进程同步进程同步 问题:浪费CPU时间。 采用音讯的方法实现直接制约(同步): 设过程Wai

3、t(过程名)表示进程等待协作进程发来音讯。 过程signal(音讯名)表示向协作进程发送音讯。 设音讯名Bufempty表示Buf空,设音讯名Buffull表示Buf满装满数据。 初始化:Bufempty=true,Buffull=false 进程同步进程同步Pc PpA:wait(Bufempty) B:wait(Buffull) 计算 打印Buf中的数据 Buf 计算结果 去除Buf中的数据 Bufempty false Buffull false Signal(Buffull) signal(Bufempty) Goto A Goto B进程同步进程同步 私用有信号量私用有信号量 把各进

4、程间发送的音讯作为信号量对待,把各进程间发送的音讯作为信号量对待,这种信号量只与制约进程和被制约进程有关,这种信号量只与制约进程和被制约进程有关,但不与整组并发进程有关,这种信号量称为但不与整组并发进程有关,这种信号量称为私用信号量私用信号量Private SemaphorePrivate Semaphore。 与私用信号量相对应,我们称进程互斥时与私用信号量相对应,我们称进程互斥时运用的信号量为公用信号量。运用的信号量为公用信号量。进程同步进程同步 用用P P、V V原语操作实现进程的直接制约原语操作实现进程的直接制约( (同步同步) ) 例子:设进程和经过缓冲区队列传送数据如图例子:设进程

5、和经过缓冲区队列传送数据如图3.133.13, PA, PA为发送进程,为发送进程,PBPB为接纳进程;为接纳进程;PAPA发送数据发送数据时调用发送过程时调用发送过程deposit(data)deposit(data),PBPB接纳数据时调用过接纳数据时调用过程程remove(data)remove(data)。且数据的发送与接纳过程满足如下。且数据的发送与接纳过程满足如下条件:条件: 1 1在在PAPA至少送一块数据入一个缓冲区之前,至少送一块数据入一个缓冲区之前,PBPB不能不能够从缓冲区中取出数据假定数据块长等于缓冲区长够从缓冲区中取出数据假定数据块长等于缓冲区长度。度。进程同步进程同

6、步 2PA往缓冲队列发送数据时,至少有一个缓冲区是空的; 3由PA发送的数据块在缓冲队列中按先进先出FIFO方式陈列。 PA Buff1 buff2 buff3 . Buffn PB进程同步进程同步 我们按如下三步描画过程deposit(data)和 remove (data) 1设Buf-empty为进程PA的私用信号量,表示缓冲区能否有空;Buf-full为进程PB的私用信号量,表示缓冲区能否有数可取; 2Buf-empty的初始值为n (n为缓冲队列的缓冲区个数),Buf-full的初始值为0;进程同步进程同步 3) 算法描画如下: PA: deposit(data) Begin loc

7、al x; P(Buf-empty); 按FIFO方式选择一个空缓冲区Buf(x); Buf(x) data; Buf(x)置满标志; V(Buf-full); End.进程同步进程同步 PB PB: remove(data) remove(data) Begin local x; Begin local x; P(Buf-full); P(Buf-full); 按按FIFOFIFO方式选择一个装方式选择一个装满数据的缓冲区满数据的缓冲区Buf(x);Buf(x); data Buf(x); data Buf(x); Buf(x) Buf(x)置空标志;置空标志; V(Buf-empty);

8、V(Buf-empty); End. End.进程同步进程同步 这里,部分变量x用来指明缓冲区的区号;给Buf(x)置标志位是为了便于区别和搜索空缓冲区与非空缓冲区。 比较互斥与同步的两个例子:互斥 同步设置信号量S公用 设置信号量S1,S2 私用信号量初值S=1 信号量初值S1=n., S2=0。 进程同步进程同步 算法描画: P1 P1 Begin begin P(S) P(S1) 临界资源 送数 VS VS2 End End进程同步进程同步 P2 P2 P2 P2 Begin begin Begin begin P(S) P(S2) P(S) P(S2) 临界资源临界资源 取数取数 V

9、VS S V VS1S1 End End End End进程同步进程同步 示图: P1、P2 P1 P2 PS P(S1) P(S2) 临界区 送数 取数 VS VS2 VS1 进程同步进程同步 消 费 者 消 费 者 问 题 P r o d u c e r Consumer Problems 我们把系统中运用某一类资源的进程称为该资源的消费者,把释放同类资源的进程称为该资源的消费者。 多个消费者 多个消费者P1 多个缓冲区 C1P2 1 2 . n C2 Pn Cn进程同步进程同步设消费者进程和消费者进程是等效的,设消费者进程和消费者进程是等效的,其 中 , 各 消 费 者 进 程 运 用

10、的 过 程其 中 , 各 消 费 者 进 程 运 用 的 过 程deposit(data)deposit(data)和各消费者运用的过程和各消费者运用的过程remove( data)remove( data)可描画如下:可描画如下:首先,我们可以看到消费者首先,我们可以看到消费者消费者问消费者问题是一个同步问题,即消费者和消费者之题是一个同步问题,即消费者和消费者之间满足如下条件:间满足如下条件:进程同步进程同步1消费者想接纳数据时,有界缓冲区中至少有一个单元是满的。2消费者想发送数据时,有界缓冲区中至少有一个单元是空的。另外,由于有界缓冲区是临界资源,因此,各消费者进程和各消费者进程之间必需互斥执行,即在一个时辰,只需一个进程运用缓冲区。进程同步进程同步下面是多个消费者、多个消费者、多个缓冲区的问题:设置信号量: mutex:公用信号量,表示消费者进程与消费者进程的互斥信号量; avail:消费者进程的私用信号量,其值表示有界缓冲区中的空单元数目缓冲区空的个数; 进程同步进程同步 full:消费者进程的私用信号量,其值表示有界缓冲区中的非空单元数目缓冲区满的个数。 给信号量赋初值

温馨提示

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

评论

0/150

提交评论