OS-线程

957 阅读1分钟

背景

只有进程时,进程就是执行流的最小单位。

引入线程后,线程成为执行流最小单位。CPU调度的基本单位为线程。

线程的引入,增加了并发度。

引入线程后带来的改变

  • 进程是资源分配,调度的基本单位 >> 进程是资源分配的基本单位。线程是调度的基本单位。
  • 并发性得到提高
  • 进程间并发,调度开销大 >> 线程间并发,调度开销小。

线程的属性

  • 每个线程有线程ID、线程控制块PCB
  • 有就绪、阻塞、运行三种基本状态
  • 同一进程的线程共享地址空间,因此彼此通信可以不通过系统的干预。

线程的实现

从实现层面上来讲,可以分为两种:

用户级线程:

由应用通过线程库实现,线程管理不涉及用户态-核心态转换。

内核级线程:

由操作系统内核负责线程调度。

在操作系统的角度,只“看见”内核级线程。

线程模型

根据 用户线程数 : 内核线程数 可以分为:

多对一:线程切换开销小。一个线程阻塞导致整个进程的其他线程阻塞。

一对一:线程切换开销大。各个线程可以分配到到多核,并发度高。

多对多:结合两者优点。开销没那么大,并发度也还不错。