Linux进程“调度”

Der*_*unk 4 linux kernel

我已经多次看到它写了 Linux 调度程序调度进程。我正在教授一门关于多线程编程的课程,并且想把我的术语说清楚。我想说一件事(写在下面),希望有人能帮我清除最严重的错误:

这不是调度程序调度的进程,而是与该进程 关联的线程。该过程只是一堆内存映射段,因此是静态的。我们pthread_create()甚至可以清楚地看到这一点 clone()(大多数情况下,但不完全相同),其中一个进程有多个线程,并且是那些被调度的线程(否则你只会调度进程线程(PID=TID 一个) , 而不是其他任何。我认为这种歧义是由于所有进程都至少有一个执行线程这一事实。

这是正确的(虽然简化)图片吗?

Mat*_*Mat 6

尝试这样的事情:


所有进程都只从一个线程开始,并且可以创建更多线程,pthread_create例如使用。(以这种方式创建的进程的所有线程共享相同的地址空间。)内核的调度程序在这些线程上工作,无论它们是进程的“主”/初始线程还是附加线程 - 它们与调度程序的本质上没有区别观点看法。

Linux 最初根本没有线程,只有进程。因此,出于历史原因,调度“CPU 工作”的操作系统部分通常称为进程调度程序。(这不是特定于 Linux 的,对于大多数(所有?)Unix 类型系统来说都是一样的。线程调度程序根本不是常用的词汇。)


那时我什至不会提及clone(更不用说vfork),除非您已经解释了整个命名空间业务。