CPU中的核与进程,线程间的关系讲解(操作系统基础概念)
创始人
2024-02-22 01:42:45
0

CPU中的核与进程,线程间的关系讲解(操作系统基础概念)

CPU中的内核

概念

CPU内核(Die)是CPU中间的核心芯片,由单晶硅制成,用来完成所有的计算、接受/存储命令、处理数据等,是数字处理核心。

各种CPU核心都具有固定的逻辑结果,一级缓存,二级缓存、执行单元、指令级单元和总线接口等逻辑单元都会有科学的布局。

单核和多核的区别

通俗意义上讲,CPU单核就是一个人做同一件事,多核就是多个人同时做同一件事情。

我们知道线程是CPU调度的基本单位,对于单核CPU来说,同一时刻下,只能有一个线程在占用CPU资源进行执行。多个线程之间的切换依靠CPU的调度算法来进行调度。这种多线程间的执行叫做并发执行。

而对于多核CPU来说,每个核心都存在相同的L1、L2、L3缓存结构,相当于每个核心都可以做之前单核下的事情。因此,在同一时刻下,多核CPU就可以同时运行多个线程(同时运行的线程个数取决于CPU核心数),这种多线程间的执行就不是并发了,而是真正的并行执行了。当然,单个核心下执行的线程切换仍然是并发执行的。

CPU多核缓存结构示意图如下所示:
在这里插入图片描述

由以上特性可知,单核和多核处理器在性能方面的特点如下:

  1. 与具有更高时钟频率的多核处理器相比,单核处理器的速度更低
  2. 与单核处理器相比,多核处理器具有更高的效率和更低的能耗
  3. 多核共享内存,而单核则完全独立使用内存
  4. 多核允许线程并行执行,启用指令级并行。

进程和线程的区别与联系

进程是操作系统中资源分配的基本单位。进程是操作系统对正在运行程序的一种抽象,可以将进程看作程序的一次运行。

线程:线程是操作系统中CPU调度执行的基本单位。一个线程是一个“执行流”,每个线程之间都可以按照顺序执行自己的代码,多个线程“同时”执行多份代码。


进程的运行不仅仅需要CPU,还需要很多其他资源,如内存啊,显卡啊,GPS啊,磁盘啊等等,统称为程序的执行环境,也就是程序上下文。

在这里就出现了并发的概念,调度器切换CPU给不同进程使用的速度非常快,于是在使用者看来程序是在同时运行,这就是并发,而实际上CPU在同一时刻只在运行一个进程。

CPU进程无法同时刻共享,但是出现一定要共享CPU的需求呢?此时线程的概念就出现了。线程被包含在进程当中,进程的不同线程间共享CPU和程序上下文。(共享进程分配到的资源)

单CPU进行进程调度的时候,需要读取上下文+执行程序+保存上下文,即进程切换。

由于共享了程序执行环境,这个线程切换比进程切换开销少了很多。在这里依然是并发,唯一核心同时刻只能执行一个线程。也就是上面讲的CPU单核和多核的区别。

如果这个CPU是多核的话,那么进程中的不同线程可以使用不同核心,真正的并行出现了。

线程是CPU调度和分配的基本单位,一定要和 进程是操作系统进行资源分配(包括cpu、内存、磁盘IO等)的最小单位 区别清楚。有句话说CPU只能看到线程,可以这么理解,假设我是CPU,我闭着眼,操作系统调度器将一个进程分配给我之后,我拿到进程睁开眼,我看到的是什么?我看到的是进程中的很多线程,那么我现在能调度和分配的是什么?进程?不行,因为我看不到其他进程,何来调度分配,只能调度我看到的那些线程,如果我是4核的话,把线程ABCD分配到核心1234,其他的线程依然要等待分配,至于等待多久,如何分配,暂不在本文讨论范围。于是线程是CPU调度和分配的基本单位。

最后说一下操作系统内存管理模块这里做的事:在这之前,程序员需要为每个程序安排运行的空间,这里的空间指的是内存的物理地址,但是这么的问题就是,每个程序都要协商如何使用同一内存的不同空间,而且程序员还要关心底层内存分配问题。解决办法就是,提出进程的概念,每个进程用一样的虚拟地址空间,CPU上增加了MMU模块负责转换虚拟地址和物理地址,虚拟地址经过操作系统和MMU之后,虚拟地址会映射到不同的物理地址,不同的进程就能获得各自独立的物理内存空间。

另外在有的操作系统里,进程不是调度单位,线程是最基本的调度单位,调度器只调度线程,不调度进程,如VxWorks。

总结:

资源空间: 进程是资源分配的基本单位,每个进程都会有独立的资源空间。而一个进程中包含多个线程,这些线程共享进程所分配的资源。

地址空间: 同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。

健壮性: 一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。

资源消耗: 进程切换时,消耗的资源大,效率高。所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程

执行过程: 每个独立的进程有一个程序运行的入口、顺序执行序列和程序入口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

调度单位: 进程是系统进行资源分配和调度的基本单位,线程是CPU调度的基本单位。

相关内容

热门资讯

拆迁补贴贪污案,开庭后律师紧急... 文/张家豪律师重庆智豪律师事务所高级合伙人 今天想聊一个很特别的职务犯罪案子,这是一起拆迁补偿领域的...
原创 从... 1854年,清文宗咸丰四年,太平天国的国都天京(今南京)发生了一件震动全国的大事。冬官又正丞相陈宗扬...
香港保监局:就风险为本资本制度... 智通财经获悉,媒体此前报道,香港保监局提议一系列新规,拟引导保险资本流向基础设施等资产,这一举措将把...
库里26+6班凯罗21+12 ... 【搜狐体育战报】北京时间12月23日NBA常规赛,主场作战的勇士以120-97击败魔术。库里26分3...
新日股份5.65亿元合同纠纷二... 12月19日,江苏新日电动车股份有限公司(603787.SH,以下简称“新日股份”)发布诉讼进展公告...
庆阳市预防治理未成年人违法犯罪... 12月22日,市委副书记、市委政法委书记王向阳主持召开全市预防治理未成年人违法犯罪工作推进会议,全面...
大庆法援2025年度成绩单 2025年,大庆市各级法律援助机构在市司法局的领导下,以创新机制激活服务效能,以便民服务打通"最后一...
推进房屋体检制度,确保房子更安... 原标题:工人日报社评丨推进房屋体检制度,确保房子更安全更宜居 工人日报评论员 吴迪 房屋体检制度在各...
行政调解丨“问题种子”导致百亩... 齐鲁晚报·齐鲁壹点记者 李文璇 栾海明 一粒种子,关系着千家万户的“粮袋子”和“钱袋子”。2025...
“十五五”时期民间投资发展的法... “十五五”时期是我国基本实现社会主义现代化的关键时期,要落实《民营经济促进法》,从法律和制度上保障平...