首页 > 试题广场 >

有些孩子想要画画,其中有的孩子手上握了一支笔,有的孩子手上拿

[问答题]

有些孩子想要画画,其中有的孩子手上握了一支笔,有的孩子手上拿着一张纸,他们必须同时拿到纸和笔之后才可以开始画画。张老师负责源源不断地提供纸或笔,每次只提供一件并将它放在桌上,如果他放的是笔,则缺笔的孩子可以拿走笔并开始画画;如果他放的是纸,则缺纸的孩子可以拿走纸开始画画。假设桌子上同时存放的纸和笔的数量不受限制。

1 )请问这个问题中有哪些进程?

2 )请用信号量来解决上述进程的同步问题

1 )每个孩子是一个进程,张老师也是一个进程。

2 )本题中需要设置两个信号量 paper pencil ,它们的初值均赋值为 0

张老师对应的算法可描述为:

Teacher(){

while(1){

取一件物品放桌上;

if ( 放的是笔 ) signal(pencil);

else signal(paper);

}

}

已经拥有笔的孩子可共享同一个程序段,其对应的算法可描述为:

Child1(){

wait(paper);

从桌上拿起纸;

开始画画;

}

已经拥有纸的孩子可共享另一个程序段,其对应的算法可描述为:

Child2(){

wait(pencil);

从桌上拿起笔;

开始画画;

}

发表于 2017-05-16 20:41:39 回复(0)