0

我正在尝试修改我的操作系统概念,但我有些困惑。我知道一个进程是一个拥有自己地址空间的线程。

1)死锁是否仅由线程或进程引起?(线程共享进程的堆栈,不同的进程有不同的堆栈)。

2)单个进程会导致死锁吗?还是发生死锁需要多个进程?

我不确定这是否是问这个问题的正确地方。如果没有,请告诉我,我将删除该问题。

4

2 回答 2

2

线程和进程都可能陷入死锁,具体取决于它们试图锁定的内容。如果他们想要锁定的资源是进程内共享的资源(例如临界区),线程可能会陷入死锁。另一方面,如果它是全局共享的资源(例如,名为互斥体),进程可能会陷入死锁。对于 2),必须涉及多个进程,因为多个进程必须尝试锁定(全局)共享资源才能发生死锁。

于 2012-10-03T05:53:09.457 回答
2

答案在于您的问题本身。每个进程都有一个堆栈,该进程创建的所有线程共享堆栈。每当同一进程的两个线程请求其他线程具有锁定的资源(数据,通信,...)并依次等待其他资源的释放时,就会发生死锁。

答案:
对于1)
线程导致进程内死锁,进程导致父进程内死锁(在大多数情况下操作系统)
对于2)
是的,单个进程可能导致死锁。

于 2012-10-03T05:54:54.707 回答