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

下载本文档

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

文档简介

1、进程管理,进程同步,定义:我们把在异步环境下的一组并发进程因直接制约,互相发送消息,并进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步。 具有同步关系的一组并发进程称为合作进程;合作进程间互相发送的信号称为消息或事件。,同步的概念,进程同步,例:计算进程和打印进程公用同一缓冲区Buf。 PC(计算) PP(打印) A:local Buf B:local Pri Repeat Repeat Buf Buf Pri Buf Until Buf=空计算Until Pri 空 得到计算结果打印Buf中数据 Buf 计算结果 清除Buf中数据 Goto A Goto B,进程同步

2、,问题:浪费CPU时间。 采用消息的方法实现直接制约(同步): 设过程Wait(过程名)表示进程等待合作进程发来消息。 过程signal(消息名)表示向合作进程发送消息。 设消息名Bufempty表示Buf空,设消息名Buffull表示Buf满(装满数据)。 初始化:Bufempty=true,Buffull=false,进程同步,Pc Pp A:wait(Bufempty) B:wait(Buffull) 计算 打印Buf中的数据 Buf 计算结果 清除Buf中的数据 Bufempty false Buffull false Signal(Buffull) signal(Bufempty)

3、Goto A Goto B,进程同步,私用(有)信号量 把各进程间发送的消息作为信号量看待,这种信号量只与制约进程和被制约进程有关,但不与整组并发进程有关,这种信号量称为私用信号量(Private Semaphore)。 与私用信号量相对应,我们称进程互斥时使用的信号量为公用信号量。,进程同步,用P、V原语操作实现进程的直接制约(同步) 例子:设进程和通过缓冲区队列传送数据(如图3.13), PA为发送进程,PB为接收进程;PA发送数据时调用发送过程deposit(data),PB接收数据时调用过程remove(data)。且数据的发送与接收过程满足如下条件: 1)在PA至少送一块数据入一个缓

4、冲区之前,PB不可能从缓冲区中取出数据(假定数据块长等于缓冲区长度)。,进程同步,2)PA往缓冲队列发送数据时,至少有一个缓冲区是空的; 3)由PA发送的数据块在缓冲队列中按先进先出(FIFO)方式排列。 PA Buff1 buff2 buff3 . Buffn PB,进程同步,我们按如下三步描述过程deposit(data)和 remove (data) 1)设Buf-empty为进程PA的私用信号量,表示缓冲区是否有空;Buf-full为进程PB的私用信号量,表示缓冲区是否有数可取; 2)Buf-empty的初始值为n (n为缓冲队列的缓冲区个数),Buf-full的初始值为0;,进程同步

5、,3) 算法描述如下: PA: deposit(data) Begin local x; P(Buf-empty); 按FIFO方式选择一个空缓冲区Buf(x); Buf(x) data; Buf(x)置满标记; V(Buf-full); End.,进程同步,PB: remove(data) Begin local x; P(Buf-full); 按FIFO方式选择一个装满数据的缓冲区Buf(x); data Buf(x); Buf(x)置空标记; V(Buf-empty); End.,进程同步,这里,局部变量x用来指明缓冲区的区号;给Buf(x)置标志位是为了便于区别和搜索空缓冲区与非空缓冲

6、区。 比较互斥与同步的两个例子: 互斥 同步 设置信号量S(公用) 设置信号量S1,S2 (私用) 信号量初值S=1 信号量初值S1=n., S2=0。,进程同步,算法描述: P1 P1 Begin begin P(S) P(S1) 临界资源 送数 V(S) V(S2) End End,进程同步,P2 P2 Begin begin P(S) P(S2) 临界资源 取数 V(S) V(S1) End End,进程同步,示图: P1、P2 P1 P2 P(S) P(S1) P(S2) 临界区 送数 取数 V(S) V(S2) V(S1),进程同步,生产者消费者问题(Producer Consume

7、r Problems) 我们把系统中使用某一类资源的进程称为该资源的消费者,把释放同类资源的进程称为该资源的生产者。 多个生产者 多个消费者 P1 多个缓冲区 C1 P2 1 2 . n C2 Pn Cn,进程同步,设生产者进程和消费者进程是等效的,其中,各生产者进程使用的过程deposit(data)和各消费者使用的过程remove( data)可描述如下: 首先,我们可以看到生产者消费者问题是一个同步问题,即生产者和消费者之间满足如下条件:,进程同步,(1)消费者想接收数据时,有界缓冲区中至少有一个单元是满的。 (2)生产者想发送数据时,有界缓冲区中至少有一个单元是空的。 另外,由于有界缓冲区是临界资源,因此,各生产者进程和各消费者进程之间必须互斥执行,即在一个时刻,只有一个进程使用缓冲区。,进程同步,下面是多个生产者、多个消费者、多个缓冲区的问题:设置信号量: mutex:公用信号量,表示生产者进程与消费者进程的互斥信号量; avail:生产者进程的私用信号量,其值表示有界缓冲区中的空单元数目(缓冲区空的个数);,进程同步,full:消费者进程的私用信号量,其值表示有界缓冲区中的非空单元数目(缓冲区满的个数)。 给信号量赋初值: mutex初值为1; avail初值为n; full初值为0 。,进程同步,过程描述: deposit(data

温馨提示

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

最新文档

评论

0/150

提交评论