进程线程协程是什么意思(线程和协程的理解以及它们的区别)
进程线程协程是什么意思(线程和协程的理解以及它们的区别)
2024-09-27 08:52:24  作者:永恒的诺言  网址:https://m.xinb2b.cn/sport/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-09-28电脑基本操作的步骤首先需要学会正确的开关机,主机的开关机键与重启(restart)按键熟悉鼠标,左键:单击选中,双击打开,点住不松时移动鼠标可以拖动文件右键:光标移动到待选文件上,单机右键会出现一些功能操作,包括:复制。
  • 我的世界海洋之心怎么用(海洋之心使用方法)
  • 2024-09-28海洋之心使用方法我的世界中一个海洋之心与八个鹦鹉螺壳可以合成一个导管,用海晶石和海晶灯搭成一个5×5的框架,并把导管放在框架中间,这样就可以激活导管,被激活的导管会为一定范围内的玩家可获得夜视与水下呼吸能力,该核心只。
  • 翡翠手镯有裂纹能戴吗(翡翠手镯有裂纹怎么办)
  • 2024-09-28翡翠手镯有裂纹怎么办首先看到翡翠手镯出现裂纹的情况,如果手镯上出现的裂纹比较小,这时候我们还是可以进行佩戴的,对整体外观的影响并不是很大,不过需要注意的是,避免手腕与手镯裂纹接触时造成划伤也可以去选择找专人对裂纹处进行描。
  • 雅马哈福颖实车(全新YAMAHA福禧X突然更新)
  • 2024-09-28全新YAMAHA福禧X突然更新最新一批工信部目录中我们看到了一台久违的车款,上一次它的出现还是在2012年此后就被新福禧125所代替,时隔多年雅马哈再次更新福禧X显然有些意外,而当年福禧X也拥有不少忠实的粉丝,接下来让我们一起来看。
  • 男朋友来家里吃饭应该做什么菜(头一次去男朋友家里)
  • 2024-09-28头一次去男朋友家里谈恋爱一直都是一件很浪漫的事情,但是对于两个人来说,不可能一直处在谈恋爱的阶段丽丽和男朋友已经在一起三年了,两个人也一直没有见过双方的家长、就在前几天,男朋友邀请她去家里吃饭,可能两个人觉得也已经到了。
  • 南方旅游必去十大城市
  • 2024-09-28南方旅游必去十大城市南方必去的旅游城市广东广州,广西壮族自治区老街道,厦门,三亚的大东海湾,月亮湾,广东珠海,珠海的香洲,浙江的上有天堂,下有苏杭的杭州,还有就是桂林山水甲天下的桂林,旅游古城丽江,云南的洱海,厦门鼓浪屿。
  • 猪血做法家常菜
  • 2024-09-28猪血做法家常菜食材豆腐2块猪血250g生菜100g油适量盐适量郫县豆瓣酱1勺高汤适量姜末适量蒜末适量干辣椒适量方法1猪血用水浸泡2豆腐用水冲洗后切块3生菜洗净待用4高汤适量5锅内烧开水,下白豆腐焯水,去除豆腥味6将。
  • 播音配音有什么练习(配音播音员语言技术的特点和要求有哪些)
  • 2024-09-28配音播音员语言技术的特点和要求有哪些  普通话是广播电视专用语言,播音配音要求录音人员们需要字正腔圆,吐字清晰,声音圆润饱满在配音行业对配音员、播音员和主持人都必须掌握语言技术的基本要求  我国播音主持教育培训条例规定,从事播音主持工作。
  • 最近5年tvb优秀剧(精选10套TVB遗珠剧你刷过几部)
  • 2024-09-28精选10套TVB遗珠剧你刷过几部虽然现在大台经常被人批评制作「是是旦旦」,看电视就好像玩游戏逐格捉一样,随时会找到「穿崩」位但无可否认,过往的TVB的确是制作出很多脍炙人口的作品,电视汁配饭更是很多人的童年写照即使到了现在,网上仍有。
  • 创业必须先注册公司(创业者必需知道的事)
  • 2024-09-28创业者必需知道的事欢迎来到永瑞E课堂,今天要与大家分享的主题是《公司注册的流程及资料》创业第一步,就是开公司拿一般有限公司为例,注册一家公司大约需要五步第一步:核名第二步:提交资料第三步:领取营业执照第四步:刻章备案第。
  • 女生宿舍的真相完结(TXT全睡在同一间房间)
  • 2024-09-28TXT全睡在同一间房间BigHit推出的全新男团TXT,最近都在积极上节目跑宣传,近日他们出演了节目《AfterSchoolClub》时,就谈到了宿舍生活,原来五位成员都睡在同一间房间哦!秀彬说:「房间里放了三个双层床,我。