当前位置: 首页 > news >正文

【操作系统】聊聊进程、线程、协程

进程内部有那些数据
为什么创建进程的成本高

进程和线程

进程是资源分配的基本单位,而线程是程序执行的基本单位,一个是从资源分配的角度看,另一个是执行角度。

那么进程和程序的区别是什么?
程序,一段代码,一组指令的有序集合。
进程:程序的一次动态运行,通过进程控制块唯一的标识这个进程。
进程:动态,有资源,有唯一标识,有并发性;
程序:静 态,无资源,无唯一标识,无并发性。
在这里插入图片描述
进程是操作系统从安全角度出发进行设计的隔离单位,但是进程在使用的时候,unix是通过fork,先clone,然后在使用,这个设计其实不是很优雅。

线程的出现本质是为了解决同一个软件内会有多个任务的需求,这些任务在相同的地址空间,可以相关操作资源。

协程与goroutine

进程和线程其实对于大多数非高性能服务来说,其实是没问题,但是目前主流的互联网应用基本都是高性能网络服务。

正常情况下的线程模式
在这里插入图片描述
大多数的请求都是因为在存储这部分被阻塞,其中包含如下

  • 系统调用机制的开销
  • 数据多次拷贝 内核态到用户态
  • 线程的空间和时间成本。

而为了提升网络服务器的吞吐能力,目前使用的是epoll,基本就是通过IO多路复用机制实现,少等待,统一的一个线程查询谁处理完,然后去通知处理。而本质是通过减少了线程。系统调用和内存拷贝并没有减少。

线程的成本
时间成本

  • 切换本身的开销,寄存器保存和恢复的成本
  • 调度开销,
  • 同步与互斥成本

空间成本

  • 执行体的执行状态
  • TLS(线程局部存储)
  • 执行体的堆栈

所以综上所属,协程解决的问题是

  • 回归到同步IO的编程模式
  • 降低执行体的空间和时间成本

协程的本质就是用户态下的线程。
Go语言中goroutine。

  • 堆栈自动增长
  • 没有线程局部存储
  • 同步、互斥和通信
  • 提供了重要的系统调用的包装

状态

进程状态

  • 创建
  • 就绪
  • 运行
  • 阻塞

其实创建、就绪、运行比较好理解,阻塞比较难理解,
阻塞其实就是当进程需要等待网络IO或者本地IO的时候,需要等待结果,只能一直等待。
在这里插入图片描述
在这里插入图片描述

小结

本篇主要介绍了进程、线程、协程,以及进程的状态,其实和线程也是通用的。

相关文章:

【操作系统】聊聊进程、线程、协程

进程内部有那些数据 为什么创建进程的成本高 进程和线程 进程是资源分配的基本单位,而线程是程序执行的基本单位,一个是从资源分配的角度看,另一个是执行角度。 那么进程和程序的区别是什么? 程序,一段代码&#xff…...

springboot 下 activiti 7会签配置与实现

流程图配置 会签实现须在 userTask 节点下的 multi instance 中配置 collection 及 completion condition; collection 会签人员列表;element variable 当前会签变量名称,类似循环中的 item;completion condition: 完成条件。 ${taskExecutionServiceIm…...

RK3399平台开发系列讲解(内核调试篇)spidev_test工具使用

🚀返回专栏总目录 文章目录 一、环境二、执行测试三、回环测试四、字节发送测试五、32位数据发送测试沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 在 Linux 系统上,“spidev_test” 是一个用于测试和配置 SPI(Serial Peripheral Interface)设备的命令行工具。…...

点云从入门到精通技术详解100篇-自适应点云局部邻域特征的特征提取与配准(续)

目录 3.4 深度相机误差建模 3.5 实验结果及分析 3.5.1 TOF 相机平面畸变校正 3.5.2 TOF 相机深度误差校正...

VBA技术资料MF52:VBA_在Excel中突出显示前 10 个值

【分享成果,随喜正能量】一言之善,重于千金。善良不分大小,有时候你以为的一句话,小小的举手之劳,也可能就是别人的救赎!不要吝啬你的善良,因为你永远不知道那小小的善良能给多少人带来光明。。…...

leetcode做题笔记134. 加油站

在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。 给定两个整数数组 gas 和 cost &…...

Allegro166版本如何在颜色管理器中实时显示层面操作指导

Allegro166版本如何在颜色管理器中实时显示层面操作指导 在用Allegro166进行PCB设计的时候,需要在颜色管理器中频繁的开关层面。但是166不像172一样在颜色管理器中可以实时的开关层面,如下图 需要打开Board Geometry/Soldermask_top层,首先需要勾选这个层面,再点击Apply即…...

纷享销客入选中国信通院《高质量数字化转型产品及服务全景图》

近期,在中国信息通信研究院主办的“2023数字生态发展大会”暨中国信通院“铸基计划”年中上,重磅发布了《高质量数字化转型产品及服务全景图(2023)》,纷享销客凭借先进的技术能力和十余年客户业务场景应用理解&#xf…...

C高级 DAY4

一、分支语句 case ...in语句 shell中的switch语句 case $变量名 in常量1)语句;; ------->类似于C中break的作用,;;除了最后一条分之外,都不能省略常量2)语句;; 常量n)语句;;*) ------->类似于C中default,但…...

