- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
wait-die 和 wound-wait 算法有什么区别?
这两种死锁预防技术似乎都在做同样的事情:回滚旧进程。
两者有什么区别?
请提供一个合适的例子来对比这两种算法。
câu trả lời hay nhất
这是一种防止死锁的非抢占式技术。当事务 TN 请求当前由 Ttôi 持有的数据项时,只有当 TN 的时间戳小于 Ttôi 时才允许等待(即 TN 比 Ttôi 旧),否则 TN 被杀死(“死亡”) .
在这个方案中,如果一个事务请求锁定一个资源(数据项),它已经被另一个事务持有冲突锁,那么可能会发生以下两种可能性之一:
时间戳(TN) < 时间戳(Ttôi) -即请求冲突锁的 TN 比 Ttôi 旧 -然后 TN 被允许“等待”直到数据项可用。
时间戳(TN) > 时间戳(Ttôi) -也就是说 TN 比 Ttôi 年轻 -然后 TN 被杀死(“死亡”)。TN 稍后以随机延迟重新启动,但具有相同的时间戳 (n)。
此方案允许较旧的事务“等待”但杀死较新的事务(“死亡”)。
假设交易T5、T10、T15的时间戳分别为5、10和15。
如果 T5 请求 T10 持有的数据项,则 T5 将“等待”。
如果 T15 请求 T10 持有的数据项,则 T15 将被杀死(“死亡”)。
这是一种防止死锁的先发制人技术。它与等待死亡方案相对应。当Transaction TN请求Ttôi当前持有的数据项时,只有当 TN 的时间戳大于 Ttôi 的时间戳时才允许等待,否则 Ttôi 被杀死(即 Ttôi 被 TN 伤害)。
在这个方案中,如果一个事务请求锁定一个资源(数据项),它已经被另一个事务持有冲突锁,可能会发生以下两种可能性之一:
时间戳(TN) < 时间戳(Ttôi),然后 TN 迫使 Ttôi 被杀死——也就是说 TN “伤害” Ttôi。Ttôi 稍后以随机延迟重新启动,但具有相同的时间戳 (k)。
时间戳(TN) > 时间戳(Ttôi),然后 TN 被迫“等待”直到资源可用。
如果旧事务已经持有锁,该方案允许请求锁的年轻事务“等待”,但如果旧事务请求锁定已持有的项目,则强制暂停(“wound”)年轻事务由年轻的。
同样,假设事务 T5、T10、T15 的时间戳分别为 5、10 和 15。
如果 T5 请求 T10 持有的数据项,然后数据项将从 T10 被抢占,T10 将被暂停。 (“受伤”)
如果 T15 请求 T10 持有的数据项,则 T15 将“等待”。
在这两种情况下,只有在sau đó时间戳进入系统的事务(即较年轻的事务)可能会被终止并重新启动。
关于database - "wait-die"和 "wound-wait"死锁预防算法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32794142/
Sự khác biệt giữa các thuật toán chờ chết và chờ đợi vết thương là gì? Cả hai kỹ thuật ngăn chặn bế tắc dường như đều làm được điều tương tự: khôi phục quy trình cũ. Sự khác biệt giữa hai là gì? Vui lòng cung cấp một ví dụ phù hợp để so sánh hai thuật toán này. Câu trả lời hay nhấtChờ chết
我像这样在 Jenkins 管道中创建了一个类。 class Device { def ip = null def context def getIP(devName)
如果您查看 jupyter 笔记本(在本例中为 python)的原始 JSON,每个单元格都有一个标记为“id”的字段,它们似乎由带连字符的随机单词对组成,并且通常很有趣。几个随机示例: "id":
Tôi là một lập trình viên xuất sắc, rất giỏi!