操作系统笔记4
什么是线程
进程可能需要同时做很多事,但是传统的进程只能串行地执行一系列的程序,为此引入了线程的概念来增加并发度
引入了线程后,线程称为程序执行流的最小单位
引入线程后不仅是进程之间可以并发,进程内的各个线程之间也可以并发,从而进一步提升了系统的并发度。
引入线程后,进程只作为除CPU之外的系统资源的分配基本单元,也就是系统资源分配给进程而不是分配给线程
线程的实现方式
线程的实现方式分为用户级线程和内核级线程
用户级线程
内核级线程(Kernel-level)
优点:当一个线程被阻塞的时候其他线程还可以继续执行,并发能力强,多线程可以在多核处理及上并行执行。
缺点:一个进程占用多个内核级线程,线程的切换由操作系统的内核完成,需要切换到内核态,因此,线程管理的成本高,开销大
多线程模型
在支持内核级线程的系统中,根据用户级线程和内核级线程的映射关系,可以划分为几种多线程模型
一对一线程
多线程模型
重点:操作系统只看得见内核级线程,因此只有内核级线程才是处理机分配的单位
多对多模型
用户级线程和内核级线程的区别和联系
- 用户级线程是代码逻辑的载体
- 内核级线程是运行机会的载体
内核级线程才是处理机分配的单位
一段代码逻辑只有获得运行机会才会被CPU执行
内核级线程可以运行任意一个由映射关系的用户级线程代码,只有两个内核级线程中正在运行的代码逻辑都阻塞时,这个进程才会阻塞
总结
线程的状态和转换
线程的状态与转化类似进程的状态与转换,并且线程的状态和转化只包括就绪态,运行态,阻塞态
线程的状态与转换
线程的组织与控制
管理线程,数据结构是TCB 与进程的PCB类似
线程切换时保存和恢复的信息PC,其他寄存器,堆栈指针
线程表:线程按照组织成线程表可以构成一个进程,也可以按照线程的状态不同组织成不同的线程表
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 Ethereal
评论