【问题标题】:Does a semaphore always prevent deadlocks?信号量是否总能防止死锁?
【发布时间】:2015-09-22 09:16:27
【问题描述】:

我对该主题的研究表明,信号量不允许某个进程进入另一个进程的临界区。不过,在某些情况下,这应该是可能的,IMO。

假设有两个进程,P1 和 P2。有两个资源,R1 和 R2。 P1 获得了 R1,P2 获得了 R2。但是 P1 需要 R2 从其临界区中出来,而 P2 也需要 R1 做同样的事情。

这种情况可能会发生死锁吗?

【问题讨论】:

  • 资源不能“从[他们的]关键部分[s]中出来”。您的意思是它们受信号量保护,并且 P1 和 P2 分别等待它们增加(或释放)吗?
  • 您的描述与您的标题不同;您的描述询问信号量是否总是防止死锁,您的描述要求确认在特定情况下是否可能发生死锁。

标签: operating-system deadlock semaphore


【解决方案1】:

没有信号量并不总能防止死锁。详情查看链接

https://courses.engr.illinois.edu/ece390/books/artofasm/CH19/CH19-15.html

是的,两个进程相互等待释放资源或已经获取/获取的信号量是死锁的典型示例。上面链接中的更多详细信息与您的困惑非常相关

【讨论】:

  • 非常感谢...我理解正确。
  • @slayer:在这样的情况下,您通过投票和/或接受答案来感谢某人。 :)
猜你喜欢
  • 2023-03-09
  • 1970-01-01
  • 2021-03-20
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
  • 2019-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多