进程线程协程是什么意思(线程和协程的理解以及它们的区别)
进程线程协程是什么意思(线程和协程的理解以及它们的区别)
2024-11-25 09:40:18  作者:永恒的诺言  网址:https://m.xinb2b.cn/life/fei233298.html
一、进程#

先来了解一下操作系统的进程:

操作系统对正在运行程序的抽象,这个就是进程(process)。

比如运行一个 web 浏览器,一个 text 文本,都是运行的一个一个进程。

有的人说:进程是程序运行资源的集合。进程是系统资源分配的最小单位等等。

从静态的角度来说,进程确实是运行程序的各种资源集合。

如果你进一步思考,进程里的各种资源都有哪些呢?如下图所示:


(图1:进程资源)

内存管理相关

文件系统

调度相关

信号处理

内核栈

进程各种状态

进程运行时统计信息

进程标识

等等。

可以看出,进程中的资源是相当多的。

从 Linux 操作系统对进程的定义也可以看出。我以前对进程结构 task_struct 分析文章:Linux进程: task_struct结构体成员

多进程:操作系统有多个程序运行,那么就有多个进程,如下所示简图:


​ (图2:多进程简图)

二、线程#2.1 什么是线程?#

《操作系统设计与实现》里说:

在传统操作系统中,每个进程中只存在一个地址空间和一个控制流(thread)。

然后,有些情况下,需要在相同地址空间中有多个控制流并行的运行,就像他们是单独的进程一样(只是他们共享相同的地址空间)。

这些控制流通常被称为线程(thread),有时也称为轻量级进程(lightweight process)。

尽管线程必须在进程中执行,但是线程和进程是可以分别对待处理的两个概念。进程用来集合资源,而线程是 CPU 调度的实体。

线程给进程模型增加的是,允许在同一个进程环境中有多个执行流,这些执行流在很大程度上相对独立。

也即是说,在进程中,程序执行的最小单位(执行流)是线程,可以把线程看作是进程里的一条执行流。

一个进程里可以有一条或多条线程。


​ (图3:进程里的线程)

2.2 为什么会有多线程?#

在一个应用程序执行过程中,应用程序里可能会有多种事件执行。

而有些事件执行一段时间后可能会被阻塞。如果把应用程序执行事件分解成多个并行运行的线程,即可以让程序设计变得简单,如果有阻塞的,

可以把这部分让出行换其他线程执行。

还有一个原因是:

线程比进程更轻量级。所以线程比进程更加容易创建,销毁。

第三个跟第一个有点关系,是关于性能的,若多线程都是 CPU 密集型的,那么不能获取性能上增强。如果有大量计算和大量 I/O 处理,那么

多线程就可以获取性能上的优势,因为允许多线程重叠执行。

多线程的缺点:

对于多线程来说,进程中的资源是共享的,所以会产生资源竞争。当进程中的一个线程崩溃了,会导致这个进程里的其他线程也崩溃。所以有时多进程程序更好,一个进程崩溃不会导致其他进程也崩溃。

三、进程与线程区别#

从上面进程和线程介绍知道,线程是程序执行流的最小单位,进程是操作系统分配资源的单位。

进程与进程之间关系:

进程与进程之间是相互独立的。

线程与进程关系:

线程是进程里的执行流,进程里的线程可以是一个,也可以是多个。

所有线程共享进程里一些资源,比如代码,数据,地址空间,信号处理,打开文件,全局变量等。

同时,线程也有自己的寄存器,程序计数器,堆栈,线程状态等


​ (图4:进程与线程关系)

四、协程#

协程是建立在线程之上,一般是语言级别的 ”多线程“ 模型,比线程更加的轻量级。有的叫它微线程。它是完全运行在用户态里。

协程是在线程之上在进行抽象,它需要线程来承载运行。一个线程可以有多个协程。

比如 Go 语言的 goroutine,它用一个关键字 go 就可以运行一个协程程序。

在 Go 语言里面,协程是由 Go 提供的 runtime 来控制和调度。

协程的优点:

协程栈很小,只有几KB,而线程栈是 1 M,对比起来,创建大量协程需要的内存更少。协程的调度是语言提供的 runtime 来调度,是在用户空间直接调度,不需要在内核空间和用户空间来回切换,浪费效率。能更好的利用 cpu 的多核,提高程序执行性能。避免阻塞,如果协程所在的线程发生了阻塞,那么协程调度器可以把运行在阻塞线程上的协程,调度到其它没有发生阻塞的线程上,继续运行。五:协程与线程区别#协程是运行在线程之上,一个线程可以有多个协程。就像一个进程里可以有多个线程一样。协程能更好的利用多核机制。比如 Go 协程可以控制运行在多少个 CPU 的核上。协程是在用户空间完成调度,由语言提供的 runtime 进行调度完全用户态。线程由内核调度。协程使用内存更小。

