某博物馆最多可容纳500人同时参观,有一个出入口,该出入口一次仅允许一个人通过。参观者的活动描述如下:
cobegin
参观者进程i:
{
…
进门;
参观;
出门;
}
coend
请添加必要的信号量和P、V(或wait()、signal())操作,以实现上述过程中的互斥与同步。要求写出完整的过程,说明信号量的含义并赋初值。
解答:
出入口一次仅允许一个人通过,设置互斥信号量mutex,初值为1。博物馆最多可同时容纳500个人,故设置信号量empty,初值为500。
Semaphore empty=500; //博物馆可以容纳的最多人数
Semaphore mutex =1; //用于出入口资源的控制
P(empty);
P(mutex);
进门;
V(mutex);
参观;
出门;
V(empty);
【评分说明】①信号量初值给1分,说明含义给1分,两个信号量的初值和含义共4分。
② 对mutex的P、V操作正确给2分。
③ 对empty的P、V操作正确给1分。
④ 其他答案,参照①~③的标准给分。
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题
解答:
出入口一次仅允许一个人通过,设置互斥信号量mutex,初值为1。博物馆最多可同时容纳500个人,故设置信号量empty,初值为500。
Semaphore empty=500; //博物馆可以容纳的最多人数
Semaphore mutex =1; //用于出入口资源的控制
cobegin
参观者进程i:
{
…
P(empty);
P(mutex);
进门;
V(mutex);
参观;
P(mutex);
出门;
V(mutex);
V(empty);
…
}
coend
【评分说明】①信号量初值给1分,说明含义给1分,两个信号量的初值和含义共4分。
② 对mutex的P、V操作正确给2分。
③ 对empty的P、V操作正确给1分。
④ 其他答案,参照①~③的标准给分。