作者yoz4ni (yoooooz)
看板Grad-ProbAsk
标题[理工] OS deadlock
时间Fri Jun 26 20:56:14 2020
请问一下
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 的就不会发生吗?
还在学习,不太清楚,问题很奇怪的话请见谅
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 218.173.113.113 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Grad-ProbAsk/M.1593176176.A.1B6.html
1F:推 Martie: mutual exclusion里面指的nonshareable resource是像print 06/26 23:47
2F:→ Martie: er, cpu, memory之类的资源 而不是code里面的global/local 06/26 23:47
3F:→ Martie: variable 我猜你是误解成这个了 06/26 23:47
4F:→ Martie: 像是如果一台印表机可以同时印不同文件的话就不会存在mutu 06/26 23:50
5F:→ Martie: al exclusion的问题 06/26 23:50
6F:→ Martie: 然後你所谓的shareable data如果是read-only的话也不会有 06/26 23:59
7F:→ Martie: 互斥存取的问题 另外processes间对共享变数读写的部分就要 06/26 23:59
8F:→ Martie: 参考synchronization的章节 06/26 23:59
9F:→ DLHZ: 怎麽会没有variable? mutual exclusion指的就是避免大家能用 06/27 12:30
10F:→ DLHZ: 的东西同时被修改啊 06/27 12:30
11F:→ DLHZ: 这东西缩写就叫mutex 06/27 12:34
12F:→ Martie: 感谢楼上指正 mutual exclusion确实有包含global variable 06/27 14:44
13F:→ Martie: 但我的理解是这里的互斥是另外加上去的mechanism 并非变 06/27 14:44
14F:→ Martie: 数本身就有的性质 例如read-only就没有 不知这样是否有错 06/27 14:45
15F:→ DLHZ: 的确是另外加上去 但要说变数不会具有mutual exclusion的性 06/27 18:46
16F:→ DLHZ: 质我认为就有问题了counter, flag 等一些东西都需要critical 06/27 18:46
17F:→ DLHZ: section的设计 如果是其他无关紧要的东西自然不需要 如你说 06/27 18:46
18F:→ DLHZ: 的read-only 06/27 18:46
19F:→ yoz4ni: 好的 感谢回答 我在思考思考~ 06/29 23:53