C高级day4

作业 实现一个对数组求和的函数,数组通过实参传递给函数 写一个函数,输出当前用户的uid和gid,并使用变量接收结果 思维导图...

Java8-17 --- idea2022

目录 一、idea官网 二、使用idea编写hello world 三、查看工程中的JDK配置信息 四、详细设置 4.1、显示工具栏 4.2、默认启动项目配置 4.3、取消自动更新 4.4、选择整体主体与背景图 4.5、设置编辑器主题样式 4.5.1、编辑器主题 4.5.2、字体大小 4.5.3、修改注…...

Mybatis---增删改查

目录 一、添加用户 (1)持久层接口方法 (2)映射文件 (3)测试方法 二、修改用户 (1)持久层接口方法 (2)映射文件 (3)测试方法 …...

开机性能-如何抓取开机systrace

一、理论 1.背景 抓取开机 trace 需要使用 userdebug 版本,而我们测试开机性能问题时都要求使用 user 版本,否则会有性能损耗问题。因此想要在抓取开机性能trace 时,需要在 user 版本上打开 atrace 功能之后才能抓取 trace,默认 …...

VBA技术资料MF54:VBA_EXCEL实时获取鼠标位置

【分享成果,随喜正能量】若人散乱心,乃至以一花,供养于画像,渐见无数佛。所以发一幅释迦牟尼佛像,与同修善友一起每日在微博上供养,只要有供养之心,便可积累功德。以此回向,愿求者如…...

模电课程设计

主要内容跟本科实验关系很大,可以用来借鉴。 包含文件有:实验报告、Multisim仿真文件,资料很全,有问题可以私信 目录 1、模电课设:用Multisim简单了解二极管 2、模电课设:用Multisim简析三极管与场效应…...

【2023研电赛】兆易创新命题三等奖: 低成本单母线电流永磁同步无感驱动器

本文为2023年第十八届中国研究生电子设计竞赛兆易创新企业命题三等奖以及决赛最佳论文奖分享,参加极术社区的【有奖活动】分享2023研电赛作品扩大影响力,更有丰富电子礼品等你来领!,分享2023研电赛作品扩大影响力,更有…...

原生Js 提取视频中的音频

Js提取视频中的音频 将视频中的音频轨道分离出来&#xff0c;生成 wav 文件播放或下载&#xff08; Vue3 setup &#xff09; 代码实现 template <button><label for"file" id"filename">选择视频文件</label><input type"fi…...

设计模式-备忘录模式(Memento Pattern)

文章目录 前言一、备忘录模式的概念二、备忘录模式的实现三、备忘录优缺点优点&#xff1a;缺点&#xff1a;总结 前言 备忘录模式&#xff08;Memento Pattern&#xff09;是一种行为型设计模式&#xff0c;它用于捕获和存储对象的内部状态&#xff0c;以便在以后可以恢复到先…...

PHP对接阿里云虚拟号的实现(号码隐私保护)

fastadmin 封装框架 实现功能&#xff1a;AXN隐私号绑定、解绑&#xff1b; 场景&#xff1a;为店铺手机号开通虚拟号&#xff0c;用户联系店铺展示虚拟号码&#xff1b; 官方开放文档地址&#xff1a;https://help.aliyun.com/document_detail/59655.html?spma2c4g.111742…...

刷新单年发射纪录:SpaceX成功发射62次猎鹰9号火箭

SpaceX一直都致力于推进航天领域的发展。近日&#xff0c;该公司的猎鹰9号火箭再次刷新了单年发射纪录&#xff0c;目前已经成功发射了62次。除此之外&#xff0c;今年SpaceX还发射了一枚猎鹰火箭和一枚巨型火箭。马斯克表示&#xff0c;他的目标是实现每月10次猎鹰飞行&#x…...

项目打包docker镜像 | 上传nexus | jenkins一键构建

文章目录 前言准备实操1、打开docker的远程访问2、编写dockerfile文件3、指定nexus环境4、配置jenkins5、使用jenkins构建 总结 前言 Docker部署项目是指使用Docker容器化技术将应用程序及其依赖项打包成一个独立的、可移植的运行环境&#xff0c;并在各种操作系统和平台上进行…...

ios 运行ipa包 日志查看方式

方法一&#xff1a; 使用ideviceinstaller工具 # 安装ipa命令 brew install ideviceinstaller ideviceinstaller -i xxx.ipa# 查看运行日志 idevicesyslog# idevicesyslog 查找命令 idevicesyslog | grep test -A 3 -B 2 # 输出关键字所在行后3行&#xff0c;前2行) idevic…...

AUTOSARCAN-Tp协议

目录 一.单帧、首帧、连续帧、流控帧 单帧传输 SF单帧&#xff1a; 多帧传输 FF&#xff08;首帧&#xff09;&#xff1a; CF&#xff08;连续帧&#xff09;&#xff1a; FC&#xff08;流控帧&#xff09;&#xff1a; 一.单帧、首帧、连续帧、流控帧 CAN诊断由发送端…...

