【操作系统】聊聊进程、线程、协程
进程内部有那些数据
为什么创建进程的成本高
进程和线程
进程是资源分配的基本单位,而线程是程序执行的基本单位,一个是从资源分配的角度看,另一个是执行角度。
那么进程和程序的区别是什么?
程序,一段代码,一组指令的有序集合。
进程:程序的一次动态运行,通过进程控制块唯一的标识这个进程。
进程:动态,有资源,有唯一标识,有并发性;
程序:静 态,无资源,无唯一标识,无并发性。

进程是操作系统从安全角度出发进行设计的隔离单位,但是进程在使用的时候,unix是通过fork,先clone,然后在使用,这个设计其实不是很优雅。
线程的出现本质是为了解决同一个软件内会有多个任务的需求,这些任务在相同的地址空间,可以相关操作资源。
协程与goroutine
进程和线程其实对于大多数非高性能服务来说,其实是没问题,但是目前主流的互联网应用基本都是高性能网络服务。
正常情况下的线程模式

大多数的请求都是因为在存储这部分被阻塞,其中包含如下
- 系统调用机制的开销
- 数据多次拷贝 内核态到用户态
- 线程的空间和时间成本。
而为了提升网络服务器的吞吐能力,目前使用的是epoll,基本就是通过IO多路复用机制实现,少等待,统一的一个线程查询谁处理完,然后去通知处理。而本质是通过减少了线程。系统调用和内存拷贝并没有减少。
线程的成本
时间成本
- 切换本身的开销,寄存器保存和恢复的成本
- 调度开销,
- 同步与互斥成本
空间成本
- 执行体的执行状态
- TLS(线程局部存储)
- 执行体的堆栈
所以综上所属,协程解决的问题是
- 回归到同步IO的编程模式
- 降低执行体的空间和时间成本
协程的本质就是用户态下的线程。
Go语言中goroutine。
- 堆栈自动增长
- 没有线程局部存储
- 同步、互斥和通信
- 提供了重要的系统调用的包装
状态
进程状态
- 创建
- 就绪
- 运行
- 阻塞
其实创建、就绪、运行比较好理解,阻塞比较难理解,
阻塞其实就是当进程需要等待网络IO或者本地IO的时候,需要等待结果,只能一直等待。


