2.1.5操作系统之线程概念与多线程模型

news2024/12/23 16:04:00

文章目录

  • 为什么要引入线程
  • 什么是线程
  • 引入线程带来的变化及进程与线程的比较
  • 线程的属性
  • 线程的实现方式
      • 用户线程
      • 内核线程
      • 特殊的组合方式及重点注意
  • 多线程模型
      • 多对一模型
      • 一对一模型
      • 多对多模型

为什么要引入线程

image-20221027124847045

在这里插入图片描述

  • 引入进程是为了让程序能够并发的执行,因为进程只能
  • 而引入线程类似套娃,是为了进程内也能并发的执行,是因为业务的需要,比如QQ这个进程,我们可能会需要一边视频一边文字聊天。进程中的这些子任务用线程来实现并发的执行

什么是线程

在这里插入图片描述

  • 可以把线程理解为轻量级的进程
    • 因为一开始进程有两大属性 1进程是可拥有资源的独立单位 2进程是一个可独立调度和分派的基本单位 为了让程序更好的并发,就将两个属性分开,做到轻装上阵
  • 引入线程后,线程是一个基本的CPU执行单元,也是程序执行流的最小单位

引入线程带来的变化及进程与线程的比较

在这里插入图片描述

  • 引入线程之后,资源的分配发生了变化
    • 线程的调度的基本单位,占有的是CPU资源
    • 而其他的系统资源还是分配给进程的,所以进程是资源分配的基本单位
  • 并发性
    • 引入线程后,进程内也能并发执行
  • 系统开销
    • 因为同一个进程的线程共享资源,所以同一个进程的线程切换,不会导致进程环境的切换,系统开销小

线程的属性

在这里插入图片描述

线程的实现方式

  • 线程的实现分为两类:用户级线程(User-Level Thread,UTL)和内核级线程(Kernel-Level Thread, KTL)l。内核级线程又称内核支持的线程

用户线程

在这里插入图片描述

  • 用户级的线程由应用程序通过线程库实现,所有的线程管理工作都由应用程序负责(包括线程切换)
  • 多个线程的对应到一个进程
  • 用户进程和系统进程都是在内核的支持下运行的
  • 在用户看来,是能看到多个线程,但是在操作系统内核看来,并意识不到线程的存在

内核线程

在这里插入图片描述

  • 内核级线程的管理工作由操作系统内核完成,线程调度,切换等工作都由内核负责,因此内核级线程的切换必须在核心态才能完成
  • 也就是说内核级线程就是操作系统内核视角能看到的线程

特殊的组合方式及重点注意

在这里插入图片描述

  • 记住只有内核级线程才是操作系统能看到的线程,想要真正的并行,只有内核级线程才能实现

多线程模型

多对一模型

在这里插入图片描述

  • 多个用户级线程对应一个内核级线程,这样的好处是用户及线程的切换在用户空间就可以完成,不需要切换到核心态,线程管理的系统开销小,效率高
  • 缺点就是 如果一个用户级线程被阻塞,整个进程都会被阻塞,因为只有一个内核级线程,相当只能占有一个CPU的核,并发的在这个CPU的核执行

一对一模型

在这里插入图片描述

  • 一对一就是一个用户级线程对应一个内核级线程,是真正的能实现线程的并行执行
  • 缺点就是 一个用户进程会占有多个内核级线程,线程的切换由操作系统内核完成,这样的开销比较大

多对多模型

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1201.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python每日学4:vscode的安装与基础使用

python开发常用的编辑器就是vscode, pycharm, 其他文本编辑器,我以前一直使用pycharm和国产的everedit. 但是,pycharm有点太笨重,everedit又太轻了,编译时经常出现字符编码集的错误,于是我就想换着使用下vscode. 首先是…

FLINK 基于1.15.2的Java开发-Watermark是怎么解决延迟数据唯一正确的生产级解决方案-目前市面上的例子都有问题

至此篇,已经完成高级生产应用,至此只剩“码需求”了。 开篇 Watermark这一块国内中文相关资料没有一篇是写完整或者写对的。源于:官网的watermark理论是对的,中文相关博客的代码和公式是错的。 很有可能是写第一篇Watermark中文…

【模电实验】【验证性实验——基本差动放大电路实验】

实验4-1 验证性实验——基本差动放大电路实验 1. 静态工作点的测试 按照下图连接电路,检查无误后将A, B两端短接,接通电源12 V, 分别测量三极管各极对地的电压值,推算静态电流,记入下表,并与仿真结果&…

【JavaWeb】之富文本编辑器

【JavaWeb】富文本编辑器前言一、富文本编辑器介绍二、富文本编辑器使用1.引入编辑器(多种引入方式)2.使用编辑器三、主流富文本编辑器推荐1.TinyMCE2.CKEditor3.UEditor4.wangEditor5.kindeditor6.simditor7.bootstrap-wysiwyg8.summernote9.Froala10.Q…

C++ Reference: Standard C++ Library reference: C Library: cstdlib: wctomb

C官网参考链接&#xff1a;https://cplusplus.com/reference/cstdlib/wctomb/ 函数 <cstdlib> wctomb int wctomb (char* pmb, wchar_t wc); 宽字符wc被转换为其等效多字节&#xff0c;并存储在pmb指向的数组中。函数在调用后返回由pmb指向的等效多字节序列的字节长度。…

倡议“1024区块链活动日”第三系列活动在京主会场和全球21个分会场成功举办

10月24日下午&#xff0c;倡议“1024区块链活动日”第三次系列活动暨乡村产业链改大会乡村振兴链改助农大会通过线上的形式&#xff0c;在北京主会场和全球21个分会场&#xff0c;1024个视频直播节点联动成功举办&#xff0c;本次活动由中国通信工业协会区块链专业委员会&#…

