linux中线程调度和进程调度

假设系统处于运行态的进程有3个:A、B、C,每个进程均有5个线程。

请问,系统是怎么分派调度的?是调度进程还是线程?
如果是调度进程的,那么当进程占有CPU时,进程中的线程又是怎么并发执行的?(就是想知道,各个线程怎么分配进程的时间片的?是不是还有个线程调度程序的???)

作者: shaohui973   发布时间: 2011-02-10

LINUX下面 线程 是 lightweight process就是轻量级的进程。 一句话线程是共享了部分资源(地址空间、文件句柄、信号量等等)的进程。所以线程也按照进程的调度方式来进行调度。

作者: cluter   发布时间: 2011-02-10

回复 cluter


    那比方说,A进程的一个线程由于某种原因,放弃了CPU的使用,调度以下两种情况:
  1. 如果下一个调度的线程是B进程中的一个线程
  2. 如果下一个调度的线程是同一个进程的其他线程

这两种情况下有什么不同?

作者: shaohui973   发布时间: 2011-02-10

这个问题首先要区分你说的线程是内核线程还是用户线程。
对内核线程,linux内核会把它当作进程来看待和调度。
对用户线程,调度的策略则与具体使用的线程库的实现有关系。

作者: guocslock   发布时间: 2011-02-10

linux 通过轻量级进程实现线程,最大的好处:设计简单。 线程调度直接使用进程调度就可以了,没必要再搞一个进程内的线程调度器。 至于代码段,数据段,信号量,这些通过同用一个内存映射就可以了。

作者: tuibo   发布时间: 2011-02-10

在多核条件下,线程创建后是否立即分配到不同的核上去,怎样分配到不同的核上去跑,这个问题值得探究

作者: tuibo   发布时间: 2011-02-10