Linux 不区分进程和线程吗?

Tim*_*Tim 5 linux process lightweight thread linux-kernel

据我所知,在 Linux 内核中,

  • 该结构task_struct代表线程,即轻量级进程,但不是进程。

  • 进程不由任何结构表示,而是由共享相同线程组 ID 的线程组表示。

那么操作系统概念中的以下内容是否正确?

Linux 还提供了使用clone()系统调用创建线程的能力。但是,Linux 不区分进程和线程。事实上,Linux 使用术语任务——而不是进程或线程——来指代程序中的控制流。

这是什么意思?

谢谢。

相关Linux 如何区分线程和子进程?

pet*_*rph 4

\n

Linux 还提供了使用clone() 系统调用创建线程的能力。然而,Linux 并不区分进程和线程。事实上,当引用程序中的控制权时,Linux 使用术语任务\xe2\x80\x94,而不是进程或线程\xe2\x80\x94。

\n
\n\n

我们需要区分实际的实现和你看到的表面。

\n\n

从用户(系统软件开发人员)的角度来看,有一个很大的区别:线程共享许多公共资源(例如内存映射 - 当然除了堆栈 - 文件描述符)。

\n\n

在内部(警告:不精确的挥手参数)Linux内核1)正在使用它手头的东西,即进程和线程的相同结构,其中对于单个进程的线程,它不会重复某些东西,而是引用一个其单个实例(内存映射描述)。

\n\n

因此,在直接表示线程或进程的层面上,基本结构没有太大区别,问题在于如何处理信息。

\n\n

您可能也有兴趣阅读线程在 Linux 上实现为进程吗?

\n\n
\n\n

1)请记住,现在的“Linux”主要代表整个操作系统,而实际上它只是内核本身。

\n