首页 > 试题广场 > 桌上有一空盘,允许存放最多两个水果。爸爸可向盘中放苹果或橘子
[问答题]

桌上有一空盘,允许存放最多两个水果。爸爸可向盘中放苹果或橘子,儿子专等吃盘中的橘子,女儿专等吃盘中的苹果。规定当盘子不满时,一次只能放一只水果;当盘子不空时,一次只能取一只水果;父亲放水果时,儿子女儿不能取;儿子女儿去水果时,父亲不能放。

(1) 请分析,本例中临界资源是什么?

(2) 下面是用P、V操作实现的爸爸、儿子、女儿三个进程的同步,请完成程序中空行部分。

Semaphore mutex=____;//定义互斥信号量

int empty=_____,apple=______,orange=________;//定义同步信号量Father://父亲进程

While(1) {

________;

________;

Put an apple or orange;

If (fruit ==apple)

________:

Else

________;

}

Daughter://女儿进程

While(1){

_________;

_________;

Fetch an apple;

_________;

_________;

}

Son://儿子进程

While(1){

_________;

_________;

Fetch an orange;

_________;

_________;

}


(1) 临界资源是盘子

(2)

Semaphore mutex=1;//定义互斥信号量

int empty=2,apple=0,orange=0;//定义同步信号量

Father://父亲进程

While(1)

{

P(empty);

P(mutex);

Put an apple or orange;

if(fruit==apple)

V(apple);

else

V(orange);

}

Daughter://女儿进程

While(1)

{

P(apple);

P(mutex);

Fetch an apple;

V(mutex);

V(empty);

}

Son://儿子进程

While(1)

{

P(orange);

P(mutex);

Fetch an orange;

V(mutex);

V(empty);

}

发表于 2016-11-23 23:38:48 回复(0)