[理工] OS semaphore

看板Grad-ProbAsk作者 (oldguy)時間7年前 (2018/09/13 15:05), 編輯推噓2(209)
留言11則, 3人參與, 7年前最新討論串1/1
https://i.imgur.com/r8Xppxm.jpg
https://i.imgur.com/PRkEZJ6.jpg
假設c<0 這樣程式不是就會卡在wait (s2) 無法執行其他程式 這樣要怎麼 如何用signal (s2)解開? 謝謝各位 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.169.88 ※ 文章網址: https://www.ptt.cc/bbs/Grad-ProbAsk/M.1536822324.A.075.html

09/13 15:13, 7年前 , 1F
為什麼會造
09/13 15:13, 1F

09/13 15:13, 7年前 , 2F
成deadlock 呢
09/13 15:13, 2F

09/13 16:08, 7年前 , 3F
wait(mutex)
09/13 16:08, 3F

09/13 16:08, 7年前 , 4F
c.s
09/13 16:08, 4F

09/13 16:08, 7年前 , 5F
wait(mutex)
09/13 16:08, 5F

09/13 16:08, 7年前 , 6F
這樣一來沒有signal救人把mutex+1
09/13 16:08, 6F

09/13 16:08, 7年前 , 7F
後面想進來c.s的process全部都會卡住形成deadlock
09/13 16:08, 7F

09/13 16:08, 7年前 , 8F
code寫兩遍 pi pj來trace比較好懂
09/13 16:08, 8F

09/14 00:02, 7年前 , 9F
謝謝wilson大 下面的懂了
09/14 00:02, 9F

09/14 18:44, 7年前 , 10F
被卡在wait(s2)前會先執行signal(s1)
09/14 18:44, 10F

09/14 18:47, 7年前 , 11F
所以signal不會卡在wait(s1) 能通過條件式執行signal(s2
09/14 18:47, 11F
文章代碼(AID): #1RcWmq1r (Grad-ProbAsk)