2.1.5线程概念与多线程模型
全知识整理目录
操作系统整理的目录,包括了整理的所有操作系统的知识。
概述
在没有线程以前,进程是程序执行流的最小单位。那为什么要引入线程呢?
引入线程主要是为了提高并发量。
例如:你去图书馆看书,一个桌子有4个位置,可能陌生的人之间,不愿意挨着坐,就会造成座位的浪费。
如果引入线程的思想,就是,将你分入寝室,分入一个班。那么你的室友,同班同学放入你坐的桌子,大家都很愿意,也提高了桌子的并发量。线程就是这样的一种思想。
所以,引入线程之后,线程就是程序执行流的最小单位。
引入线程的变化
- 线程是一个基本的CPU执行单元,也是程序执行流最小的单位。
- 引入线程之后,不仅是进程之间可以并发,进程内部的线程之间也可以并发,并且线程的并发效率更高,从而进一步提高了系统的并发度,使得一个进程内也能够处理多种任务。
- 引入线程之后,进程只作为除CPU之外系统资源的分配单元。(如打印机,的内存地址空间还是分配给的进程)。所以进程是资源分配的基本单位,线程是调度的基本单位。
- 同一个进程内,线程能并发,能切换。且开销更小。
线程的属性
如下图概括
线程的实现方式
线程的实现分为两类,用户级线程(UTL)和内核级线程(KTL),内核级线程又称为内核支持的线程。
用户级线程
- 用户级线程由应用程序通过线程库实现的,所有线程管理工作都由应用程序负责(包括线程切换)。
- 用户级线程,在用户态下就可以完成,不需要操作系统干预。
- 在用户看来,用户级线程是有多个,但是在操作系统看来,并不能看到线程的存在(即用户级线程对用户不透明,对操作系统透明)。
简单的理解,用户级线程就是有,用户方面的应用程序创建的,只有用户视角的才能看到,操作系统是不能的。
内核级线程
内核级线程的管理工作,都是由操作系统内核完成的。线程调度,切换等工作都是由内核负责,因此内核级线程的切换,必须在内核形态下才能完成。
简单的理解:内核级线程,就是从操作系统内核的视角,能够看到,处理的线程。
所以内核级线程才是处理机分配的单元。因为用户级线程他根本看不见。
如上图,三个用户级线程,两个内核级线程。但是即使在一台,8核的电脑上运行,也只能被分配到2个核。所以用户级线程,是映射到内核级线程来处理的。
多线程的模型
上面这个图,就是一种线程的处理模型,那么线程还有那些处理模型呢?
多对一模型
多个用户及线程映射到一个内核级线程,每个用户进程只对应一个内核级线程。
优点:用户级线程的切换在用户空间就可以完成,不需要切换到内核态,线程管理的系统开销小,效率高。
缺点:当一个用户级线程被阻塞,整个进程都会被阻塞,并发度不高。
一对一模型
一个用户级线程映射到一个内核级线程,每个用户进程,有同数量的内核级线程。
优点:当一个线程被阻塞后,别的线程还可以继续执行,并发能力强。多线程可以在多核处理机上并行执行。
缺点:一个用户级线程,会占用多个内核级线程,线程切换由操作系统的内核完成,需要切换到内核心,,线程的管理成本高,开销大。
多对多模型
像这种简单粗暴的,多对一,一对多关系,一般不是最优解。那么最优解来了。多对多模型。
n用户级线程,映射到m个内核级线程上(n>=m),每个用户进程对应m个内核级线程(n>=m)。
这样就解决了,多对一模型当中并发度不高的缺点,又克服了一对一模型中,一个用户占用太多内核级线程的开销大问题。
参考:https://www.bilibili.com/video/av70156862?p=11
2.1.5线程概念与多线程模型相关推荐
- 王道操作系统考研笔记——2.1.5 线程概念与多线程模型
文章目录 2.1.5 线程概念与多线程模型 2.1.5.1 线程的来源 2.1.5.2 线程机制带来的变化 2.1.5.3 线程的属性 2.1.5.4 线程的实现方式 2.1.5.5 多线程模型 2. ...
- 操作系统学习笔记-2.1.5线程概念和多线程模型
操作系统学习笔记-2019 王道考研 操作系统-2.1.5线程概念和多线程模型 文章目录 5线程概念和多线程模型 5.1知识概览 5.2 什么是线程?为什么要引入线程? 5.3引入线程及之后,有什么变 ...
- 【操作系统】—线程概念和多线程模型
[操作系统]-线程概念和多线程模型 本章节学习内容如下 一.什么是线程,为什么要引入线程 线程是一个基本的CPU执行单元,也是程序执行流的最小单位 二.引入线程机制后,有什么变化? 三.线程的属性 线 ...
- 线程概念和多线程模型【操作系统学习笔记】
11.线程概念和多线程模型
- 2.1.5 线程概念和多线程模型
目录 思维导图 啥是线程,为什么要引入线程? 引入线程机制后,有啥变化? 线程的属性 线程的实现方式 用户级线程 内核级线程 组合方式 多线程模型 多对一模型 一对一模型 多对多模型 思维导图 啥是线 ...
- (王道408考研操作系统)第二章进程管理-第一节5:线程概念和多线程模型
文章目录 一:引导 二:区别"进程"."线程"和"轻量级进程" (1)进程和线程的关系 (2)Linux中没有真正意义上的线程 (3)轻量级 ...
- 王道 ——线程概念和多线程模型
目录 1.知识总览 2.什么是线程,为什么要引入线程 3.引入线程机制后,有什么变化 4.线程有哪些重要的属性 5.线程的实现方式 5.1 用户级线程 5.2 内核级线程 6.多线程模型 1.知识总览 ...
- 2.1.5 操作系统之线程概念与多线程模型
文章目录 0.思维导图 1.为什么要引入线程? 2.什么是线程? 3.引入线程带来的变化及进程与线程的比较 4.线程的属性 5.线程的实现方式 (1)用户级线程 (2)内核级线程 (3)特殊的组合方式 ...
- 线程的概念和多线程模型
文章目录 5.线程概念和多线程模型 5.1.为什么要引入线程 5.2.什么是线程 5.3.线程引入后带来的变化 5.4.线程的属性 5.5.线程的实现方式 5.5.1.用户级线程 5.5.2.内核级线 ...
最新文章
- 文巾解题 977. 有序数组的平方
- Anaconda安装及第一个py程序
- mysql中间件研究(Atlas,cobar,TDDL)
- android xml事件,安卓事件
- svn 的使用(二)
- 如何锻炼膝盖和膝盖周围肌肉_我的分享膝盖照片的社交网络将如何拯救世界
- web安全day8:深入浅出掌握windows域
- JAVA生成UUID
- 第六章 算法algorithms
- 美林投资时钟与大类资产配置
- Win10下安装Ubuntu20.04双系统,看这一篇就够了
- 在自己电脑上无法用Foxmail客户端登录126邮箱的解决办法
- ios修改apn的插件_更改接入点,瞬间让你在4G网络下快到不行!效果立竿见影!...
- php实训参考文献,SPSS实训心得体会
- 认识计算机微课导学单,微课“任务单”与“导学案”之比较
- cdn投资骗收租_为研究直播的投资点,才意识到CDN对内容分发的基础性意义。迟到3年才看到这一点,错过20倍的网宿科技...
- 获取MPU9250九轴数据--以四轴飞行器姿态解算为例
- 每个人都应该遵循的12个 SEO 最佳实践
- 牛客	古老的牛市,遗迹的天梯 dp
- Git系列:git push -u origin master命令理解
热门文章
- 地区天气(和风天气)
- Omnibox之Chrome关闭地址栏 输入提示
- 12月28吃鸡服务器维护,《绝地求生》正式服今日更新: 玩家死亡3分钟后才可观看回放...
- android studio 大作业
- Spring的基本原理
- 28 | MySQL读写分离之主从延迟解决方案(主从延迟问题有救了)
- 机器学习之PCA降维
- Python 利用PIL将图片转为字符
- springcloud:Fegin实现微服务间调用
- linux 5.5 关机,linux杂记(五)正确关机方法(shutdown,reboot,init,halt)