《嵌入式系统教学课件:操作系统4-同步.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统教学课件:操作系统4-同步.ppt(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、进程管理进程同步 定定义义:我我们们把把在在异异步步环环境境下下的的一一组组并并发发进进程程因因直直接接制制约约,互互相相发发送送消消息息,并并进进行行互互相相合合作作、互互相相等等待待,使使得得各各进进程程按按一一定定的的速速度度执执行行的的过过程称为进程间的同步。程称为进程间的同步。具具有有同同步步关关系系的的一一组组并并发发进进程程称称为为合合作作进进程程;合作进程间互相发送的信号称为消息或事件。合作进程间互相发送的信号称为消息或事件。同步的概念进程同步进程同步 例:计算进程和打印进程公用同一缓冲区例:计算进程和打印进程公用同一缓冲区BufBuf。P PC C(计算计算)P PP P(打
2、印)(打印)A:local Buf B:local PA:local Buf B:local PririRepeat RepeatRepeat Repeat Buf Buf P Buf Buf Pri ri BufBufUntil Buf=Until Buf=空计算空计算Until PUntil Priri 空空得到计算结果得到计算结果打印打印BufBuf中数据中数据Buf Buf 计算结果计算结果 清除清除BufBuf中数据中数据Goto A Goto A Goto B Goto B进程同步进程同步 问题:浪费CPU时间。采用消息的方法实现直接制约(同步):设过程Wait(过程名)表示进程等
3、待合作进程发来消息。过程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),P PA A为为发发送送进进程程,P PB B为为接接收收进进程程;P PA A发发送送数数据据时时调调用用发发送送过过程程deposit(data)deposit(data),P PB B接接收收数数据据时时调调用用过过程程remove(data)remove(data)。且且数数据据的的发发送送与接收过程满足如下条件:与接收过程满足如下条件:1 1)在在P PA A至至少少送送一一块块数数据据入入一一个个缓缓冲冲区区之之前前,P PB B不不可可能能从从缓缓冲冲区区中中取取出出数数据据(假假定定数数据据块块长长等于缓冲区长度)。等于缓冲区长度)。进程同步进程
6、同步 2)P PA A往往缓缓冲冲队队列列发发送送数数据据时时,至至少少有有一一个缓冲区是空的;个缓冲区是空的;3 3)由由P PA A发发送送的的数数据据块块在在缓缓冲冲队队列列中中按按先先进先出(进先出(FIFOFIFO)方式排列。)方式排列。P PA A BuffBuff1 1 buffbuff2 2 buffbuff3 3 .BuffBuffn n P PB B进程同步进程同步 我们按如下三步描述过程deposit(data)和 remove(data)1)设Buf-empty为进程PA的私用信号量,表示缓冲区是否有空;Buf-full为进程PB的私用信号量,表示缓冲区是否有数可取;2
7、)Buf-empty的初始值为n(n为缓冲队列的缓冲区个数),Buf-full的初始值为0;进程同步进程同步 3)算法描述如下:PA:deposit(data)Begin local x;P(Buf-empty);按 FIFO方 式 选 择 一 个 空 缓 冲 区Buf(x);Buf(x)data;Buf(x)置满标记;V(Buf-full);End.进程同步进程同步 P PB B:remove(data)remove(data)Begin local x;Begin local x;P(Buf-full);P(Buf-full);按按FIFOFIFO方方式式选选择择一一个个装装满满数数据据的
8、缓冲区的缓冲区Buf(x);Buf(x);data Buf(x);data Buf(x);Buf(x)Buf(x)置空标记;置空标记;V(Buf-empty);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)临界资源 送数 V(S)V(S2)En
9、d End进程同步进程同步 P2 P2 P2 P2 Begin begin Begin begin P(S)P(S P(S)P(S2 2)临界资源临界资源 取数取数 V V(S S)V V(S S1 1)End End End End进程同步进程同步 示图:P1、P2 P1 P2 P(S)P(S1)P(S2)临界区 送数 取数 V(S)V(S2)V(S1)进程同步进程同步 生 产 者 消 费 者 问 题(Producer Consumer Problems)我们把系统中使用某一类资源的进程称为该资源的消费者,把释放同类资源的进程称为该资源的生产者。多个生产者 多个消费者P1 多个缓冲区 C1P
10、2 1 2 .n C2 Pn Cn进程同步进程同步设设生生产产者者进进程程和和消消费费者者进进程程是是等等效效的的,其其 中中,各各 生生 产产 者者 进进 程程 使使 用用 的的 过过 程程deposit(data)deposit(data)和和各各消消费费者者使使用用的的过过程程removeremove(data)(data)可描述如下:可描述如下:首首先先,我我们们可可以以看看到到生生产产者者消消费费者者问问题题是是一一个个同同步步问问题题,即即生生产产者者和和消消费费者者之之间满足如下条件:间满足如下条件:进程同步进程同步(1)消费者想接收数据时,有界缓冲区中至少有一个单元是满的。(2
11、)生产者想发送数据时,有界缓冲区中至少有一个单元是空的。另外,由于有界缓冲区是临界资源,因此,各生产者进程和各消费者进程之间必须互斥执行,即在一个时刻,只有一个进程使用缓冲区。进程同步进程同步下面是多个生产者、多个消费者、多个缓冲区的问题:设置信号量:mutex:公用信号量,表示生产者进程与消费者进程的互斥信号量;avail:生产者进程的私用信号量,其值表示有界缓冲区中的空单元数目(缓冲区空的个数);进程同步进程同步 full:消费者进程的私用信号量,其值表示有界缓冲区中的非空单元数目(缓冲区满的个数)。给信号量赋初值:mutex初值为1;avail初值为n;full初值为0。进程同步进程同步过程描述:deposit(data)remove(data)begin beginP(avail)P(full)P(mutex)P(mutex)送数到缓冲区某单元 取缓冲区某单元数据V(full)V(avail)V(mutex)V(mutex)End End