先附上 test-and-set 用来改善 bounded-waiting 的 code
https://imgur.com/a/H4YkMyf
而这是恐龙书上面写的某段话
https://imgur.com/a/pFIuods
上面那里我用蓝笔画起来的那段话我一直不能理解
为什么只有一个 waiting[i] 的值能被设成 false?
不是很多 process 的 waiting[i] 都可以是 false 吗?
如果多个Process Waiting[i]为False,则唯一性就没了这种情况会让互斥不成立那些被设定成False的,通通可以进入Critical Section设定False的唯一办法就是抢到Lock
作者:
skyHuan (Huan)
2018-12-13 03:02:00借版问一下test and set到底是不是特权指令XD 洪逸好像说不是但网络查到的资料几乎都说是
笔记好像没提到是不是,刚查到106中央有讨论说是特权
作者:
DLHZ ( )
2018-12-13 09:42:00我认为必须是
修正一下b1讲的可以多个waiting[i]为false只是只能同时有一个waiting[i]被刚做完critical session的process 设为false
照这Code的设计,不可能有多个False出现才对到底要怎样的执行情形才会出现多个False的状况?是前面几个Process执行完后没从Waiting Queue退出来?
我是想说假如已经有一些process执行完CS之后出来了然后他们已经进入Remainder section 但是他们各自的的waiting值自从进入CS之前被设成false之后就没有被更动过了 所以这些在RS的process他们的waiting值应该都会是false才对