基本认知
如上图,在任务管理器的进程一栏里,有道词典和有道云笔记就是进程,而在进程下又有着多个执行不同任务的线程。
进程
- CPU正在进行的一个任务的运行过程的调度单位
- 浏览器是一个多进程的应用程序
- 进程是计算机调度的基本单位
- 进程包含线程,线程在进程中运行
- 没有进程就没有线程
- 为什么分进程:进程之间耦合低,chrome一个tab就是一个单独进程,单个tab卡死不会影响其他tab页面的工作
- 任务管理器(mac活动监视器)查看chrome的进程情况
- 每一个tab都会开启一个进程
- 浏览器有一个主进程(用户界面:指的是整个浏览器的界面,地址栏、标签栏、页面内容...)
- 每一个 tab 各自有独立的:
- 渲染进程(浏览器内核Renderer,渲染引擎)
- 网络进程(网络请求)
- GPU进程(动画与3D绘制 e.g. css3动画开启GPU加速就用的这个进程)
- 插件进程(vue devtool 等 chrome 插件)
- 每个进程里包含多个线程运行
渲染进程
- 包含
- GPU 渲染线程(渲染页面)
- JS 引擎线程
- 运行互斥
⇒ 渲染引擎线程
- 解析 HTML,CSS
- 构建 DOM、CSSOM / Render 树
- 初始布局与绘制