Linux 中进程和线程为何是同一个东西?

ron*_*y_t 5 linux multithreading operating-system process

我读过,Linux 中的进程和线程是同一件事,例如在这个问题中它说:

Linux 上的线程和进程完全没有区别。

但我不明白进程和线程怎么可能意味着同一件事。我的意思是线程是由 CPU 执行的,而进程只是线程的“外壳”,它允许线程拥有共享内存。下图显示了进程及其线程之间的关系:

在此输入图像描述

显然进程和线程并不意味着同一件事!

PSk*_*cik 7

Linux 过去并没有对 (POSIX) 线程提供特殊支持,它只是将它们视为与其他“进程”共享其地址空间以及一些其他资源(文件描述符、信号操作等)的进程。

这种实现虽然很优雅,但使 POSIX 线程所需的某些事情变得困难,因此 Linux 最终获得了对线程的特殊支持,而您的前提现在不再成立。

尽管如此,进程和线程仍然表示为内核中的任务(但现在内核也支持将这些任务分组为线程组以及用于处理这些任务的 API(( tgkill,,, ...))tkillexit_group

您可以通过谷歌搜索 LinuxThreads 和 NPTL 线程来了解有关该主题的更多信息。