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

Operating Systems: deadlock possible if a process can only lock one mutex at a time?

在不允许嵌套锁定的操作系统中是否可能出现死锁,因此一个进程一次只能锁定一个互斥体?

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

谢谢。

这取决于你如何定义锁,如果你的意思是任何 activity 有可能阻塞,那么是的,如果一次只能获取一个锁就不可能发生死锁,这将是正确的.如果您只是指显式创建的互斥体和信号量,死锁仍然可能发生,因为除了获取锁之外还有其他事情会导致阻塞。

然而,我所知道的唯一执行此类操作的实现是旧操作系统,它们对所有共享资源只有一个锁,并且实际上只允许一个线程同时进入内核 space。这会导致多核系统的性能极差,最好在现代多核或多 cpu 系统中使用其他技术,例如有序锁获取和超时,而不是恢复使用此技术。