P[i]; coend } P( ) {
...
...
p(mutex);
...
v(mutex);
... }
若mutex=1,表示没有进程进入临界区;
若mutex=0,表示有一个进程进入临界区;
若mutex=-1,表示一个进程进入临界区,另一个进程等待进入。
4-11在如图4.33所示的进程流程图中,有五个进程合作完成某一任务。说明这五个进程之间的同步关系,并用P,V操作实现之,要求写出程序描述。
答:main( ) {
int s2,s3,s4,s5=0; /*表示进程p2,p3,p4,p5能否执行*/
cobegin
P1( );
P2( );
P3( );
P4( );
P5( );
coend
}
P1( ) P2( ) P3( ) P4( ) P5( )
{ ... { p(s2); { p(s3); { p(s4); { p(s5);
... ... ... ... ...
v(s2); ... .. ... ...
v(s3); } v(s5); v(s5); }
v(s4); } } }
4-12如图4.34所示,get,copy,put三个进程共用两个缓冲区s,t。Get进程负责不断地把输入记录送入缓冲区s中,copy进程负责从缓冲区s中取出记录复制到缓冲区t中,而put进程负责把记录从缓冲区t中取出打印。试用P,V操作实现这三个进程之间的同步,并写出程序描述。
答:main( )
{
int s,t=0; /*表示进程get,copy,put能否执行*/
cobegin
Get( );
Copy( );
Put( );
coend }
Get( ) Copy( ) Put( )
{ p(s); { p(t); { ...
.... .... v(t);
} v(s); }
}
4-13 什么是进程的互斥,什么是进程的同步?同步和互斥这两个概念有什么联系与区别?
答:互斥:多个操作不能在同一时间,同一临界区里执行。
同步:并发进程在一些关键点上可能需要互相等待与互通消息
互斥可以说是同步的特殊情况,通过锁和信号灯机制可以实现同步与互斥。
4-18 用于进程控制的原语主要有哪几个?
答:主要有:进程创建,进程撤销,进程阻塞,进程唤醒。
4-19什么是线程,线程与进程有什么区别?
答:线程是进程的进一步划分,线程也称为轻量进程。
第5章
5-5, p进程共享m个同类资源,每一个资源在任一时刻只能供一个进