【设计模式】组合模式实现部门树实践

1.前言 几乎在每一个系统的开发过程中&#xff0c;都会遇到一些树状结构的开发需求&#xff0c;例如&#xff1a;组织机构树&#xff0c;部门树&#xff0c;菜单树等。只要是需要开发这种树状结构的需求&#xff0c;我们都可以使用组合模式来完成。 本篇将结合组合模式与Mysq…...

恒林家居引入纷享销客CRM系统,领跑家居行业营销数字化进程

近日&#xff0c;恒林家居股份有限公司&#xff08;&#xff08;股票代码&#xff1a;603661以下简称为“恒林家居”&#xff09;携手纷享销客在湖州召开了CRM项目启动会。双方领导及核心项目人员齐聚一堂&#xff0c;展开了深度交流并达成了重要共识。 作为家居行业的领军企业…...

多线程-锁的种类

1 作用 Java中的锁主要用于保障多并发线程情况下数据的一致性。在多线程编程中为了保障数据的一致性&#xff0c;我们通常需要在使用对象或者方法之前加锁&#xff0c;这时如果有其他线程也需要使用该对象或者该方法,则首先要获得锁,如果某个线程发现锁正在被其他线程使用,就会…...

Hive 和 HDFS、MySQL 之间的关系

文章目录 HiveHDFSMySQL三者的关系 Hive、MySQL 和 HDFS 是三个不同的数据存储和处理系统&#xff0c;它们在大数据生态系统中扮演不同的角色&#xff0c;但可以协同工作以支持数据管理和分析任务。 Hive Hive 是一个基于 Hadoop 生态系统的数据仓库工具&#xff0c;用于管理和…...

【面试题】如何实现数组去重的?有几种方式?

前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 【国庆头像】- 国庆爱国 程序员头像&#xff01;总有一款适合你&#xff01; 1. 方法一&#xff1a;利用两层循环数组的splice方法 通过两层循环对数组…...

使用TCP方式拉取Canal数据

1 Canal对接Kafka联调 1.1 配置修改 canal.properties 修改 zk&#xff1a; canal.zkServers 10.51.50.219:2181instance.properties 开启配置项&#xff1a; canal.mq.dynamicTopic 是 Canal 的 MQ 动态 Topic 配置项&#xff1a; test_javaedge_01 是kafka 的 topicte…...

Docker安装mysql实战说明

安装前准备 在安装MySQL之前&#xff0c;你需要确保已经正确安装和配置了Docker&#xff0c;可以通过以下命令检查Docker是否已正确安装&#xff1a; docker --version如果Docker已经成功安装&#xff0c;你将看到Docker的版本信息。 下载mysql的镜像 Docker Hub是一个存储…...

深圳做网站做app/友情链接只有链接

var viewer new Cesium.Viewer("cesiumContainer", { animation: false, //动画控制不显示 timeline: false, //时间线不显示 fullscreenButton: false, //全屏按钮不显示 infoBox: false }); //去除版权…...

b2c购物商城网站建设/360推广登录入口

这些什么绑定都是从Borland中学来的&#xff0c;MVVM只是冠上新名称而于&#xff0c;不是什么新技术。依稀记得是微软挖了Delphi一位重量级的人员后&#xff0c;这些东西加进了IDE。如果从数据流来讲&#xff0c;绑定只是减轻了前台显示的编写工作而于。等到你想写更自定式的东…...

怎么做可以看外国视频网站/最近的新闻大事

Docker-compose overview 文章目录Docker-compose overview1. 简介2. 使用步骤3. 生命周期4. 特色1. 简介 docker-ompose 是一个用于定义和运行多容器 Docker 应用程序的工具。使用 docker-compose&#xff0c;您可以使用 YAML 文件来配置应用程序的服务。然后&#xff0c;使用…...

wordpress 开发搜索框/结构优化是什么意思

这里的问题是,你的br元素之间唯一分离的是文本. CSS中的兄弟组合器忽略了元素之间的所有非元素节点,包括(但不限于)注释,文本和空格,因此就CSS而言,所有段落中都包含五个连续的br子元素&#xff1a;也就是说,每个段落中第一个之后的每个br都是br br(并且扩展为also a br ~ br).…...

武汉电脑网站制作公司/活动推广朋友圈文案

这是JavaScript快捷函数系列文章的目录 Javascript函数一共可以分为六大类&#xff1a; 常规函数 数组函数 字符串函数 对象函数&#xff08;原型&#xff09; 数学函数 日期函数 Refer: javascript常用方法函数收集: http://www.css88.com/archives/5180 (有一部分实现代码可以…...

福州网站建设/emlog友情链接代码

数据结构C语言版清华大学严蔚敏&#xff08;学习笔记总结1&#xff0c;代码在下面&#xff09;——顺序表、链表、循环链表、双向链表、结点的插入删除&#xff08;前面是笔记方便理解&#xff0c;最下面有详细代码&#xff09;_玛卡巴卡的博客-CSDN博客 串&#xff08;即字符…...