在信号量机制中,若P(S)操作是可中断的,则会有什么问题?
答:
P(S)的操作如下:
用户登录可进行刷题及查看答案
Begin
S.Value:= S.Value-1; ①
If S.Value<0 Then ②
Insert(*,S.L);
Block(*) ③
End
End.
若P(S)可中断的,例如进程A在执行了语句①之后从CPU上退下了,假定此时S.Value=0;这时换另一进程B,B又将S.Value的值减1使之为-1,在执行语句③时,B被阻塞;然后又换回A执行,由于A的"断点"是语句①之后,当它执行语句②时,由于这时S.Value已经是-1,故进程A无法继续执行而被阻塞。这就出现了错误:本来A操作P(S)操作后,S.Value=0,是不应该被阻塞的,现在却被阻塞了。
登录后提交答案
暂无评论,来抢沙发