Contents

Linux process vs thread and timeslice

Contents

理清:进程 线程 时间片 基本概念


进程是操作系统分配资源的最小单位。

进程调度:协调进程对CPU的竞争。

进程切换成本高,操作系统才设计出了线程, 称作轻量级进程。注意:

在Linux中,线程是由进程来实现,线程就是轻量级进程。因此在Linux中,线程的调度是按照进程的调度方式来进行调度的,也就是说线程是调度单元。Linux这样实现的线程的好处的之一是:线程调度直接使用进程调度就可以了,没必要再搞一个进程内的线程调度器。

而多个线程 共享同一个进程的资源,因此,说进程是个容器,管理线程。所以 CPU调度的最小单元是线程。注意:线程是轻量级进程,对CPU调度来说,进程和线程 都是一样的。

时间片:分时操作系统分配给每个正在运行的进程微观上的一段CPU时间。

所以,回归问题。Linux下 CPU分配的时间片单位 是线程还是进程。

答案:线程是轻量级进程,可以理解成 共享同一个资源的 进程。所以,这里说线程和进程都是可以的。但是有一点是统一的,不论线程还是进程,它们用的同一个调度器,所以执行一次 用的都是一个时间片。


Linux从内核来讲,并没有线程的概念,linux把线程当做进程来实现。内核并没有特殊的调度算法或者定义特别的数据结构来表征线程。线程仅被看做一个与其它进程共享某些资源的进程。每个线程都拥有唯一属于自己的task_struct,所以在内核中,它看起来像是一个普通的进程(只是它和其他一些进程共享某些资源),只是它没有自己独立的内存地址空间。


reference