什么是线程

进程可能需要同时做很多事,但是传统的进程只能串行地执行一系列的程序,为此引入了线程的概念来增加并发度

引入了线程后,线程称为程序执行流的最小单位

引入线程后不仅是进程之间可以并发,进程内的各个线程之间也可以并发,从而进一步提升了系统的并发度。

引入线程后,进程只作为除CPU之外的系统资源的分配基本单元,也就是系统资源分配给进程而不是分配给线程

img

在这里插入图片描述

线程的实现方式

线程的实现方式分为用户级线程内核级线程

用户级线程

在这里插入图片描述

内核级线程(Kernel-level)

在这里插入图片描述

优点:当一个线程被阻塞的时候其他线程还可以继续执行,并发能力强,多线程可以在多核处理及上并行执行。

缺点:一个进程占用多个内核级线程,线程的切换由操作系统的内核完成,需要切换到内核态,因此,线程管理的成本高,开销大

多线程模型

在支持内核级线程的系统中,根据用户级线程和内核级线程的映射关系,可以划分为几种多线程模型

一对一线程

在这里插入图片描述

多线程模型

在这里插入图片描述

重点:操作系统只看得见内核级线程,因此只有内核级线程才是处理机分配的单位

多对多模型

在这里插入图片描述

用户级线程和内核级线程的区别和联系

  1. 用户级线程是代码逻辑的载体
  2. 内核级线程是运行机会的载体

内核级线程才是处理机分配的单位

一段代码逻辑只有获得运行机会才会被CPU执行

内核级线程可以运行任意一个由映射关系的用户级线程代码,只有两个内核级线程中正在运行的代码逻辑都阻塞时,这个进程才会阻塞

总结

image-20230503152808210

线程的状态和转换

线程的状态与转化类似进程的状态与转换,并且线程的状态和转化只包括就绪态,运行态,阻塞态

线程的状态与转换

image-20230503153103601

线程的组织与控制

管理线程,数据结构是TCB 与进程的PCB类似

image-20230503153306128

线程切换时保存和恢复的信息PC,其他寄存器,堆栈指针

线程表:线程按照组织成线程表可以构成一个进程,也可以按照线程的状态不同组织成不同的线程表