关于蓝桥杯单片机组自学的经验分享

这篇文章主题如标题所示。先说一下经验分享&#xff0c;文章末再写一些碎碎念。 蓝桥杯单片机组 客观题 程序设计题 数模电 C语言 单片机。 先说第一个等式&#xff0c;是从考题结构看的&#xff0c;程序设计题只要好好练&#xff0c;基本都能实…

SpringBoot常用注解

文章目录组件添加SpringBootApplicationConfigurationBeanConditionImprotImportSelectorImportBeanDefinitionRegistrar原生配置文件引入ImportResource配置绑定Component ConfigurationPropertiesConfigurationProperties EnableConfigurationProperties自动配置原理入门引…

SCI论文降重技巧盘点 - 易智编译EaseEditing

要想顺利发布SCI论文&#xff0c;首先就是要保证论文的原创性和创新性。要知道论文写作当中对于文献和资料的引用是必不可少的&#xff0c;所以论文的重复率很有可能会超标&#xff0c;对于这点要留意。 免费的查重网站有PaperYY、百度学术查重、Freecheck、Paperpass等等&…

上市公司信息透明度数据(1991-2019年)包含stata源代码和数据

上市公司信息透明度数据&#xff08;1991-2019年&#xff09;包含stata源代码和数据 1、数据来源&#xff1a;附在文件内 2、时间跨度&#xff1a;1991-2019年 3、区域范围&#xff1a;全国 4、指标说明&#xff1a; 股价同步性&#xff08;SYNCH&#xff09;&#xff0c;S…

自学网络安全的三个必经阶段(含路线图)

一、为什么选择网络安全&#xff1f; 这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等一系列政策/法规/标准的持续落地&#xff0c;网络安全行业地位、薪资随之水涨船高。 未来3-5年&#xff0c;是安全行业的黄金发展期&#xff0c;提前踏入…

jquery导航图片全屏滚动、首页全屏轮播图,各式相册

1.目录结构 源码 project cssjsimageindex1index2index3index4index.html index1到index4分为四个iframe标签引入的可单独分离的主页&#xff0c;相当于组件的原理&#xff0c;其中index作为主页&#xff0c;index1是首页全屏轮播图&#xff0c;其他都是单独的相册风格&…

图形学-反走样/抗锯齿

1.反走样 1.1 什么是走样 在上一篇文章中&#xff0c;我们通过采样的方式把一个三角形变成离散的点显示在屏幕上。在采样过程中&#xff0c;我们会产生很多锯齿&#xff0c;这些锯齿的学名就叫做走样 1.2 反走样 如何消除锯齿(走样),我们就要引入反走样技术&#xff0c;之所…

UNet详细解读(一)论文技术要点归纳

UNet 论文技术要点归纳UNet摘要简介Over-tile策略网络架构训练数据增强小结UNet 摘要 2015年诞生&#xff0c;获得当年的ISBI细胞追踪挑战比赛第一名&#xff0c;在GPU上推理512x512的图像不到1秒钟&#xff0c;开创图像分割的先河。 简介 在当时&#xff0c;卷积神经网络是主…

Win10-GPU服务器-深度学习从零配置环境

1.装anaconda 下载安装anaconda&#xff08;conda也一并装了&#xff09; https://www.anaconda.com/products/distribution 配系统变量 将类似这个位置放进path里面“C:\ProgramData\Anaconda3” 2.安装1.5.0版本的pytorch GPU版 2.1确定的你的显卡型号 https://jingyan.…

Redis持久化之AOF

AOF&#xff08;Append Only File&#xff09; 将我们所有的命令记录下来, history, 恢复的时候就把这个文件全部执行一遍 以日志的形式来记录每个写操作, 将redis执行过的所有指令记录下来(读操作不记录), 只许追加文件但不可以改写文件, 启动之初会读取该文件重新构建数据…

木犀草素修饰人血清白蛋白(Luteolin-HSA),山柰酚修饰人血清白蛋白(Kaempferol-HSA)

产品名称&#xff1a;木犀草素修饰人血清白蛋白 英文名称&#xff1a;Luteolin-HSA 用途&#xff1a;科研 状态&#xff1a;固体/粉末/溶液 产品规格&#xff1a;1g/5g/10g 保存&#xff1a;冷藏 储藏条件&#xff1a;-20℃ 储存时间&#xff1a;1年 温馨提醒&#xff1a;仅供科…

花2个月时间学习,面华为测开岗要30k,面试官竟说:你不是在....

【文章末尾给大家留下了大量的.。。。。】 背景介绍 计算机专业&#xff0c;代码能力一般&#xff0c;之前有过两段实习以及一个学校项目经历。第一份实习是大二暑期在深圳的一家互联网公司做前端开发&#xff0c;第二份实习由于大三暑假回国的时间比较短&#xff08;小于两个…

要如何才能抑制局部放电试验干扰?

局部放电产生的信号在微伏量级。就信号而言&#xff0c;很容易被外界干扰信号淹没。因此&#xff0c;必须考虑抑制干扰信号的影响&#xff0c;采取有效的抗干扰措施。局部放电测试仪测试中一些干扰的抑制方法如下: (1)电源的干扰可以通过滤波器来抑制。滤波器应该能够抑制…

Linux进程控制

文章目录进程创建fork函数进一步探讨写时拷贝进程终止进程退出场景进程终止时&#xff0c;操作系统做了什么&#xff1f;三大终止进程函数进程等待&#xff08;阻塞&#xff09;进程等待的必要性进程等待的两种函数获取子进程参数status如何通过status获取子进程的退出码。为什…