2012-10-03 73 views
0

我想修改我的操作系统概念,但我有一些混淆。我知道一个进程是一个拥有自己地址空间的线程。线程和进程

1)死锁只能通过线程或进程引起的? (线程共享进程的堆栈,因为不同的进程有不同的堆栈)。

2)单一进程可能会导致死锁?还是需要多个进程来发生死锁?

我不知道这是否是问这个正确的地方。如果没有,请让我知道,我会删除这个问题。

+0

IMO过程是不是它自己的地址空间中的线程,它像执行环境,这contans资源(数据,地址空间)和执行活动(线程) – Apokal

回答

2

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

2

答案就在你的问题本身。每个进程都有一个堆栈,并且该进程创建的所有线程共享堆栈。每当同一个进程的两个线程请求一个资源(data,comm,...)时,其他线程就会锁定并等待其他资源的释放,然后发生死锁。

答案:
1)
线程引起父进程内)工艺和工艺导致死锁内死锁(在大多数情况下OS
2)
是一个单一的过程会造成死锁。

+0

这是不太正确的。线程共享包含进程的地址空间,但每个线程都有自己的私有堆栈。 – Tudor

+0

你能举一个导致死锁的线程的例子吗?无法在网上找到它或想到它。 :) – rgamber