六、线程的实现方式---多线程模型
一、线程的实现方式----用户级线程
1.线程分为用户级线程和内核级线程
2.用户级线程由应用程序通过线程库实现,所有的线程管理工作都由应用程序负责(包括线程切换)
3.用户级线程中,线程切换可以在用户态下即可完成,无需操作系统干预。
4.在用户看来,是有多个线程,但是在操作系统的内核来看,并不意识到线程的存在。“用户级线程”就是“从用户视角所能看到的线程”。
5.优缺点:
优点:用户级线程的切换在用户空间即可完成,不需要切换到核心态,线程管理的系统开销小,效率高。
缺点:当一个用户级线程被阻塞后,整个线程都会被阻塞,并发度不高。多个线程必须在多核处理机上并行运行。
6.在用户级线程中,CPU调度的基本单位依旧是进程,并非线程
二、线程的实现方式—内核级线程
1.内核级线程:又称“内核支撑的线程”,是由操作系统支撑的线程。大多数的现代操作系统都实现了内核级线程,如Windows、Linux。
2.内核级线程的管理工作是由操作系统内核完成。
3.线程调度和切换等工作都是由内核负责,因此内核级线程的切换必然需要在核心态下才能完成。
4.操作系统会为每个内核级线程建立相应的TCB(进程控制块),通过TCB对线程进行管理”。“内核级线程”就是从操作系统内核视角看到的线程。
5.优缺点:
优点:当一个线程被阻塞后,别的线程还可以继续执行,并发能力强。多线程可在多核处理机上并行执行。
缺点:一个用户进程会占用多个内核程序,线程切换由操作系统内核完成,需要从用户态变为核心态,因此线程管理的成本高,开销大。
三、多线程模型—一对一模型
四、多线程模型—多对一模型
注意:在此种模型下,操作系统只“看得见”内核级线程,因为只有内核级线程才是处理机分配的单元。
五、多线程模型—多对多模型
六、总结
六、线程的实现方式---多线程模型相关推荐
- 线程的概念和多线程模型
文章目录 5.线程概念和多线程模型 5.1.为什么要引入线程 5.2.什么是线程 5.3.线程引入后带来的变化 5.4.线程的属性 5.5.线程的实现方式 5.5.1.用户级线程 5.5.2.内核级线 ...
- 2.1.5 线程概念和多线程模型
目录 思维导图 啥是线程,为什么要引入线程? 引入线程机制后,有啥变化? 线程的属性 线程的实现方式 用户级线程 内核级线程 组合方式 多线程模型 多对一模型 一对一模型 多对多模型 思维导图 啥是线 ...
- 【学习笔记】第二章——线程与多线程模型
文章目录 一. 线程 为什么要引入线程: 引入进程后的变化 线程的属性 线程的实现 二. 多线程模型 1. 多对一模型 2. 一对一模型 3. 多对多模型 三. 总结 一. 线程 为什么要引入线程: ...
- 操作系统(十二)线程的实现方式、多线程模型
2.1.6 线程的实现方式.多线程模型 目录 2.1.6 线程的实现方式.多线程模型 2.1.6.1 线程的实现方式 2.1.6.2 多线程模型 2.1.6.1 线程的实现方式 线程已在许多系统中 ...
- 线程实现的方式、多线程模型
文章目录 前言 一.用户级线程 二.内核级线程 三.组合实现 四.多线程模型 1.多对一模型 2.一对一模型 3.多对多模型 前言 参考文章:https://blog.csdn.net/qq_4060 ...
- 2.1.5 操作系统之线程概念与多线程模型
文章目录 0.思维导图 1.为什么要引入线程? 2.什么是线程? 3.引入线程带来的变化及进程与线程的比较 4.线程的属性 5.线程的实现方式 (1)用户级线程 (2)内核级线程 (3)特殊的组合方式 ...
- 王道操作系统考研笔记——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引入线程及之后,有什么变 ...
- (王道408考研操作系统)第二章进程管理-第一节5:线程概念和多线程模型
文章目录 一:引导 二:区别"进程"."线程"和"轻量级进程" (1)进程和线程的关系 (2)Linux中没有真正意义上的线程 (3)轻量级 ...
最新文章
- 第一学期网络技术知识总汇
- 写 5 个你知道的 HTML5 标签,说明他们的意义
- Spring bean依赖注入、bean的装配及相关注解
- Android Native crash 处理案例分享
- PHP网站开启gzip压缩,php中开启gzip压缩的2种方法代码
- ubuntu16 黑主题_给Ubuntu 8.10安装超炫酷黑色新主题
- java编程int和byte的用法_Java中的Byte Array和Int转换
- QT每日一练day20:事件处理机制
- MongoDB的安装、配置服务(转)
- 初学者PLC程序及有效学习方法
- 使用spack mirror简化离线环境的包安装
- open SUSE 查看本机ip地址
- jQuery灯箱插件lightBox使用方法
- 高一物理加速度的理解
- 1483套求职个人简历PPT模板免费下载网址
- 计算机桌面怎么换服,台式电脑怎么换桌面壁纸
- 岗位po是什么意思_通信公司中PO和PM分别是什么意思?
- 查询服务器主机CPU是几核?附应用场景展示(已解决)
- 笔记本电脑wifi图标变成了小地球的解决办法(留日后查看)
- 当经历所有大厂的实习面试过后
热门文章
- 指针,引用之间的关系
- JQuery $post函数
- 第二十六课.深度强化学习(一)
- oracle开发常用,oracle开发常用关键字
- 绘制三维散点图_质量工具--之散点图
- matlab svm工具箱_机器学习笔记--SVM(MATLAB 实现代码)
- The Innovation | ESCI Indexing
- MPB:亚热带生态所谭支良、焦金真等-​反刍动物瘤胃样品采集与保存
- MPB:山大倪金凤组-黄翅大白蚁肠道放线菌的分离与培养
- 聚类热图怎么按自己的意愿调整分支的顺序?