题目是:
1.我们为某一临界资源设置一把锁W。当W=1时,表示关锁;当W=0时,表示锁已经打开。试写出开锁和关锁原语并利用他们实现互斥。
2.试利用记录型信号量写出一个不会出现死锁的哲学家进餐问题的算法
题目是:
1.我们为某一临界资源设置一把锁W。当W=1时,表示关锁;当W=0时,表示锁已经打开。试写出开锁和关锁原语并利用他们实现互斥。
2.试利用记录型信号量写出一个不会出现死锁的哲学家进餐问题的算法
答:整型信号量:lock(W): while W=1 do no-op
W:=1;
unlock(W): W:=0;
记录型信号量:lock(W): W:=W+1;
if(W>1) then block(W, L)
unlock(W): W:=W-1;
if(W>0) then wakeup(W, L)
例子:
Var W:semaphore:=0;
begin
14
repeat
lock(W);
critical section
unlock(W);
remainder section
until false;
end