操作系统-线程的实现方式和多线程模型(用户级线程 内核级线程 多线程模型的情况)和线程的状态,转换,组织,控制

文章目录

线程的实现方式和多线程模型

总览

线程的实现方式

用户级线程

程序自己通过自己设计的线程库实现线程管理调度

如QQ有三个功能,这三个功能需要同时进行,通过进程实现就是三个进程分别实现这三个功能

如果由一个进程实现?相当于并发执行三个功能

线程的管理工作:由线程库(如上面通过while),不是操作系统。

线程切换由程序自己的线程库来完成,不需要CPU变态

操作系统不能意识到用户级线程的存在,它只是在执行进程的代码,代码中的线程库部分能够实现并发执行各个线程

优点:切换线程只需要在用户态完成

缺点:被阻塞在某段代码时整个进程的其他线程都会阻塞,且多个线程都是运行在一个CPU的(CPU的调度单位依然是进程)

内核级线程

线程的管理工作由操作系统完成

线程的切换需要CPU变态(需要操作系统介入)

引入内核级线程后,CPU调度的基本单位是线程,多个线程也可以分派到多个CPU上并行运行

多线程模型

一对一

多对一

多对多

此时内核级线程与用户级线程的对应关系由有两种

一个内核级线程对应多个用户级线程就是之前的多对一的情况

而一个内核级线程对应一个用户级线程就是之前的一对一情况

小结

线程的状态,转换,组织,控制

总览

线程的状态和转换与进程的差不多

线程的状态与转换

时间用完是并发执行中的轮换的原因

我们通常关注这三个状态

线程的组织与控制

保存堆栈指针是在保存该线程的栈顶地址和栈底地址,切换线程后,该线程的堆栈信息依然在内存中

组织线程表的类型可以不同,如将系统的线程都组成一张表,或者按照进程来组成线程表,又或者按照线程状态来分状态组织线程表

控制就是实现线程状态的切换和线程的调度

相关推荐
小智老师PMP14 分钟前
2026深度解析|PMP第八版与NPDP核心侧重点本质区别(管理类证书怎么选)
开发语言·分布式·算法·职场和发展·产品经理
Rain的Java大神之路1 小时前
JavaWeb开发如何解决跨域问题
java·前端·后端·nginx·web安全·面试·运维开发
自动化监测Learner1 小时前
Navicat Premium 17 中文版安装教程(2026最新版)
java·linux·数据库
江畔柳前堤1 小时前
前台·中台·后台:2026年AI原生时代的架构全景图
开发语言·人工智能·算法·机器学习·架构·scala·ai-native
那个松鼠很眼熟w1 小时前
4.Spring-Ai入门案例
java·人工智能·spring
计算机毕设定制辅导-无忧学长1 小时前
《基于SpringBoot青年公寓出租管理系统的设计与实现》
java·vue.js·spring boot·青年公寓出租管理系统
Figo_Cheung2 小时前
Figo基于RNC理论的宇宙演化第七纪元猜想
开发语言·php
泡海椒2 小时前
JQuick-Curl 二次开发:自定义解析器、扩展点开发指南,如何把框架能力真正变成团队资产
java·开发语言·okhttp·maven
青山木3 小时前
Hot 100 --- 数组中的第K个最大元素
java·数据结构·算法·排序算法
玛卡巴卡ldf3 小时前
【AICoding】笔试提示词设计思路
java·算法·ai编程