进程同步习题全课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《进程同步习题全课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 进程 同步 习题 课件
- 资源描述:
-
1、进程管理进程管理设有设有n n个进程共享一个程序段,对如下两种情况:个进程共享一个程序段,对如下两种情况:(1)1)如果每次只允许一个进程进入该程序段;如果每次只允许一个进程进入该程序段;(2)(2)如果每次最多允许如果每次最多允许m m个进程个进程(M(Mn)n)同时进入该同时进入该程序段。程序段。试问:所采用的信号量初值是否相同试问:所采用的信号量初值是否相同?信号量值的变信号量值的变化范围如何化范围如何?所采用信号量的初值不相同。所采用信号量的初值不相同。在情况在情况(1)(1)中,信号量的初值为中,信号量的初值为1 1,信号量值的变化范围是信号量值的变化范围是l l,0 0,-1-1-
2、(n-1)-(n-1)。在情况在情况(2)(2)中,信号量的初值为中,信号量的初值为M M,信号量值的变化范围是信号量值的变化范围是M M,m-1m-1,m-2m-2(m-n)(m-n)。进程管理进程管理【例】一个buffer,一个生产者,一个消费者,生产者只生产一个东西,消费者只进行一次消费,即:生产者只进行一次putdata操作,消费者只进行一次getdata操作。进程管理进程管理【解答】设置信号量full,表示buffer是否有数据,初值为0生产者 消费者 putdata P(full)V(full)getdata进程管理进程管理【例】一个buffer,一个生产者,一个消费者,生产者不断
3、进行putdata操作,消费者不断进行getdata操作,即生产者不断生产,消费者不断消费。【解答】buffer为空时,才能进行putdata操作,只有buffer有数据时,才能进行getdata操作信号量 full:是否有数据初值为0 empty:是否为空,初值为1进程管理进程管理生产者:repeat P(empty)putdata V(full)消费者:repeat P(full)getdata V(empty)进程管理进程管理【例】一个buffer,多个生产者,多个消费者,多个生产者和消费者都在不断地存取buffer,即生产者不断地进行putdata操作,消费者不断进行getdata操作
4、。【解答】只有buffer为空时能进行putdata操作,只有buffer有数据时能进行putdata操作。不允许多个进程同时操作buffer,即不允许多个消费者同时进行getdata,不允许多个生产者进行putdata操作信号量 full:buffer是否有数据,初值为0 empty:buffer是否为空,初值为1 mutex:buffer是否可操作,初值为1进程管理进程管理生产者irepeat P(empty)P(mutex)putdata V(mutex)V(full)消费者irepeat P(full)P(mutex)getdata V(mutex)V(empty)进程管理进程管理【例
5、】多个生产者,多个消费者,N个buffer,多次循环存取buffer,即多个生产者不断进行putdata操作,多个消费者不断进行getdata操作【解答】只有buffer有空间时才能进行putdata操作只有buffer有数据时才能进行getdata操作不允许多个消费者和多个生产者同时操作信号量 full:表示buffer是否有数据,初值为0 empty:表示buffer是否为空,初值为n mutex:表示buffer是否可操作,初值为1进程管理进程管理生产者i repeat P(empty)P(mutex)putdata V(mutex)V(full)消费者j repeat P(full)P
6、(mutex)putdata V(mutex)V(empty)进程管理进程管理【改进】putdata和getdata操作都在临界区中,因此多个进程对多个buffer的操作不能并行进行的,进程间并行操作的程度很低。实际上只要保证多个进程同时操作不同buffer就可以实现对整个buffer的并行操作。getEBuffer()返回空的buffer号 getEBuffer()return(pbuffer+1)mod ngetDBuffer()返回有数据的buffer号 getDBuffer()return(pdata+1)mod n进程管理进程管理 semaphore mutex,empty,full
7、=1,n,0 integer pbuff,pdata=0,0 生产者i 消费者j repeat repeat P(empty)P(full)P(mutex)P(mutex)in=getEBuffer()out=getDBuffer()V(mutex)V(mutex)putdata(in)getdata(out)V(full)V(empty)进程管理进程管理【练习】如图,有多个PUT操作同时向Buff1放数据,有一个MOVE操作不断地将Buff1的数据移到Buff2,有多个GET操作不断地从Buff2中将数据取走。Buff1的容量是m,Buff2的容量是n,PUT,MOVE,GET每次操作一个数
8、据,在操作的过程中要保证数据不丢失。试用P,V原语协调PUT,MOVE操作,并说明每个信号量的含义和初值。进程管理进程管理Buff1Buff2MOVEPUTGET进程管理进程管理【解答】三类进程:多个PUT类进程,一个MOVE类进程,多个GET类进程操作规则1 只有buff1有空间才能进行PUT操作2 只有buff1有数据,buff2有空间才能进行MOVE操作3 只有buff2有数据才能进行GET操作4 不允许多个进程同时操作buff15 不允许多个进程同时操作buff2进程管理进程管理操作流程 repeat 判断buff1是否有空间,没有则等待 是否可操作buff1 PUT 设置buff1可
9、操作标志 设置buff1有数据的标志 until false进程管理进程管理 repeat 判断buff1是否有数据,没有则等待 判断buff2是否有空间,没有则等待 是否可操作buff1 是否可操作buff2 MOVE 设置buff1可操作标志 设置buff2可操作标志 设置buff1有空间标志 设置buff2有空间标志进程管理进程管理 repeat 判断buff2是否有数据,没有则等待 是否可操作buff2 GET 设置buff1可操作标志 设置buff1有空间标志进程管理进程管理4 信号量 设置6个信号量 full1:buff1是否有数据,初值为0 empty1:buff1有空间,初值为
10、m mutex1:buff1是否可操作,初值为1 full2:buff2是否有数据,初值为0 empty2:buff2有空间,初值为n mutex2:buff2是否可操作,初值为1进程管理进程管理5 PV操作实现 repeat p(empty1);/判断buff1是否有空间,没有则等待 p(mutex1);/是否可操作buff1 PUT;v(mutex1);/设置buff1可操作标志 v(full);/设置buff1有数据标志进程管理进程管理 repeat P(full1);判断buff1是否有数据,没有则等待 P(empty2);/判断buff2是否有空间,没有则等待 P(mutex1);/
11、是否可操作buff1 P(mutex2);/是否可操作buff2 MOVE;V(mutex1);/设置buff1可操作标志 V(mutex2);/设置buff2可操作标志 V(empty1);/设置buff1有空间标志 V(full2);/设置buff2有数据标志进程管理进程管理 repeat P(empty2);/判断buff2是否有空间,没有则等待 P(mutex2);/是否可操作buff2 GET V(mutex2);/设置buff2可操作标记 V(full2);/设置buff2有数据标记进程管理进程管理【例】现有4个进程R1,R2,W1,W2。它们共享可以存放一个数据的缓冲器B。进程R
12、1每次把磁盘上读出的一个数据存到缓冲器B中,供进程W1打印输出;进程R2每次从键盘上读一个数据存放到缓冲器B,供W2打印输出。当一个进程把数据存放到缓冲器后,在该数据还没有打印输出之前不准任何进程再想缓冲器中存数据。当一个进程已把缓冲器中的数据打印输出后,在缓冲器中还没有存如新数据之前不准任何进程再从缓冲器中取数打印。问怎样用PV操作使这4个进程并发执行时能相互协作地工作?进程管理进程管理R1R2W1W2进程管理进程管理【解答】4个进程互斥,R1,W1同步,R2,W2同步 mutex:表示能否把数据存如缓冲器,初始化时缓冲器为空,故初值为1 S1:进程R1是否已向缓冲器存入一个数据,初值为0
13、S2:进程R2是否已向缓冲器存入一个数据,初值为0进程管理进程管理 begin mutex,s1,s2:semaphore;s:=1;s2:=0;s2:=0;cobegin process R1 begin L1:从磁盘上读数据送x1;P(mutex);B:=x1;V(s1);goto L1 end;process W1 begin L3:P(s1);y:=B;V(mutex);打印y goto L3 end;进程管理进程管理 process R2 begin L2:从键盘上读数据送x2;P(mutex);B:=x2;V(s2);goto L2 end;process W2 begin L4:
14、P(s2);z:=B;V(mutex);打印z;goto L4 end;进程管理进程管理【例】假定有3个进程R,W1,W2共享一个缓冲器,而B中每次只能存放一个数,当缓冲器中无数时,进程R可将M输入设备上读入的数存放到缓存器B中,若存放到缓存器中的是奇数,则允许进程W1将其取出打印;若存放到缓冲器中的是偶数,则允许进程W2将取出打印。同时规定:进程R必须等缓冲器中的数被取出打印后才能再存放一个数;进程W1或W2对每次存入缓冲器中的数只能打印一次;W1和W2都不能从空的缓冲器中取数。写出这3个并发进程能正确工作的程序。进程管理进程管理【分析】把进程R看作是生产者,把进程W1和W2看作是消费者。现
15、在有一个生产者(进程R)能生产不同的产品(读入奇数或偶数),把生产的产品存放在缓冲器B中,供不同的消费者(进程W1和进程W2)取用。可以看出,当进程R读入的是整数,则要把有奇数的消息发送给进程W1;当进程R读入的是偶数,则要把有偶数的消息发送给W2,在进程W1或进程W2从缓冲器中取出数后,应把缓冲器中又可有一个数的消息告诉进程R,于是,可以定义如下3个信号量:S表示是否可以把数存入缓冲器,由于缓冲器中每次只能放一个数,所以其初值取为”1“SO:表示缓冲器中是否有奇数,初值为”0“,表示无奇数SE:表示缓冲器是否偶数,初值为0,表示无偶数进程管理进程管理【解答】integer B;semapho
16、re S,SO,SE SO=0;SE=0:integer x L1:从输入设备读入一个数 X=读入的数 P(S);B=X if(B=偶数)V(SO)else V(SE)goto L1进程管理进程管理进程管理进程管理【例】设有一个具有N个信息元素的环形缓冲区,A进程顺序地把信息写入缓冲区,B进程依次从缓冲区读出信息。回答下列问题:1 叙述A,B两进程的相互制约关系2 判别下列用PV操作表示的同步算法是否正确?如不正确,试说明理由,并修改成正确的算法。设置信号量初值:S10,S2N;设置变量初值:in=out=0;进程管理进程管理【例】进程P1使用缓冲区buffer向进程P2,P3,P4发送消息,
17、要求每当P1向buffer中发消息时,只有当P2,P3,P4进程都读取这条消息后才可再向buffer中发送消息。利用PV原语描述进程的动作序列P1bufferP2P3P4进程管理进程管理【解答】设置信号量初值S1=S2=S3=0,S=3进程P1 进程P2 进程P3 进程P4P(S)P(S1)P(S2)P(S3)P(S)读消息 读消息 读消息P(S)V(S)V(S)V(S)发送消息到BufferV(S1)V(S2)V(S3)进程管理进程管理【例】设A,B为两个并发进程,它们共享一个临界区,其执行临界区的算法框图如下。试判断该算法是否有错?请说明理由。如果有错,请改正。S1,S2的初值为0,CSA
18、,CSB为临界区。CSAV(S1)P(S2)A进程P(S1)CSBV(S2)B进程进程管理进程管理【分析】系统启动时,S1,S2为0,则B执行P(S1)被阻塞,而A进程可直接访问临界资源。故A,B两个并发进程不可能同时操作临界资源,该算法是可以保证互斥的。按题目要求,两个进程对临界资源的操作是没有先后顺序的,但是,在上面的实现中,只有A进程先操作完资源后,B资源才能操作。进程管理进程管理【解答】该算法错误若A进程用不要求访问临界资源,则不会折行V(S1),意味着B进程的申请永远得不到操作临界资源的机会;同理,若B不要求访问临界资源,则不会执行V(S2),意味着进程A下次也得不到操作临界资源的机
19、会。所以,问题在于本应该互斥控制而使用的却是同步控制。实现改正:进程管理进程管理信号量mutex=1A进程 B进程 repeat repeat P(mutex);P(mutex);CSA;CSB;V(mutex);V(mutex);进程管理进程管理【例】当进程X和进程Y共享某个资源r,进程并发执行时的程序如下:semaphore=1Process X Process Y L1:P(S)L2:P(S)使用资源r 使用资源r V(S)V(S)goto L1 goto L2进程管理进程管理请回答:1 两个进程并发执行时,能否保证互斥使用资源?为什么?2 若要使两个进程交替使用资源,仍使用PV操作来进
20、行管理,写出应定义的信号量机器初值3 修改上述程序,使两个进程能交替使用资源r进程管理进程管理【解答】1 能保证互斥使用资源。因为在两个进程中,“使用资源r”都是作为临界区,由P(S)和V(S)操作保证互斥执行,S的初值定义为1,符合要求。2 要使两个进程交替使用资源,仅仅保证互斥使用是不够的,必须要两个进程相互等待互相通知。为此,必须定义新的信号量。定义两个私有信号量S1和S2。假定进程X先使用资源,那么进程X的私有信号量S1的初值定义为1,进程Y的私有信号量S2的初值为0.轮流使用可以保证互斥,因此信号量S可以不要。进程管理进程管理3 两个进程可以改为semaphore S1=1semap
21、hore S2=0Process X Process Y L1:P(s1)L2:P(S2)使用资源r 使用资源r V(S2)V(S1)goto L1 goto L2进程管理进程管理【例】桌上有一空盘,只允许存放一个水果。爸爸可向盘中放苹果,也可向盘中放橘子。儿子专等吃盘中的橘子,女儿专等吃盘中的苹果。规定当盘中空时一次只能放一只水果供吃者取用,请用PV原语实现爸爸,儿子,女儿三个并发进程的同步进程管理进程管理【解答】信号量mutex:盘子是否为空信号量So:盘中是否有橘子信号量Sa:盘中是否有苹果Sempahore mutex=1,So=0,Sa=0进程管理进程管理 father P(mute
22、x);将水果放入盘中 if(放入的是橘子)V(So)else V(Sa)儿子 P(So);从盘中取橘子 V(mutex)吃橘子女儿 P(Sa);从盘中取苹果 V(mutex)吃苹果进程管理进程管理读者写者(reader writer),共享文件要求:1 允许多个读者同时对文件执行读操作2 只允许一个写者对文件执行写操作3 任何写者在完成写操作前不允许其他读者或写者工作4 写者在执行写操作前,应让已有的写者和读者全部退出进程管理进程管理单纯使用信号量不能解决问题,引入计数器readcount对读进程计算,mutex是用于对计数器readcount操作的互斥信号量,writeblock表示是否允许
23、写的信号量进程管理进程管理 int readcount=0 semaphore writeblock,mutex;writeblock=1;mutex=1进程管理进程管理 读者i P(mutex)readcount+if(readcount=1)P(writeblock)V(mutex)读文件 P(mutex);readcount if(readcount=0)V(writeblock)V(mutex)写者j P(writeblock)写文件 V(writeblock)进程管理进程管理1.1.一条小河上有一座独木桥,规定每次只允许一一条小河上有一座独木桥,规定每次只允许一人过桥。如果把每个过桥
24、这看作一个进程,为人过桥。如果把每个过桥这看作一个进程,为保证安全,请用信号量操作实现正确管理。保证安全,请用信号量操作实现正确管理。进程管理进程管理begin s:semaphore;s:=1;cobegin begin wait(s);过桥;signal(s);endCoendend进程管理进程管理va,ba,b 两点间是一段东西向的单行车道,现要设两点间是一段东西向的单行车道,现要设计一个自动管理系统,管理规则如下:当计一个自动管理系统,管理规则如下:当abab间间有车辆在行驶时同方向的车可以同时驶入有车辆在行驶时同方向的车可以同时驶入abab段,段,但另一方向的车必须在但另一方向的车必
25、须在abab段外等待;当段外等待;当abab之间之间无车时,到达无车时,到达a a(或(或b b)的车辆可以进入)的车辆可以进入abab段,段,但不能从但不能从a a,b b点同时驶入;当某方向在点同时驶入;当某方向在abab段行段行驶的车辆使出了驶的车辆使出了abab段且无车辆进入段且无车辆进入abab段时,应段时,应让另一方向等待的车辆进入让另一方向等待的车辆进入abab段行驶。请用段行驶。请用wait,signalwait,signal工具对工具对abab段实现正确管理。段实现正确管理。进程管理进程管理Semaphore s,mutexab,mutexbaSemaphore s,mute
展开阅读全文