1 思维导图
线程是处理机调度的单位,进程资源分配的单位。
内核级线程才是处理机分配的单位。
2 为什么要引入线程
为了方便于理解,我打开了我的任务管理器,可以看出chrome一个进程,下面有很多分支,可以把这些分支当做线程看待,PID即进程和线程都有的标识符。
3 什么是线程
线程是一个基本的CPU执行单元,也是程序执行的最小单位。
引入线程后,进程只作为除CPU之外的系统资源的分配单元。
4 引入线程带来的变化及进程与线程之间的比较
引入线程后:
(1)进程是资源分配的基本单位,线程是调度的基本单位。
(2)各线程之间也能并发,提高并发度。
(3)线程之间的切换系统开销更小。
5 线程的属性
(1)线程是处理机调度的单位;
(2)多CPU计算机中,各个线程可占用不同的CPU;
(3)每个线程都有一个线程ID,线程控制块(TCB);
(4)线程也有就绪、阻塞、运行三种基本状态;
(5)线程几乎不拥有系统资源;
(6)同一进程的不同线程间共享进程资源;
(7)由于共享内存地址空间,同一进程中的线程间的通信甚至不需要系统干预;
(8)同一进程中的线程切换,不会引起进程切换;
(9)不同进程中的线程切换,会引起进程切换;
(10)切换同进程内的线程,系统开销很小;
(11)切换进程,系统开销较大。
6 线程的实现方式
- 前面我们了解了引入线程的好处和引入线程的变化,以及线程的属性,那么线程如何实现呢?
- 线程的实现分为两类:
用户级线程
(User-Level Thread,UTL)和内核级线程
(Kernel-Level Thread, KTL)l。内核级线程又称内核支持的线程
。
(1)用户级线程
用户级线程中,线程切换可以在用户态下即可完成,无需操作系统干预。
(2)内核级线程
内核级线程的管理工作有操作系统内核完成。
(3)特殊的组合方式及重点注意
7 多线程模型
- 前面我们提到了线程的实现方式,有用户级和内核级。那么这两种模式的交叉组合就会产生几种不一样的组织结构,即不一样的模型。
(1)多对一模型
(2)一对一模型
(3)多对多模型