Skip to content

浏览器多进程架构

单进程架构的缺点

  1. 稳定性

如果浏览器所有的任务(页面渲染、插件)都以线程的形式运行在同一个进程中, 那么任何一个线程的崩溃, 都将导致进程的崩溃, 也就是浏览器的崩溃。

  1. 安全性

单进程下, 进程中的所有任务都能随意访问计算机资源, 无法进行权限管理。

在多进程架构下, 浏览器可以沙盒化某些功能,让特定进程发挥特定功能。例如,Chrome 浏览器会限制处理任意用户输入的进程(例如渲染程序进程)对任意文件的访问权限。

多进程概览

image

  1. 多进程架构保证了浏览器不会因为某一个任务崩溃而崩溃, 标签页之间不会互相影响
  2. 限制了渲染进程的访问权限。由于渲染任务运行在独立的进程中, 这使得可以限制渲染进程的访问权限如网络、文件系统等等。 渲染进程不能直接访问其他渲染进程或操作系统, 只能和主进程通过 浏览器IPC系统进行通信。

浏览器主要有哪些进程?

  1. 主进程. 主进程负责浏览器UI以及子进程的管理。
  2. 渲染进程。渲染进程负责web内容(html、css和javascript)的渲染和展示, 一般的每一个浏览器标签页就对应着一个渲染进程。
  3. 网络进程。
  4. GPU进程。
  5. 插件进程。
  6. 等等

参考

Multi-process Architecture (chromium.org)

浏览器原理:多进程架构 · Issue #36 · campcc/blog (github.com)