什么是并行处理?
计算机中的并行处理就是同一时刻处理多个任务。使用并行处理能大大提升性能。
在操作系统中,多线程可以并行处理任务,但需要注意的是:线程是不能单独存在的,它是由进程来启动和管理的。
核心概念:进程 vs 线程
理解浏览器架构,首先要区分两个核心概念:
进程 (Process):一个进程就是一个程序的运行实例。 当你启动一个程序时,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,我们把这样的一个运行环境叫进程。

线程 (Thread):线程是依附于进程的。 一个进程中可以包含多个线程,使用多线程并行处理能显著提升运算效率。
进程和线程关系的 4 个特点:
- 牵一发而动全身:进程中的任意一个线程执行出错,都会导致整个进程的崩溃。
- 数据共享:线程之间共享进程中的数据。
例如:线程 A、B、C 可以分别写入数据,然后由线程 D 读取展示。

- 内存回收:当一个进程关闭之后,操作系统会完全回收该进程所占用的内存。
- 进程隔离:进程之间的内容相互隔离。 这是为了保护操作系统,避免进程 A 写入数据到进程 B。正是因为严格隔离,一个进程崩溃(或挂起)不会影响其他进程。如果进程间需要通信,必须使用 IPC (进程间通信) 机制。
一、单进程浏览器时代
单进程浏览器是指浏览器的所有功能模块(网络、插件、JavaScript 运行环境、渲染引擎等)都是运行在同一个进程里。

这种架构导致了三个致命问题:不稳定、不流畅、不安全。
不稳定 早期浏览器依赖插件实现功能,但插件很容易崩溃。因为所有模块都在一个进程,一个插件崩溃 = 整个浏览器崩溃。同理,复杂的 JavaScript 代码如果引起渲染引擎崩溃,也会导致浏览器闪退。
不流畅
- 脚本阻塞:无限循环的脚本会霸占整个进程,导致页面无法响应。
- 内存泄漏:早期的内核在关闭复杂页面后,内存往往不能完全回收。使用时间越长,内存占用越高,浏览器越卡。
不安全 插件通常使用 C/C++ 编写,可以获取操作系统的任意资源。恶意的插件可以窃取账号密码、植入病毒,因为它们没有被限制权限。
二、多进程浏览器时代(早期)
为了解决单进程的问题,Chrome 推出了多进程架构。

从图中可以看出,Chrome 的页面运行在单独的渲染进程中,插件也运行在独立的进程中。进程之间通过 IPC 机制通信。
多进程如何解决旧时代的痛点?
- 解决不稳定:由于进程隔离,一个页面或插件崩溃,只会影响当前标签页,不会导致整个浏览器关闭。
- 解决不流畅:JavaScript 运行在各自的渲染进程中。即使某个页面的脚本死循环,也只会卡死那一个标签页,其他页面依然流畅。同时,关闭标签页时,整个进程被销毁,内存被系统完美回收,解决了内存泄漏问题。
- 解决不安全:多进程架构引入了安全沙箱 (Sandbox)。
沙箱就像是给进程上了一把锁。沙箱内的程序可以运行,但不能在硬盘写入数据,也不能读取敏感文件。恶意程序无法突破沙箱去获取系统权限。
三、目前的 Chrome 架构
最新的 Chrome 架构变得更加精细,通常包含:1 个浏览器主进程、1 个 GPU 进程、1 个网络进程、多个渲染进程和多个插件进程。

主要进程职能:
- 浏览器进程 (Browser Process)
- 大管家:负责界面显示、用户交互、子进程管理、存储功能。
- 渲染进程 (Renderer Process)
- 核心工匠:负责将 HTML、CSS 和 JavaScript 转换为用户可见的网页。
- Blink 排版引擎和 V8 引擎运行在此。
- 出于安全,运行在沙箱模式下。默认每个 Tab 一个进程。
- GPU 进程
- 图形加速:最初用于 3D CSS,现在广泛用于网页和 UI 的绘制加速。
- 网络进程 (Network Process)
- 物资运输:负责页面的网络资源加载。它之前是浏览器进程内的一个模块,现在独立出来,提升了稳定性和性能。
- 插件进程 (Plugin Process)
- 外包隔离:负责插件的运行。因插件易崩溃,必须严格隔离。
多进程的代价:
虽然提升了体验,但也带来了新问题:
- 资源占用高:每个进程都有独立的副本(如 V8 引擎环境),消耗更多内存。
- 架构复杂:模块间耦合度高,扩展性变差,难以适应新需求。
四、未来:面向服务的架构 (SOA)
为了解决架构臃肿问题,2016 年起,Chrome 团队开始向 “面向服务的架构” (Services Oriented Architecture) 转型。
核心思想是将原来的各种模块重构为独立的服务 (Service)。
- 每个服务可以在独立的进程中运行。
- 访问服务必须通过定义好的接口(IPC)。
- 目标:构建一个更内聚、松耦合、易于维护的系统。
Chrome 最终要把 UI、数据库、文件、设备、网络等模块重构为类似操作系统底层的“基础服务”。

总结
- 单进程时代:不稳定、卡顿、不安全,但架构简单。
- 多进程时代:Chrome 创造性地引入多进程,利用进程隔离和沙箱解决了旧时代的难题,但也导致了内存占用高和架构复杂。
- SOA 时代:为了适应移动设备、VR 等新场景,Chrome 正将架构重构为面向服务的形式,以实现更优的性能和扩展性。
Chrome 的进化速度极快,越来越多的业务(如视频编辑、3D 游戏)正在迁移到浏览器端。作为开发者,理解浏览器的底层架构,能帮助我们更好地把握这波技术红利。