【答案解析】如果PV操作设计不当,仍会产生死锁。假如用S1和S2分别代表输入机和打印机能否被使用的信号量,由于资源是共享的,所以必须互斥使用,因而它们的初始值都为1。如果用如下方法实现请求使用和归还释放:
process A1
begin
P(S1);
使用输入机;
P(S2);
使用打印机;
V(S2);
V(S1);
end;
process A2
begin
p(S2);
使用打印机;
p(s1);
使用输入机;
V(S2);
V(S1);
end;
那么,就会出现A1得到输而A2得到打印机,双方在不释放已有的资源的情况下又去申请新的资源,就会造成死锁。
可以采用为资源编序号的方法,要求按序申请;如下:
process A1
begin
p(s1);
使用输入机;
p(s2);
使用打印机;
v(s2);
v(s1);
end;
process A2
begin
p(s1);
使用输入机;
p(s2);
使用打印机:
v(s2);
v(s1);
end