小结
本篇主要介绍了进程、线程、协程,以及进程的状态,其实和线程也是通用的。
相关文章:
【操作系统】聊聊进程、线程、协程
进程内部有那些数据 为什么创建进程的成本高 进程和线程 进程是资源分配的基本单位,而线程是程序执行的基本单位,一个是从资源分配的角度看,另一个是执行角度。 那么进程和程序的区别是什么? 程序,一段代码ÿ…...
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)》,纷享销客凭借先进的技术能力和十余年客户业务场景应用理解…...
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提取视频中的音频 将视频中的音频轨道分离出来,生成 wav 文件播放或下载( Vue3 setup ) 代码实现 template <button><label for"file" id"filename">选择视频文件</label><input type"fi…...
设计模式-备忘录模式(Memento Pattern)
文章目录 前言一、备忘录模式的概念二、备忘录模式的实现三、备忘录优缺点优点:缺点:总结 前言 备忘录模式(Memento Pattern)是一种行为型设计模式,它用于捕获和存储对象的内部状态,以便在以后可以恢复到先…...
PHP对接阿里云虚拟号的实现(号码隐私保护)
fastadmin 封装框架 实现功能:AXN隐私号绑定、解绑; 场景:为店铺手机号开通虚拟号,用户联系店铺展示虚拟号码; 官方开放文档地址:https://help.aliyun.com/document_detail/59655.html?spma2c4g.111742…...
刷新单年发射纪录:SpaceX成功发射62次猎鹰9号火箭
SpaceX一直都致力于推进航天领域的发展。近日,该公司的猎鹰9号火箭再次刷新了单年发射纪录,目前已经成功发射了62次。除此之外,今年SpaceX还发射了一枚猎鹰火箭和一枚巨型火箭。马斯克表示,他的目标是实现每月10次猎鹰飞行&#x…...
Youtu-Parsing解析古籍与历史档案:助力文化遗产数字化与检索
Youtu-Parsing解析古籍与历史档案:助力文化遗产数字化与检索 你有没有想过,那些躺在博物馆或图书馆深处、纸张泛黄、字迹模糊的古籍和历史档案,如何才能被更多人方便地查阅和研究?过去,这需要研究者花费大量时间&…...
Graphviz自动排版太随机?教你5个技巧精准控制节点位置
Graphviz自动排版太随机?5个专业技巧精准控制节点位置 当你用Graphviz绘制关系图时,是否遇到过这样的困扰:明明代码逻辑清晰,生成的图表却总是不按预期排列?节点位置随机跳跃,关键元素错位,甚至…...
DriverStore Explorer:释放磁盘空间的开源驱动管理工具
DriverStore Explorer:释放磁盘空间的开源驱动管理工具 【免费下载链接】DriverStoreExplorer Driver Store Explorer [RAPR] 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 1. 诊断驱动膨胀:3个隐藏原因解析 你的C盘空间是…...
Phi-3-mini-128k-instruct实战案例:中小企业技术文档自动解析与结构化提取
Phi-3-mini-128k-instruct实战案例:中小企业技术文档自动解析与结构化提取 1. 项目背景与价值 对于中小企业而言,技术文档管理一直是个令人头疼的问题。工程师们经常需要从大量PDF、Word文档中提取关键信息,手动整理成结构化数据。这个过程…...
Web AR开发全指南:从技术原理到实战应用
Web AR开发全指南:从技术原理到实战应用 【免费下载链接】AR.js Image tracking, Location Based AR, Marker tracking. All on the Web. 项目地址: https://gitcode.com/gh_mirrors/arj/AR.js 随着增强现实技术的发展,Web AR开发已成为前端领域的…...
开发效率翻倍:用快马智能推荐最佳排序算法,告别性能焦虑
今天想和大家分享一个提升开发效率的实用技巧——如何快速找到最适合当前场景的排序算法。作为开发者,我们经常需要处理各种排序需求,但面对不同规模、不同特征的数据集时,如何选择最优算法往往让人头疼。 数据准备阶段 在实际项目中…...
双阶段目标检测算法演进:从R-CNN到Mask R-CNN的技术突破与应用实践
1. 双阶段目标检测算法概述 目标检测是计算机视觉领域的核心任务之一,它不仅要识别图像中的物体类别,还要精确定位物体的位置。在众多目标检测算法中,双阶段检测算法因其高精度特性,一直是工业界和学术界的研究热点。这类算法的典…...
CHORD-X从零开始:C语言基础概念学习报告自动生成教程
CHORD-X从零开始:C语言基础概念学习报告自动生成教程 你是不是也遇到过这样的烦恼?作为编程老师,每次讲完C语言的指针、结构体这些难点,总想给学生一份清晰易懂的复习报告,但自己动手整理又太花时间。或者,…...
Ludusavi:你的游戏进度守护神,三分钟搞定跨平台存档备份
Ludusavi:你的游戏进度守护神,三分钟搞定跨平台存档备份 【免费下载链接】ludusavi Backup tool for PC game saves 项目地址: https://gitcode.com/gh_mirrors/lu/ludusavi 你是否曾在电脑崩溃后,发现数百小时的游戏进度瞬间归零&…...
效率提升:基于快马平台快速集成openclaw开发局域网协作工具
最近在团队协作开发中遇到了一个痛点:每次新成员加入局域网时,都需要手动配置设备信息才能互相访问,文件共享和实时沟通也依赖第三方工具,效率很低。于是尝试用openclaw结合InsCode(快马)平台快速搭建了一套本地化协作工具&#x…...
