一文搞懂计算机的CPU核心、进程和线程

CPU

CPU就是中心处理器。cmd输入[systeminfo]命令查看当前物理CPU信息。

总体来说,物理CPU是实际存在的硬件处理器,虚拟CPU是在虚拟化环境中用于管理和分配处理器资源的抽象概念。

物理CPU

物理概念上: 一个电脑一般只有一个CPU,每个物理CPU通常包括一到多个处理核心,处理核心用来执行计算机程序中的指令。物理CPU的性能和规格(核心数量、时钟速度等)直接影响计算机的整体性能。

虚拟CPU

虚拟化环境中使用的概念,模拟了物理CPU的能力。一个物理CPU被切割成了多个虚拟CPU,每个虚拟CPU可以被分配给不同的虚拟机实例。

虚拟CPU在物理CPU上以时间片轮转的方式运行,可以实现多个虚拟机的并发执行,而虚拟CPU的数量和性能也会受到物理CPU的限制。

处理器内核

cmd窗口输入[wmic]后,输入cpu get NumberOfCores获取物理核心数,cmd窗口输入[wmic]后,输入cpu get NumberOfLogicalProcessors获取逻辑核心数。

总体来说,逻辑内核的存在可以提高处理器的线程并发性能,但不等同于物理内核,因为他们共享物理内核的资源。

物理内核

实际存在于处理器芯片中的处理核心。每个物理内核都有自己的执行单元和缓存,并能独立执行指令。通常说某台电脑是几核处理器就是几个物理核心。

逻辑内核

在物理内核基础上通过超线程技术实现的虚拟处理核心。超线程技术允许单个物理内核模拟出多个逻辑内核,使处理器能同时处理更多线程。每个逻辑内核有自己的执行单元和寄存器集合,但每个逻辑内核共享所依赖的物理内核的执行资源,如缓存和处理器功能单元。通常说某台电脑多少线程就有多少个逻辑内核。

比如某台电脑是8核16线程,就是8个物理内核和16个逻辑内核。

进程

进程就是正在进行中的程序的实例 。每个进程都有独立的内存空间,是CPU进行资源分配的基本单位(能拥有资源和独立运行的最小单位)

进程拥有独立的地址空间,进程间不会相互干扰,每个进程拥有一个或多个线程,这些线程共享相同的进程资源(比如内存空间和进程状态等)。

线程

是指进程内部的线程,而不是处理器的逻辑线程。

线程是进程内部的执行单元,是CPU进行调度执行的基本单位(建立在进程基础上的一次程序运行单位,也可以说是一条指令) 。而单线程和多线程的概念也指的是在同一进程内的单和多~

对于CPU内核(通常指处理器的物理内核)来说,没有进程线程的概念,只有正在执行的指令,同一个CPU内核一次只能执行一条指令,而这条指令就是进程概念下的线程。

浏览器的进程和线程

1、浏览器应用程序包含多个进程:

  • 浏览器主进程(tab页的管理、网络请求(处理用户的导航行为和整个浏览器窗口的网络通信)、文件访问、地址栏、书签栏、前进后退按钮等的管理)
  • GPU进程
  • 插件进程
  • 浏览器渲染进程(浏览器内核)

多进程能利用CPU的多核优势,同时避免单个页面崩溃和插件进程崩溃影响整个浏览器(多进程之间是互相独立的)。

2、浏览器内核

就是前端经常打交道的部分了,由多个线程组成:

  • GUI渲染线程(解析HTML、CSS、构建DOM树和CSSOM树和Render树,布局和绘制等)
  • JS引擎线程(JS内核,负责处理JS脚本程序),一个tab页面只有一个JS线程在运行JS程序,JS引擎线程与GUI渲染线程互斥
  • 事件触发线程(属于浏览器而不属于JS引擎),主要控制事件循环,比如执行到setTimeout等定时器任务,鼠标点击、AJAX异步请求都会被添加到此线程,对应的事件符合触发条件被触发时,该线程会把事件添加到待处理队列(宏任务)的队尾排队等待JS引擎的处理
  • 定时触发器线程(setTimeout、setInterval所在线程),因为JS引擎是单线程的,如果处在阻塞状态就会影响计时准确。通过此线程进行计时并触发定时器,计时完毕后添加到事件队列,等待JS引擎空闲执行
  • 异步HTTP(AJAX)请求线程(负责处理页面内部的异步操作),异步线程的状态变更事件会触发回调,此回调会进入到事件队列(微任务队列),等待JS引擎执行

3、浏览器渲染进程中的线程和CPU的关系

各个线程在渲染进程中会根据需要进行动态调度和分配 CPU 资源,以实现页面的平滑渲染和快速响应用户操作的目标。

在多核 CPU 系统中,这些线程可以利用多个 CPU 核心进行并行执行,以提高整体的性能和响应速度。需要注意的是,并不是所有的线程都能够完全并行执行,一些线程可能会存在依赖关系或竞争条件,需要通过合适的调度策略来管理。

相关推荐
黑客老陈29 分钟前
新手小白如何挖掘cnvd通用漏洞之存储xss漏洞(利用xss钓鱼)
运维·服务器·前端·网络·安全·web3·xss
正小安34 分钟前
Vite系列课程 | 11. Vite 配置文件中 CSS 配置(Modules 模块化篇)
前端·vite
暴富的Tdy1 小时前
【CryptoJS库AES加密】
前端·javascript·vue.js
neeef_se1 小时前
Vue中使用a标签下载静态资源文件(比如excel、pdf等),纯前端操作
前端·vue.js·excel
m0_748235611 小时前
web 渗透学习指南——初学者防入狱篇
前端
℘团子এ1 小时前
js和html中,将Excel文件渲染在页面上
javascript·html·excel
z千鑫1 小时前
【前端】入门指南:Vue中使用Node.js进行数据库CRUD操作的详细步骤
前端·vue.js·node.js
m0_748250742 小时前
Web入门常用标签、属性、属性值
前端