某车站售票厅,任何时刻最多可容纳20名购票者进入,当售票厅中少于20名购票者时,则厅外的购票者可立即进入,否则需在外面等待。若把一个购票者看做一个进程,请回答下列问题:
(1)用P、V操作管理这些并发进程时,应怎样定义信号量,写出信号量的初值以及信号量各种取值的含义。
(2)根据所定义的信号量,利用P、V操作写出能正确并发执行的进程。
(3)若欲购票者最多为n个人,写出信号量可能的变化范围(最大值和最小值)。
参考答案:(1)定义一信号量S,初始值为20。
S>0,S的值表示可继续进入售票厅的人数;
S=0,表示售票厅中已有20名顾客(购票者);
S<0,|S|的值为等待进入售票厅的人数。
(2) COBEGIN
Pi(i=1,2,….)
{
P(S);
进入售票厅:
购票:
退出:
V(S);
}
COEND
(3)S的最大值为20;
S的最小值为20-N。
解析: 本题目考查进程的同步问题。