Multithreading 线程和进程

Multithreading 线程和进程,multithreading,process,operating-system,Multithreading,Process,Operating System,我试图修改我的操作系统概念,但我有一些困惑。我知道进程是一个有自己地址空间的线程 1) 死锁是否仅由线程或进程引起?(线程共享进程的堆栈,不同的进程有不同的堆栈) 2) 单个进程会导致死锁吗?还是需要多个进程才能发生死锁 我不确定这是否是问这个问题的正确地点。如果没有,请让我知道,我将删除该问题 线程和进程都可能陷入死锁,这取决于它们试图锁定的内容。如果要锁定的资源是在进程内共享的资源(例如,关键部分),线程可能会陷入死锁。另一方面,如果它是一个全局共享的资源(例如,名为mutex),进程可能会

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

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

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


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

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

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

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

回答:
对于1)
线程在进程内导致死锁,进程在父进程内导致死锁(在大多数情况下是操作系统)
对于2)

是的,单个进程可能导致死锁。

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

回答:
对于1)
线程在进程内导致死锁,进程在父进程内导致死锁(在大多数情况下是操作系统)
对于2)

是的,单个进程可能导致死锁。

这不太正确。线程共享包含进程的地址空间,但每个线程都有自己的私有堆栈。你能举一个线程导致死锁的例子吗?无法在网上找到或想到它。:)这是不完全正确的。线程共享包含进程的地址空间,但每个线程都有自己的私有堆栈。你能举一个线程导致死锁的例子吗?无法在网上找到或想到它。:)IMO进程不是一个有自己地址空间的线程,它类似于执行环境,它包含资源(数据、地址空间)和执行活动(线程)。IMO进程不是一个有自己地址空间的线程,它类似于执行环境,它包含资源(数据、地址空间)和执行活动(线程)