作者leekevinming (chunk)
看板Grad-ProbAsk
標題[理工] OS test-and-set問題
時間Wed Dec 12 21:50:08 2018
先附上 test-and-set 用來改善 bounded-waiting 的 code
https://imgur.com/a/H4YkMyf 而這是恐龍書上面寫的某段話
https://imgur.com/a/pFIuods 上面那裡我用藍筆畫起來的那段話我一直不能理解
為什麼只有一個 waiting[i] 的值能被設成 false?
不是很多 process 的 waiting[i] 都可以是 false 嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.136.218
※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1544622610.A.E68.html
→ springleaf1: 如果多個Process Waiting[i]為False,則唯一性就沒了 12/12 22:13
→ springleaf1: 這種情況會讓互斥不成立 12/12 22:14
→ springleaf1: 那些被設定成False的,通通可以進入Critical Section 12/12 22:38
→ springleaf1: 設定False的唯一辦法就是搶到Lock 12/12 22:47
推 skyHuan: 借版問一下test and set到底是不是特權指令XD 洪逸好像 12/13 03:02
→ skyHuan: 說不是但網路查到的資料幾乎都說是 12/13 03:02
推 Dora5566: 筆記好像沒提到是不是,剛查到106中央有討論說是特權 12/13 07:14
→ DLHZ: 我認為必須是 12/13 09:42
推 kobebset105: 修正一下b1講的 12/14 09:43
→ kobebset105: 可以多個waiting[i]為false 12/14 09:44
→ kobebset105: 只是只能同時有一個waiting[i]被剛做完critical sess 12/14 09:45
→ kobebset105: ion的process 設為false 12/14 09:45
→ springleaf1: 照這Code的設計,不可能有多個False出現才對 12/14 10:54
→ springleaf1: 到底要怎樣的執行情形才會出現多個False的狀況? 12/14 10:55
→ springleaf1: 是前面幾個Process執行完後沒從Waiting Queue退出來? 12/14 11:00
→ leekevinming: 我是想說假如已經有一些process執行完CS之後出來了 12/15 23:32
→ leekevinming: 然後他們已經進入Remainder section 但是他們各自的 12/15 23:33
→ leekevinming: 的waiting值自從進入CS之前被設成false之後就沒有被 12/15 23:34
→ leekevinming: 更動過了 所以這些在RS的process他們的waiting值應 12/15 23:36
→ leekevinming: 該都會是false才對 12/15 23:36