[理工] OS deadlock

作者: yoz4ni (yoooooz)   2020-06-26 20:56:14
請問一下
1. Mutual exclusion 是一次只能有一個人使用資源,所以是包含 share data 跟 non
share data 嗎?
2. 我記得是有 share data 才會產生 deadlock,因為共享 所以別人用你就不能用? 我
看課本 deadlock prevention 裡要不成立 mutual exclusion 是寫這樣(At least one
resource must be non-sharable)、(Sharable resources do not require mutually
exclusive access and thus cannot be involved in a deadlock),如果沒有 share
data 不會有 deadlock,可是為什麼有 non share data 就可以,其他有 share data 的就不會發生嗎?
還在學習,不太清楚,問題很奇怪的話請見諒
作者: Martie (馬提)   2020-06-26 23:47:00
mutual exclusion裡面指的nonshareable resource是像printer, cpu, memory之類的資源 而不是code裡面的global/localvariable 我猜你是誤解成這個了像是如果一台印表機可以同時印不同文件的話就不會存在mutual exclusion的問題然後你所謂的shareable data如果是read-only的話也不會有互斥存取的問題 另外processes間對共享變數讀寫的部分就要參考synchronization的章節
作者: DLHZ ( )   2020-06-27 12:30:00
怎麼會沒有variable? mutual exclusion指的就是避免大家能用的東西同時被修改啊這東西縮寫就叫mutex
作者: Martie (馬提)   2020-06-27 14:44:00
感謝樓上指正 mutual exclusion確實有包含global variable但我的理解是這裡的互斥是另外加上去的mechanism 並非變數本身就有的性質 例如read-only就沒有 不知這樣是否有錯
作者: DLHZ ( )   2020-06-27 18:46:00
的確是另外加上去 但要說變數不會具有mutual exclusion的性質我認為就有問題了counter, flag 等一些東西都需要criticalsection的設計 如果是其他無關緊要的東西自然不需要 如你說的read-only
作者: yoz4ni (yoooooz)   2020-06-29 23:53:00
好的 感謝回答 我在思考思考~

Links booklink

Contact Us: admin [ a t ] ucptt.com