文章来自https://www.cnblogs.com/jiujuan/p/16193142.html

  • 活化肌肤的洗面奶排行(推荐口碑好的洗面奶)
  • 2024-11-25推荐口碑好的洗面奶推荐口碑好的洗面奶:让你洗脸的同时给予肌肤润泽、光泽与弹力!芙丽芳丝净润洗面霜同样是非常棒的氨基酸洁面,配方简单安全,非常适合皮肤敏感的仙女使用,香味是有些奶香,泡沫也很丰富,这么多人为它打call还。
  • 做试管有没有一直不成功的(关于做试管的8条建议)
  • 2024-11-25关于做试管的8条建议正所谓“前人栽树后人乘凉”,一件复杂事物的简单化,靠的是时间的累积和不断的摸索,生活中那些非常实用的技巧,亦是“前人”用自己的失败和教训换来的经验,而做试管也是如此!要知道,试管这项技术来到中国已经有。
  • 最年轻小学高级教师(杭州长河高中这7位教师为何那么受欢迎)
  • 2024-11-25杭州长河高中这7位教师为何那么受欢迎近日,在2021年度杭州市本级直属学校“20年班主任荣誉证书”认定中,杭州市长河高级中学的蔡叶桢、余曙辉、周远新、杨春林、洪亚兰、祝毅、朱柏夫老师获此荣誉,在全杭州市45名“20年班主任”教师中占据7。
  • 钱财都是身外之物好好珍惜人生吧(钱乃身外之物有钱也好)
  • 2024-11-25钱乃身外之物有钱也好钱,乃身外之物;生,带不来;死;带不去;勤勤恳恳人世间;忙忙碌碌一辈子;有钱也好;没钱也罢;活着就是咱的福气;健康就是咱的运气;只有懂得珍惜当下的自己;才会懂得珍惜现在的人生!人生在世,活着别比钱多钱。
  • 最终幻想7重制版下载(最终幻想7游戏下载中文版)
  • 2024-11-25最终幻想7游戏下载中文版《最终幻想7:重制版过渡版》已于今日在Epic平台正式发售,国区售价446元另外,这款游戏未使用D加密技术,这简直是一个惊喜,因为几乎所有的SE游戏都使用了D加密虽然未使用D加密,但PC版移植似乎诚意。
  • 驻牙怎么治(如何治疗呢)
  • 2024-11-25如何治疗呢蛀牙在医学上叫龋齿,蛀牙是民间的说法,蛀牙叫起来顺口,听起来也实在蛀牙里面一般不会有虫子的,蛀牙的形成是由于细菌把口腔内的食物消化成酸性物质,酸性物质把病人的牙齿腐蚀掉,慢慢腐蚀然后形成一个个的小洞,。
  • 奥运会和世界杯哪个更有影响力(巴黎奥运会赛程出炉)
  • 2024-11-25巴黎奥运会赛程出炉当地时间4月1日,国际奥委会正式批准通过了2024年巴黎奥运会的比赛项目和赛程在2024年7月26日的奥运会开幕式之后,比赛将于27日全面展开,首金也将会在当日诞生根据赛程安排,巴黎奥运会的首金并非像。
  • 长城除了suv还有别的车吗(长城为何不造轿车只做SUV)
  • 2024-11-25长城为何不造轿车只做SUV2014年长城车企正式宣布停产轿车事业部,在当时国产自主汽车品牌一直不温不火难以立足,而那时的长城魏建军决策选择全力发展SUV产业线时至今日长城SUV车辆车型已然成为中国SUV市场的领军先锋对于长城汽。
  • 未来电子信息专业前景如何(电子信息类专业:虽然很热)
  • 2024-11-25电子信息类专业:虽然很热如果说目前工科类专业中,哪类专业最热,其答案是非常清晰的,那就是电子信息类专业最热,包括电子信息工程、电子信息科学与技术,通信工程、光电信息工程、集成电路设计与集成系统、微电子科学与工程、人工智能、数。
  • 什么是羊肉的12个禁忌(恰饭说最近羊肉降价20)
  • 2024-11-25恰饭说最近羊肉降价20钱江晚报·小时新闻记者施雯10月上市,清明下市,羊肉是所有畜禽产品中比较特殊的季节限定肉类最近,杭州五和肉类交易市场里,羊肉价格从去年11月的29-30元/公斤,下滑到了24-25元/公斤,市场每天交。