(一) 图书馆有 100 个座位,每位进入图书馆的读者要在登记表上登记,退出时要在登
记表上注销。要几个程序?有多少个进程?(答:一个程序;为每个读者设一个进程)
(1) 当图书馆中没有座位时,后到的读者在图书馆为等待(阻塞)
(2) 当图书馆中没有座位时,后到的读者不等待,立即回家。
解(1 )
设信号量:S=100; MUTEX=1
P(S)
P(MUTEX)
登记
V(MUTEX)
阅读
P(MUTEX)
注销
V(MUTEX)
V(S)
解(2)
设整型变量 COUNT=100;
信号量:MUTEX=1;
P(MUTEX);
IF (COUNT==0)
{ V(MUTEX);
RETURN;
}
COUNT=COUNT-1;
登记
V(MUTEX);
阅读
P(MUTEX);
COUNT=COUNT+1;
V(MUTEX);
RETURN;
(二) 有一座东西方向的独木桥;用 P,V 操作实现:
(1) 每次只允许一个人过桥;
(2) 当独木桥上有行人时,同方向的行人可以同时过桥,相反方向的人必须等待。
(3) 当独木桥上有自东向西的行人时,同方向的行人可以同时过桥,从西向东的方向,
只允许一个人单独过桥。(此问题和读者与写者问题相同,东向西的为读者,西向东的为写
者)。