进程、线程与多核、多CPU之间的关系

进程、线程与多核、多CPU之间的关系,第1张

CPU架构和工作原理计算机有 5 大基本组成部分,运算器,控制器,存储器,输入和输出。运算器和控制器封装到一起,加上寄存器组和 CPU 内部总线构成中央处理器(CPU)。CPU 的根本任务,就是执行指令,对计算机来说,都是 0 1 组成的序列,CPU 从逻辑上可以划分为 3 个模块:控制单元、运算单元和存储单元。这三个部分由CPU总线连接起来。

进程、线程与多核、多CPU之间的关系,图片,第2张

CPU 的运行原理就是:控制单元在时序脉冲的作用下,将指令计数器里所指向的指令地址(这个地址是在内存里的)送到地址总线上去,然后 CPU 将这个地址里的指令读到指令寄存器进行译码。对于执行指令过程中所需要用到的数据,会将数据地址也送到地址总线,然后 CPU 把数据读到 CPU 的内部存储单元(就是内部寄存器)暂存起来,最后命令运算单元对数据进行处理加工。周而复始,一直这样执行下去。多核CPU和多CPU架构

多个物理 CPU。CPU 通过总线进行通信,效率比较低。

进程、线程与多核、多CPU之间的关系,图片,第3张

多核 CPU。不同的核通过 L2 cache 进行通信,存储和外设通过总线与 CPU 通信。

进程、线程与多核、多CPU之间的关系,图片,第4张

CPU的缓存

CPU 缓存是位于 CPU 与内存之间的临时数据交换器,它的容量比内存小的多但是交换速度却比内存要快得多。CPU 缓存一般直接跟 CPU 芯片集成或位于主板总线互连的独立芯片上。

进程、线程与多核、多CPU之间的关系,图片,第5张

随着多核 CPU 的发展,CPU缓存通常分成了三个级别:L1,L2,L3。级别越小越接近 CPU,所以速度也更快,同时也代表着容量越小。

L1 是最接近 CPU 的, 它容量最小(例如:32K),速度最快。每个核上都有一个 L1 缓存,每个核上其实有两个 L1 缓存, 一个用于存数据的 L1 d-Cache(Data Cache),一个用于存指令的 L1 i-Cache(Instruction Cache)。

L2 缓存 更大一些(例如:256K),速度要慢一些, 一般情况下每个核上都有一个独立的 L2 缓存。

L3 缓存是三级缓存中最大的一级(例如:3MB),同时也是最慢的一级, 在同一个 CPU 插槽之间的核共享一个 L3 缓存。

读取数据过程。就像数据库缓存一样,首先在最快的缓存中找数据,如果缓存没有命中(Cache miss) 则往下一级找, 直到三级缓存都找不到时,向内存要数据。一次次地未命中,代表取数据消耗的时间越长。

计算过程。程序以及数据被加载到主内存;指令和数据被加载到 CPU 的高速缓;CPU 执行指令,把结果写到高速缓存;高速缓存中的数据写回主内存。

进程线程进程

进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,

线程

线程是CPU调度和分派的基本单位,它可与同属一个进程的其他的线程共享进程所拥有的全部资源。

联系

线程是进程的一部分,一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。

区别

理解它们的差别,从资源使用的角度出发。(所谓的资源就是计算机里的中央处理器,内存,文件,网络等等)

根本区别

进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位

在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。

所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过 CPU 调度,在每个时间片中只有一个线程执行)

内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。

包含关系:没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻量级进程。

进程和线程在多核CPU,多CPU中的运行关系

操作系统会拆分 CPU 为一段段时间的运行片,轮流分配给不同的程序。对于多 CPU,多个进程可以并行在多个 CPU 中计算,当然也会存在进程切换;对于单 CPU,多个进程在这个单CPU中是并发运行,根据时间片读取上下文+执行程序+保存上下文。同一个进程同一时间段只能在一个CPU中运行,如果进程数小于CPU数,那么未使用的CPU将会空闲。

多线程的概念主要有两种:一种是用户态多线程;一种是内核态多线程。对于内核态多线程,在操作系统内核的支持下可以在多核下并行运行;

对于多核 CPU,进程中的多线程并行执行。对于单核 CPU,多线程在单 CPU 中并发执行,根据时间片切换线程。同一个线程同一时间段只能在一个 CPU 内核中运行,如果线程数小于 CPU 内核数,那么将有多余的内核空闲。


本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 进程、线程与多核、多CPU之间的关系

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情