操作系统:如果进程一次只能锁定一个互斥锁,则可能出现死锁?

时间:2015-03-14 03:08:33

标签: system mutex deadlock

在不允许嵌套锁定的操作系统中是否存在死锁,以便进程一次只能锁定一个互斥锁?

我认为这是不可能的,因为对于获取另一个锁的进程,它需要释放它所持有的任何锁。但我对死锁情况并不熟悉。我的逻辑是否正确?

感谢。

1 个答案:

答案 0 :(得分:0)

这取决于你如何定义锁,如果你的意思是任何有可能被阻止的活动那么是,如果一次只能获得一个锁,那么死锁是不可能的。如果你只是意味着明确创建的互斥锁和信号量死锁仍然是可能的,因为除了可能导致阻塞的锁之外还有其他东西。

然而,我所知道的唯一一个类似这样的实现是旧的操作系统,它只对所有共享资源有一个锁,并且实际上只允许一个线程同时在内核空间中。这会导致多核系统性能极差,最好在现代多核或多CPU系统中使用其他技术,如有序锁定采集和超时,而不是采用这种技术。