操作系统笔记-2.1.6.1 线程的概念与特点
·
王道操作系统笔记,视频链接:2.1.6.1 线程的概念与特点
知识总览

为什么引入线程
- 知识复习(进程):在没有引入进程之前,系统中各个程序只能串行执行,引入进程之后就可以并发执行,进程是程序的一次执行。
- 问题引入:类似于QQ,可以同时实现视频、文字聊天、传送文件等,这些功能显然不是由一个程序顺序处理就能实现的,那应该如何实现呢?
- 有的进程可能需要“同时”做很多事,而传统的进程只能串行地执行一系列程序。为此,引入了“线程”,来增加并发度。
- 传统的进程是程序执行流的最小单位,引入线程后,线程成为了程序执行流的最小单位(也就是CPU并发执行的最小单位),如图所示:

- 可以把线程理解为“轻量级进程”,它是一个基本的CPU执行单元,也是程序执行流的最小单位。
- 引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如:QQ视频、文字聊天、传文件等)
- 引入线程后,进程不再是CPU调度的基本单位,它只作为除CPU之外的系统资源的分配单元(如打印机、内存地址空间等都是分配给进程的)。
也就是说,系统负责分配资源时,是按照进程分配的,而不是线程。
引入线程后的变化
- 资源分配、调度
- 传统进程机制中,进程是资源分配、调度的基本单位
- 引入线程后,进程是资源分配的基本单位,线程是调度的基本单位
- 并发性
- 传统进程机制中,只能进程间并发
- 引入线程后,各线程间也能并发,提升了并发度
- 系统开销
- 传统的进程间并发,需要切换进程的运行环境,系统开销很大
- 线程间并发,如果是同一进程内的线程切换,则不需要切换进程环境,系统开销小
- 引入线程后,并发所带来的系统开销减小
- PS:(来自deepseek)进程环境主要指独立的虚拟地址空间及其页表;同一进程内的线程切换无需更换页表,从而避免了昂贵的TLB(地址翻译缓存)和CPU缓存刷新,这是系统开销大幅减小的根本原因。
线程的属性
- 线程是处理机调度的单位
- 多CPU中,各个线程(包括同一进程中的不同线程)可占用不同的CPU
- 每个线程都有一个线程ID、线程控制块(TCB,类似进程的PCB)
- 线程也有就绪、阻塞、运行三种基本状态
- 线程几乎不拥有系统资源
- 同一进程的不同线程间共享进程的资源
- 由于共享内存地址空间,同一进程中的线程间通信甚至无需系统干预
- 同一进程中的线程切换,不会引起进程切换
- 不同进程中的线程切换,会引起进程切换
- 切换同进程内的线程,系统开销很小
- 切换进程,系统开销较大
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)