文章目录
- 1 什么是线程
- 1.1 为什么要引入线程:
- 1.2 线程定义
- 1.3 线程与进程的比较
- 1.4 线程的属性
- 1.5 线程实现方式
- 1.5.1 用户级线程(ULT)
- 1.5.2 内核级线程(KLT,又称“内核支持的线程”)
- 1.5.2 用户级线程、内核级线程二者组合
- 1.6 多线程模型
- 1.6.1 多对一模型
- 1.6.2 一对一模型
- 1.6.3 多对多模型
- 1.7 线程小结
1 什么是线程
1.1 为什么要引入线程:
- 引入进程的目的:为了更好的使多道程序并发执行,提高系统资源利用率和系统吞吐量;
- 引入线程的目的:为了减少程序在并发执行时所付出的时空开销,提高OS的并发性能。
1.2 线程定义
线程是“轻量级进程”,是一个基本的CPU执行单元,是程序执行的最小单元。线程是进程中的一个实体,是系统独立调度和分派的基本单位。
1.3 线程与进程的比较
1. 进程是资源分配单位,线程是CPU调度单位
2. 进程拥有一个完整的资源平台,而线程只独享必不可少的资源,如寄存器和栈
3. 线程同样具有就绪、阻塞和执行三种基本状态,同样具有状态之间的转换关系
4. 线程能减少并发执行的时间和空间开销(1)线程创建时间比进程短(2)线程终止时间比进程短(3)同一进程内线程切换时间比进程短(4)由于同一进程的各线程之间共享内存和文件资源,可直接进行不通过内核的通信
一张图说明引入线程,带来的变化:
1.4 线程的属性
1.5 线程实现方式
1.5.1 用户级线程(ULT)
1.5.2 内核级线程(KLT,又称“内核支持的线程”)
1.5.2 用户级线程、内核级线程二者组合
在同时支持用户级线程和内核级线程的系统中,可采用二者组合的方式:将n个用户级线程映射到m 个内核级线程上(n>=m)
- 操作系统只“看得见”内核级线程,因此只有内核级线程才是处理机分配的单位。
- 举个例子:在组合模型中,该进程由两个内核级线程,三个用户级线程,在用户看来,这个进程中 有三个线程。但即使该进程在一 个4核处理机的计算机上运行,也 最多只能被分配到两个核,最多只能有两个用户线程并行执行。