当前位置:文档之家› 第二章作业 参考答案

第二章作业 参考答案

第二章作业
2、画前驱图
4、程序并发执行时为什么会失去封闭性和可再现性?
答:
程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序分别来改变,致使程序的运行换去了封闭性,这样,某程序在执行时,必然会受到其它程序的影响。

程序在并发执行时,由于失去了封闭性,也将导致其再失去可再现性。

8、试说明进程在三个基本状态之间转换的典型原因。

答:
16. 进程在运行时存在哪两种形式的制约?试举例说明之。

答:同步:直接的相互制约关系,例如A进程向B进程传递数据,B进程接收数据后继续下面的处理;互斥:间接的相互制约关系,例如进程共享打印机。

22、试写出相应的程序来描述P82图2-17所示的前驱图。

图(a)
int a1=0,a2=0,a3=0,a4=0,a5=0,a6=0;a7=0;a8=0;
parbegin
begin S1;V(a1);V(a2);end;
begin P(a1);S2;V(a3);V(a4);end;
begin P(a2);S3;V(a5);end;
begin P(a3);S4;V(a6);end;
begin P(a4);S5;V(a7);end;
begin P(a5);S6;V(a8);end;
begin P(a6);P(a7);P(a8);S7;end;
parend
图(b)
int a1=0,a2=0,a3=0,a4=0,a5=0,a6=0;a7=0;a8=0;a9=0;a10=0;parbegin
begin S1;V(a1);V(a2);end;
begin P(a1);S2;V(a3);V(a4);end;
begin P(a2);S3;V(a5);V(a6);end;
begin P(a3);S4;V(a7);end;
begin P(a4);S5;V(a8);end;
begin P(a5);S6;V(a9);end;
begin P(a6);S7;V(a10);end;
begin P(a7);P(a8);P(a9);P(a10);S8;end;
parend
28、在测量控制系统中的数据采集任务,把所采集的数据送一单缓冲区;计算任务从该单缓冲中取出数据进行计算。

试写出利用信号量机制实现两者共享单缓冲的同步算法。

答:
int mutex=1;/*互斥信号量*/
int empty=n;/*空位同步信号量*/
int full=0;/*数据同步信号量*/
int in=0;/*写指针*/
int out=0;/*读指针*/
main( )
{
cobegin /*以下两进程并发执行*/
send( );
obtain( );
coend
}
send( )
{
while(1)
{
. .
collect data in nextp; /*nextp是临时缓冲区*/
. .
wait(empty);
wait(mutex);
buffer(in)=nextp;
in=(in+1) mod n;
signal(mutex);
signal(full);
}
}//send
obtain( )
{
while(1)
{
wait(full);
wait(mutex);
nextc=buffer(out);/*nextc是临时缓冲区*/
out=(out+1) mod n;
signal(mutex);
signal(empty);
culculate the data in nextc;
}//while
}//obtain
37、试说明线程具有哪些属性?
答:线程的属性:
(1) 轻权实体(2) 独立运行、调度的基本单位(3) 可以并发执行(4) 可共享所属进程的资源。

相关主题