进程线程协程是什么意思(线程和协程的理解以及它们的区别)
进程线程协程是什么意思(线程和协程的理解以及它们的区别)
2024-11-05 11:30:56  作者:永恒的诺言  网址: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-06原神中的草神可能为一男一女我已经有过一次旅行所以,你也要像我一样抵达终点,才能在自己的眼中,留下这个世界的沉淀大家好,我是boyue,感谢打开这篇原神游戏文boyue会经常分享一些原神资讯与攻略给大家,希望大家能够早日打败ch。
  • 每个人都有一个属于自己的故事(每个人都有自己的故事)
  • 2024-11-06每个人都有自己的故事喜欢这一句歌词:白月光,心里某个地方,那么亮,却那么冰凉,每个人,都有一段悲伤,想隐藏,却在生长……写歌的人用了脑,唱歌的人用了心,听歌的人动了情,有故事的人流下了泪很多时候,不怕音乐太好听,就怕歌词。
  • 长沙城轨站内换乘地铁(长沙这个地铁站旁已增设公交站)
  • 2024-11-06长沙这个地铁站旁已增设公交站长沙晚报掌上长沙7月15日讯(全媒体记者聂映荣实习生苏虹)日前,《长沙晚报》报道,长沙地铁6号线象鼻窝站离相邻的公交站太远,两个方向的公交站与地铁站出入口分别相隔450米及652米乘客换乘极为不便,在。
  • 紫米和黑米的区别是什么(有关紫米和黑米的区别)
  • 2024-11-06有关紫米和黑米的区别颜色不同:黑米外表墨黑,营养丰富,有“黑珍珠”和“世界米中之王”的美誉;紫米是水稻中的一种,因碾出的米粒细长呈紫色,故名产地不同:黑米在我国不少地方都有生产,具有代表性的有陕西黑米、贵州黑糯米、湖南黑。
  • 小老鼠泡油治烫伤(奶奶用老鼠熬油治孩子烫伤导致感染)
  • 2024-11-06奶奶用老鼠熬油治孩子烫伤导致感染来源:河南广电-映象网癞蛤蟆煲汤治感冒、生吞蝌蚪强身健体、皮肤涂墨水消除疱疹......你相信偏方治大病吗?真相是,有的偏方不仅不能治病还可能会致命!11月30日,#奶奶用老鼠熬油治孩子烫伤致感染#话。
  • 江小白有哪几种包装(土特产怎么变成了新消费)
  • 2024-11-06土特产怎么变成了新消费订阅快刀财经▲做您的私人商学院江小白属于重庆高粱酒,是重庆土壤里生长出来的土特产但越是本土的,越拥有国际化基因作者:快刀财经来源:快刀财经(ID:kuaidaocaijing)酒,本质上是农产品从重庆。
  • csol如何降低延迟(CSOL有多照顾挂机玩家)
  • 2024-11-06CSOL有多照顾挂机玩家在CSOL生化模式和大灾变里面,玩家能看得最多的是什么,毫无疑问,肯定是挂机玩家,现在的CSOL挂机玩家已经算是非常普遍的存在,以前,动辄也就三四个挂机,现在呢,不好意思,一群人挂机都是有可能的,甚至。
  • 猫咪最容易被误解的4个行为(猫咪这几种行为竟是在)
  • 2024-11-06猫咪这几种行为竟是在在养猫的过程中,猫咪或多或少都会犯些错误而很多猫咪在犯错后,都会心虚、会跟主人道歉猫咪这几种行为竟是在道歉,很多铲屎官还不知道!打哈欠有时候猫咪犯错了,铲屎官在训斥它时,它的眼睛会到处看,还会做出打哈。
  • 水磨石的石头是大的好还是小的好(曾经随处可见的)
  • 2024-11-06曾经随处可见的文✎七爷编辑✎七街酒舍说起水磨石,在当年可是制霸学校的存在,不管是上小学,初中还是高中,陪伴我们的永远都是红白石子铺成的水磨石地坪不仅是学校,在上个世纪50年代到80年代,全国各地的公园、车站、商场、。
  • 入门级跑者的跑步训练方法(跑者运用好10公里4种练法)
  • 2024-11-06跑者运用好10公里4种练法在大众跑者的跑步训练中,跑10公里是一个相当普遍的训练量,10公里左右有一定的量和强度的刺激,同时又不会耗时过长体力消耗过大,所以10公里成为很多跑者日常训练的常见跑量充分利用好10公里跑,提升10公。
  • 卤肉的卤水怎么做的好(卤肉技术配方及卤水做法)
  • 2024-11-06卤肉技术配方及卤水做法做卤水是一门科学,食材的处理,烹饪经验,卤料的物理性质,卤水的处理,等等这些,都要把控好,这样才能做出一锅好的卤肉,细节决定味道,我把我自己的卤水技术配方,和经验分享给大家,大家按照我配方操作,就能做。