第4章2
1某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20购票者时,则厅外的购票者可立即进入,否则需在外面等待。若把一个购票者看作一个进程,请回答下列问题:
(1)用P、V操作管理这些并发进程时,应定义一个( )类型的信号量S,该信号量的初值为( )。
(2)请说明信号量表示不同含义时的取值范围:
当( )时,S的值表示可继续进入售票厅的人数;
当( )时,表示售票厅中已有20名顾客;
当( )时,|S|的值为等待进入售票厅中的人数。
(3)根据所定义的信号量S,把应执行的P、V操作填入下述程序中,以保证进程能够正确地并发执行。
cobegin
Process Pi (i=1,2,…..)
{
( );
进入售票厅;
购票;
( );
退出;
}
coend
(4)若欲购票者最多为n个人,则信号量可能的变化范围是:S的最大值为( ),S的最小值为( )。
第一空: 互斥
第二空: 20
第三空: S>0
第四空: S=0
第五空: S<0
第六空: P(S)
第七空: V(S)
第八空: 20
第九空: 20-n
2进程间存在着2种相互制约的关系:直接制约关系(即同步问题)和间接制约关系(即互斥问题)。
同步问题是存在逻辑关系的进程之间相互等待所产生的制约关系;
互斥问题是相互无逻辑关系的进程间竞争使用临界资源所发生的制约关系。
请说明下列活动分别属于哪种制约关系。
(1)若干同学去图书馆借书属于(互斥)制约;
(2)两队举行篮球比赛属于(互斥)制约;
(3)流水线生产的各道工序属于(同步)制约;
(4)商品生产和社会消费属于(同步)制约。
3桌上有一只空盘,只允许存放一个水果。爸爸可向盘中放苹果,也可向盘中放桔子。儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘中空时一次只能放一只水果供吃者取用,请用P、V原语实现爸爸、儿子、女儿三个并发进程的同步。请根据所定义的信号量,把应执行的P、V操作填入下述程序中,以保证进程能够正确地并发执行。semaphore empty=1;(表示盘空)
semaphore apple=0;(表示盘中无苹果)
int orange=0;(表示盘中无桔子)
main( )
{
Cobegin
father();
son();
daughter();
Coend
}
father()
{
while(1)
{
( );
将水果放入盘中;
if (放入的是桔子) then ( ) else ( );
}
}
son( )
{
while(1)
{
( );
从盘中取出桔子;
( );
吃桔子;
}
}
daughter( )
{
while(1)
{
( );
从盘中取出苹果;
( );
吃苹果;
}
}
第一空: P(empty)
第二空: V(orange)
第三空: V(apple)
第四空: P(orange)
第五空: V(empty)
第六空: P(apple)
第七空: V(empty)