【发布时间】:2010-12-20 16:16:33
【问题描述】:
我们在操作系统课程中学习了很多关于死锁的知识。它们真正发生的频率是多少? 或者更确切地说,死锁的几率是多少(操作系统实际上不会让死锁发生)?
【问题讨论】:
我们在操作系统课程中学习了很多关于死锁的知识。它们真正发生的频率是多少? 或者更确切地说,死锁的几率是多少(操作系统实际上不会让死锁发生)?
【问题讨论】:
我也在问同样的问题。我在教科书中遇到过这个:
费用是一个重要的考虑因素。忽略死锁的可能性是 比其他方法便宜。由于在许多系统中,都会发生死锁 很少(例如,每年一次),其他方法的额外费用可能不会 看起来很值得。
它还提到,如果发生这种情况,系统可能会稍微变慢,最终需要重新启动。我们都熟悉的东西。 教科书引述来自 Brian, W. 的操作系统基础知识的第 323 页。
但正如 Joao 所提到的,开发人员需要生成高质量的代码。所以我猜理论上,如果你运行很多垃圾程序,你可能会经常遇到死锁。
【讨论】:
当您使用同步器编写多线程程序并且您不知道自己在做什么时,就会经常发生死锁。
例如,只要您需要相同的互斥锁来唤醒该线程,您总是必须释放互斥锁,然后再将线程置于等待状态,这只是一个小例子。
【讨论】:
用户程序的多线程进程中的死锁会使用户应用程序无法运行,这与操作系统中的死锁无关。如果内核以不正确的方式分配资源,操作系统中就会发生死锁,这种情况很少发生。频率是几年一次,因此 Windows 和 Unix 等流行的操作系统采取了忽略死锁的鸵鸟方法。
【讨论】: