前端面试考点---浏览器进程线程篇

1,724 阅读2分钟

概念解析

  • 进程:操作系统分配调度资源的最小单位,每个软件程序至少一个进程

  • 线程:程序执行的最小单元

  • 多进程:一个操作系统同时运行多个应用程序、一个浏览器同时打开多个tab页面

  • 多线程:浏览器内核多线程协作完成渲染工作

浏览器进程划分

  • 浏览器主进程(一个),浏览器tab切换、回退刷新等操作
  • 网络进程,负责网络资源加载(一个)
  • GPU进程(一个),负责像素点绘制
  • 插件进程(一个插件一个)
  • 渲染进程(一个tab一个),多个tab互不影响

浏览器内核(渲染引擎进程)

1. GUI渲染线程

  • 负责解析HTML、CSS构建DOM数和 render树
  • 时间:重绘、回流时会执行
  • 特点:与JS引擎互斥

2. JavaScript引擎线程

  • 作用:处理JS脚本程序,编译JS代码,如V8引擎,Chrome和Node.js都在用

  • 起因:JS语言是一门单线程语言,它的异步和多线程是通过Event Loop事件循环来实现的

  • 特点:与GUI引擎互斥

  • 构成:内存堆(内存分配)、调用栈(代码执行)

  • 由于是单线程,通过事件循环机制来实现异步任务

3. 事件触发线程

  • 控制事件循环的节奏,当执行栈(js主线程执行完空闲后),从消息队列中取出一个任务放入执行栈中执行
  • 执行栈为空后,再从消息队列中取出一个放入执行栈中执行
  • 维护一个消息队列

4. 定时器触发线程

  • setTimeout、setInterval

5. 异步请求线程

  • 发送网络请求获取数据

->>> 博客原文 <<<-