线程和进程

时间:2012-10-03 05:46:03

标签: multithreading process operating-system

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

1)死锁只是由线程或进程引起的吗? (线程共享进程的堆栈,其中不同的进程具有不同的堆栈)。

2)单个进程是否会导致死锁?或者是否需要多个进程才能发生死锁?

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

答案:
1)
线程导致进程和进程内的死锁导致父进程内的死锁(在大多数情况下OS)
2)
是的,单个进程可能导致死锁。