mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
1475 字
4 分钟
Google浏览器V8引擎概览
2026-04-01
无标签

Google Chrome(基于 Chromium)最核心的设计是 「多进程架构 + 服务化拆分」

Web API、任务队列、事件循环、V8、Blink 全都分布在这些进程和模块里。

通过了解 「5大核心进程 + 内部关键模块 + 它们如何协作」 摸清楚哪些在浏览器、哪些在 V8、谁管异步、谁管渲染。


一、Chrome 五大核心进程(全局架构)#

Chrome 启动后,至少会有这 5 类独立进程,各自隔离、互不干扰。

1. 浏览器主进程(Browser Process)—— 全局总管#

数量:1个(唯一) 地位:Chrome 的大脑、总指挥

负责内容:

  • UI 界面:窗口、标题栏、地址栏、书签、菜单、下载栏、设置页
  • 用户交互:鼠标点击、键盘输入、滚动、窗口缩放
  • 子进程管理:创建/销毁/监控渲染进程、GPU 进程、网络进程
  • 资源代理:文件读写、本地存储(Cookie/LocalStorage/IndexedDB)、密码管理
  • 安全与扩展:扩展程序(Extensions)、沙箱控制、安全浏览(Safe Browsing)
  • 进程间通信(IPC):所有进程之间的消息转发(用 Mojo 通信)

核心作用: 不渲染页面、不执行 JS,只做「协调、管理、安全、界面」,保证单个页面崩溃不会拖垮整个浏览器。


2. 渲染进程(Renderer Process)—— 页面内核(我最关心)#

数量:N 个(每个标签/站点一个) 地位:真正执行网页代码、生成页面的地方

内部核心模块(重中之重):

  • 源自 WebKit(2013 年从 WebKit 分叉)
  • 负责:
    • 解析 HTML → 生成 DOM 树
    • 解析 CSS → 生成 CSSOM 树
    • DOM + CSSOM → 合成 Render Tree(渲染树)
    • Layout(重排/回流):计算元素位置、大小
    • Paint(重绘):绘制元素颜色、背景、边框
    • 事件循环、DOM 事件、Web API(setTimeout/ fetch / DOM 事件)
    • 任务队列、微任务队列(浏览器维护,不是 V8

(2)V8 JavaScript 引擎#

  • 位置:运行在渲染进程内部
  • 只负责:
    • 编译/执行 JS 代码
    • 调用栈(Call Stack)
    • 执行上下文、作用域、闭包、GC 垃圾回收
    • Promise 语法(但 微任务队列由浏览器维护

(3)渲染进程内部多线程#

  • 主线程:执行 JS、解析 HTML/CSS、Layout、Paint(单线程!)
  • 合成线程(Compositor):图层合成、交给 GPU
  • 栅格线程(Raster):把图层转成位图
  • Worker 线程:Web Worker、Service Worker(后台 JS,不阻塞主线程)

核心作用:HTML + CSS + JS → 可视化网页,运行在 沙箱(Sandbox) 中,无法直接访问系统、文件、网络,只能通过主进程代理。


3. GPU 进程(GPU Process)—— 图形加速#

数量:1个

负责内容:

  • 浏览器 UI 绘制(窗口、按钮)
  • 网页图形:CSS 3D、动画、Canvas、WebGL、视频硬解
  • 图层合成(Compositing):把渲染进程的多个图层合并显示
  • 与显卡驱动直接通信,硬件加速

核心作用: 把所有绘制交给 GPU 并行处理,不占用主线程,保证滚动、动画流畅。


4. 网络进程(Network Process)—— 网络管家#

数量:1个(M73+ 独立,以前在主进程)

负责内容:

  • 所有网络请求:HTTP/HTTPS/HTTP2/QUIC/WebSocket
  • DNS 解析、TCP 连接、TLS 握手
  • Cookie、缓存(HttpCache)、代理、CORS
  • 下载、上传、网络安全检测

核心作用: 统一处理所有网络,渲染进程不能直接联网,必须通过网络进程,提升安全与性能。


5. 插件/工具进程(Plugin / Utility Process)#

数量:N 个

  • 插件进程:Flash、PDF 阅读器等第三方插件(现在很少)
  • 工具进程:视频解码、音频播放、沙箱工具、扩展辅助

作用: 彻底隔离第三方代码,崩溃不影响主程序。


二、一句话分清:V8 vs 谷歌浏览器#

  • V8 引擎:只在 渲染进程

    • 管:JS 执行、调用栈、执行上下文、GC
    • 不管:事件循环、任务队列、Web API、网络、定时器、DOM
  • 浏览器(Chrome)

    • 管:事件循环、任务队列、微任务队列、Web API(setTimeout/fetch/DOM)
    • 管:所有进程、网络、GPU、UI、安全、存储
    • V8 只是浏览器调用的一个“执行库”

三、完整流程:从输入 URL 到显示页面(串起所有模块)#

  1. 主进程:你输入 URL → 交给 网络进程
  2. 网络进程:DNS → TCP → TLS → 请求 → 下载 HTML → 发回 渲染进程
  3. 渲染进程(Blink)
    • 解析 HTML → DOM
    • 解析 CSS → CSSOM
    • 遇到 <script>V8 执行 JS(主线程)
    • 遇到 fetch/setTimeout交给浏览器 Web API 线程(网络/定时器线程)
    • 异步完成 → 回调进 任务队列(浏览器维护)
  4. 事件循环(浏览器)
    • 调用栈空 → 先清空 微任务 → 再执行一个 宏任务
  5. Blink:生成渲染树 → Layout → Paint → 图层交给 合成线程
  6. 合成线程 → 发给 GPU 进程 → 合成显示到屏幕

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Google浏览器V8引擎概览
https://www.choria.top/posts/v8/
作者
乔瑞雅·克林威尔
发布于
2026-04-01
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录