习题解答——第3章进程同步与通信_第1页
习题解答——第3章进程同步与通信_第2页
习题解答——第3章进程同步与通信_第3页
习题解答——第3章进程同步与通信_第4页
习题解答——第3章进程同步与通信_第5页
全文预览已结束

下载本文档

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

文档简介

1、第3章进程同步与通信6.有三个并发执行的进程 A、B和C, A负责输入信息到缓冲区,B负责加工输入到缓冲区中的数据,C负责将加工后的数据打印输出。在下列情况下:(1单缓冲区。(2)由N个缓冲区组成的缓冲池。分别写出三个进程的并发关系。答:(1)semaphore S1=1, S2=S3=0A:B:C:while(1) while(1) while(1) P(S1);P(S2);P(S3);输入信息到缓冲区;加工缓冲区中数据;输出缓冲区中数据;V(S2);V(S3);V(S1);(2) semaphore S仁N; semaphore S2=0,S3=0; semaphore mutex=1;

2、int i.,j,k;ITEM bufferN;ITEM data_i,data_o;A:B:C:while(1) while(1) while(1) P(S1);P(S2);P(S3);P(mutex);P(mutex);P(mutex);输入数据data_i;data_o= bufferk;bufferi=data_i;处理中bufferj的数据k=(k+1)%N;i=(i+1)%N;j=(j+1)%N;输出 data_o;V(mutex);V(mutex);V(mutex);V(S2);V(S3);V(S1);7三个并发执行的进程 A、B和C, A与B共享缓冲区M , B与C共享缓冲区N

3、,如图所示:假 如缓冲区的大小只能存放一个单位的数据,试写出A、B、C三个进程的同步关系。答:semaphore S1=M;S3=N;semaphore S2=0,S4=0; semaphore mutex=1; int i.,j,k,l;ITEM buffer1M;ITEM buffer2N;ITEM data_i,data_o;9设有两个优先级相同的进程P1 , P2如下,令信- 号量 S1、S2的初值为0,已知z=2 ,A:B:C:while (1) while (1) while (1) P(S1);P(S2);P(S4);P(mutex);P(mutex) ;P(mutex);输入数

4、据 data_i;data_o=buffer1j;data_o= bufferl;buffer1i=data-i;j=(j+1)%M;l=(l+1)%N;i=(i+1)%M;V(mutex);输出 data_o;V(mutex);V(S1);V(mutex);V(S2);P(S3)V(S3);P(mutex); buffer2k=data_o; k=(k+1)%N;V(mutex);V(S4)试 问P1、P2并发运行结束后x= ? y= ? z= ?进程 P1进程 P2y: =1 ; y:=y+2 ;V(S1);x:=1 ; x:=x+1 ; P(S1);z:=y+1 ;x:=x+y ;P(S

5、2);V(S2) ;z:=x+z ;y:=z+y ;解答:由题意可知执行顺序存在如下 5种情况:z:=y+1x:=x+yy:=z+yz:=x+zz:=y+1x:=x+yz:=x+zy:=z+yx:=x+yz:=y+1 z:=x+zy:=z+yx:=x+yz:=y+1 y:=z+yz:=x+zx:=x+yz:=x+z z:=y+1y:=z+y和的结果为:x=5,y=7,z=9;和结果为: X=5,y=12,z=9;的结果为: x=5,y=7,z=4;*10 有一个隧道,由于很窄,只能容纳一个方向的车辆通过。如果东西两方向的车辆都想 通过该隧道,并有下面的情况:(1)如东西两方向的车辆都想通过隧道

6、时,便形成了等待队列。 (2)若一个方向没有车辆,允许另一个方向的车辆通过。 (3)若双方都有车辆想通过,则先到达的哪个方向的车辆先通过。 试用 PV 操作描述东西两方向车辆的同步关系。解答:方法一: (用信号量)Semaphore eastmutex,westmutex,mutex=1;Int east,west=0;东方向车:Void eastcar()while(true) P(eastmutex);If(east=0)P(mutex);east+;V(eastmutex);Go through the tunnel;P(eastmutex);east-;If(east=0)V(mute

7、x);V(eastmutex);Leave;西方向车:Void westtcar()while(true) P(westmutex);If(west=0)P(mutex);west+;V(westmutex);Go through the tunnel;P(westmutex);west-;If(west=0)V(mutex);V(westmutex);Leave; 方法二:(用一般 “信号量集 ”) Semaphore eastmutex,westmutex=N; 东方向车:Void eastcar()swait(eastmutex,1,1; westmutex,N,0);Go throug

8、h the tunnel;Ssignal(eastmutex,1);西方向车:Void westcar()swait(westmutex,1,1; eastmutex,N,0);Go through the tunnel;Ssignal(westmutex,1); *13在读者、写者问题中,如果总有读者进程进行读操作,会造成写者进程永远都不能进 行写操作(读者优先) ,即所谓的写者饿死现象。给出读者、写者问题的另一个解决方案: 即保证当有一个写者进程想写时, 不允许读者进程再进入, 直到写者写完为止, 即写者优先。 解答:Semaphore Rmutex,Wmutex,mutex1=mutex2=1;Int Rcount,Wcount=0;、十一h<读者:Void reader()while(true) P(mutex1);V(mutex1);P(Rmutex);If(Rcount=0)P(Wmutex);Rcount+;V(Rmutex);reading;P(Rmutex);Rcount-;If(Rcount=0)V(Wmutex);V(Rmutex);Leave;Void writer()while(true) P(m

温馨提示

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

评论

0/150

提交评论