回顾一下操作系统,本章讲解线程概念、多线程模型的知识点😁
1.引入线程
进程也需要“同时”做很多事,所以引入线程用于增加并发度(程序执行流的最小单位,最基本cpu执行单位)
2.线程机制 vs 进程机制 (引入线程后的对比)
- 资源分配、调度
前:进程是资源分配、调度单位
后:进程是资源分配基本单位、线程是调度的基本单位 - 并发性
前:进程间并发
后:各个线程间也能并发、提高并发度 - 系统开销
前:切换进程开销大
后:同一个进程内的线程切换,不需要切换进程的环境,系统开销小
3. 线程的属性
- 处理机调度的单位
- 多cpu,各个线程可以占用不同cpu
- 每个线程有一个tcb
- 线程也有就绪、阻塞、运行状态
- 线程几乎不用有系统资源
- 同一进程不同线程共享进程资源
- 共享内存地址空间
- 同一进程的线程切换不会引起进程切换
- 不同进程的线程切换会引起进程切换
4.线程的实现方式
-
用户级别
线程的管理工作由应用程序负责,线程在用户态下完成
-
内核级别
线程的管理由操作系统内核完成,线程调度、切换等工作交给内核负责。内核级线程切换必须在内核态完成。
-
同时支持用户和内核级线程的系统,采用二者的组合方式
只有内核级线程才是处理机分配的单位
如图:即使三个用户线程但是只有两个内核级线程,最多只有两个线程并行执行
5. 多线程模型
-
多对一
优点:不需要切换到核心态,系统开销小,效率高
缺点:当一个线程阻塞后,整个进程被阻塞
-
一对一
优点:一个线程阻塞后,其他线程还可以继续执行,并发能力强
缺点:一个用户进程会占用多个内核线程,切换到内核态开销大、线程管理成本高
-
多对多
克服前两个模型的缺点