线程
其实线程是打算与上一章的进程写在一起的,但是一天事情太多,写得太晚了。就只好把线程单独分一章出来。
本章重点 | |
---|---|
1、线程的概念 | |
2、线程与进程的关系 | |
3、线程的状态 | – |
4、进程与线程的比较 | |
5、线程的分类 | |
6、线程的组合 | – |
7、多线程问题 | |
8、 Windows 2000的线程 |
(一) 线程的概念
线程
- 指系统独立调度和cpu分配的最小单位
- 线程是进程的以一个实体,它除了拥有运行中必不可少的资源(程序计数器、寄存器、栈)外,不用其他系统的资源,故而称为轻量级进程
引入线程可以减少程序并发执行时所付出的时间和空间开销,极大的提高了系统效率
(二) 线程与进程的关系
线程与进程的关系
关系 | 解释 |
---|---|
划分尺度 | 线程粒度更小,它是进程的一个执行单元,进程内可调度实体 |
资源分配 | 进程是资源分配的基本单位,线程不拥有I/O设备等系统资源,此外,同一进程有多个线程可共享该进程的资源 |
地址空间 | 进程拥有独立的空间地址,同一进程有多个线程可共享该进程的地址空间 |
CPU调度 | 线程是CPU调度的基本单位 |
并发执行 | 一个进程可以有多个线程,但是一个线程只属于一个进程,所以线程的并发程度更高。 |
(三) 线程的状态
进程是资源的拥有者,线程不拥有资源,只有TCB及堆栈。
(四) 线程与进程的比较
线程与进程的比较
关系 | 解释 |
---|---|
调度 | 线程调度快,需要空间小;进程因为拥有资源,调度时会因此而过慢 |
并发性 | 在引入线程的操作系统当中,进程、同进程中的多个线程都可以并发执行 |
拥有资源 | 进程是资源的拥有者 |
系统开销 | 进程切换的开销>线程切换的开销,线程的切换省去了资源的回收 |
(五)线程的分类
线程的分类
-
用户级线程:线程的创建、撤销和切换,都不利用调度系统来实现。线程与内核无关,内核也不知道线程的存在。
特点:
1、线程的切换开销小;
2、管理控制方便;
3、健壮、实用性强;
4、当某个线程被阻塞时,其所属进程中的其他线程也会被阻塞,导致系统效率较低;
5、相同进程中多个线程不能真正运行。 -
内核级线程:依赖于内核、线程的创建、撤销和切换都由内核实现。在内核中有线程控制块(TCB),内核根据TCB感知线程的存在,并对线程进行控制。
特点:
1、相同进程内多个线程可以并行执行
2、内核线程具有很小的数据结构和堆栈,且切换速度块,从而提高了操作系统的性能和效率
3、多处理机环境中,一个进程的多个线程可以分配到多个CPU执行
4、一个进程中线程的切换会引起从用户态到系统态,从系统太到用户态之间转换,会增加系统内核的开销和负担。
用户级和内核级线程的比较
1 | 2 |
---|---|
调度与切换速度 | 用户级>内核 |
系统调用 | 内核>用户级 (y用户级在被系统调用是,系统会看成是进程行为,但是内核线程的就不会。) |
线程执行时间 | 内核>用户级 |
(六) 线程的组合
线程的组合
组合的方法:一个进程可以有一个或多个轻量级线程,每一个轻量级线程由一个单独的内核线程来支持。
(七) 多线程问题
多线程问题
-
线程的取消:指线程完成任务前终止。
立即取消:线程不需要马上取消
延迟取消:以一种有序的方式终止 -
信号处理:单线程的信号处理比较直接,多线程的比较复杂
-
线程池:主要思想是在进程开始时创建一定数量的线程
(八) Windows 2000的线程
Windows 2000的线程
- 是内核支持线程
- 系统调度以线程为单位。
- 线程包括(线程控制块、核心栈、用户栈)