写作不易,Star是最大鼓励,感觉写的不错的可以给个Star⭐,请多多指教。本博客的Github地址

CPU

CPU是计算机的核心,它承担了所有的计算任务。它就像一座工厂,时刻在运行。

进程

假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。背后的含义就是,单个CPU一次只能运行一个任务。

进程就好比工厂的车间,它代表CPU所能处理的单个任务。进程之间相互独立,任一时刻,CPU总是运行一个进程,其他进程处于非运行状态。CPU使用时间片轮转进度算法来实现同时运行多个进程。

线程

一个车间里,可以有很多工人,共享车间所有的资源,他们协同完成一个任务。

线程就好比车间里的工人,一个进程可以包括多个线程,多个线程共享进程资源。

单线程

所谓单线程就是:一个进程只开一个线程。

CPU、进程、线程之间的关系

从上文我们已经简单了解了CPU、进程、线程,简单汇总一下。

  1. 进程是cpu资源分配的最小单位(是能拥有资源和独立运行的最小单位)。
  2. 线程是cpu调度的最小单位(线程是建立在进程的基础上的一次程序运行单位,一个进程中可以有多个线程)。
  3. 线程是隶属于进程的,被包含于进程之中,一个线程只能隶属于一个进程,但是一个进程是可以拥有多个线程的
  4. 不同进程之间也可以通信,不过代价较大。
  5. 单线程与多线程,都是指在一个进程内的单和多。

浏览器是多进程的

我们已经知道了CPU、进程、线程之间的关系,对于计算机来说,每一个应用程序都是一个进程,而每一个应用程序都会分别有很多的功能模块,这些功能模块实际上是通过子进程来实现的。对于这种子进程的扩展方式,我们可以称这个应用程序是多进程的。

而我们常用的Chrome浏览器就是多进程的,比如说在Chrome浏览器中打开了多个tab页面,每一个tab页面就是一个独立的进程。

浏览器包含哪些进程

主进程

协调控制其他子进程(创建、销毁) 浏览器界面显示,用户交互,前进、后退、收藏 将渲染进程得到的内存中的Bitmap,绘制到用户界面上 处理不可见操作,网络请求,文件访问等

第三方插件进程

每种类型的插件对应一个进程,仅当使用该插件时才创建

GPU进程

用于3D绘制等

渲染进程,就是我们说的浏览器内核

负责页面渲染,脚本执行,事件处理等 每个tab页一个渲染进程

那么浏览器中包含了这么多的进程,那么对于普通的前端操作来说,最重要的是什么呢? 答案是渲染进程,也就是我们常说的浏览器内核

浏览器内核(渲染进程)

参考文档

  1. 从多线程到Event Loop全面梳理
  2. 深入理解Node.js 中的进程与线程
  3. 「硬核JS」一次搞懂JS运行机制