浏览器架构

4 阅读3分钟

现代浏览器采用多进程架构,通过隔离不同功能模块提升稳定性、安全性和性能。

多进程架构的核心进程组成

  1. 浏览器主进程(Browser Process)
    • 职责:统筹全局,管理用户界面(地址栏、书签)、子进程创建/销毁、文件存储及IPC通信
    • 关键线程
      • UI线程(处理用户输入)、
      • Network线程(管理网络请求)、
      • Storage线程(控制本地存储)
  2. 渲染进程(Renderer Process)
    • 职责:每个标签页默认独立进程,负责解析HTML/CSS/JS、构建DOM树、渲染页面并执行脚本(含V8引擎)。
    • 内部多线程协作
      • GUI渲染线程(解析渲染页面,与JS线程互斥)
      • JS引擎线程(执行JavaScript代码)
      • 事件触发线程(管理事件队列)
      • 定时器线程(处理setTimeout/setInterval
      • 异步HTTP线程(处理XHR请求)
      • 沙箱隔离:运行在沙箱环境中,禁止直接访问系统资源(如文件、网络),需通过 IPC 向主进程请求敏感操作。
  3. GPU进程(GPU Process)
    • 专责图形加速任务,如3D渲染(WebGL)、CSS动画及页面合成,避免阻塞主进程。
  4. 网络进程(Network Process)
    • 独立处理DNS解析、TLS连接及资源加载,优化并发请求效率。
  5. 插件进程(Plugin Process)
    • 隔离运行易崩溃的插件(如Flash),防止影响浏览器主体。

多进程架构的优势

  1. 稳定性提升
    • 单个渲染进程崩溃不会影响其他标签页或主进程(如 Chrome 的 “标签页崩溃提示”)。
  2. 安全性增强
    • 沙箱化的渲染进程无法直接访问系统资源,恶意代码需突破 IPC 校验和主进程权限才能攻击系统。
  3. 性能优化
    • 并行处理:网络请求、渲染、JS 执行可在不同进程中并行运行,充分利用多核 CPU。
    • 硬件加速:GPU 进程独立管理图形资源,避免渲染阻塞主线程。
  4. 模块解耦
    • 主进程专注于系统级操作,渲染进程专注于页面渲染,职责分离便于维护和升级(如单独更新渲染引擎)。

沙箱(Sandbox)安全隔离机制

将浏览器的不同进程(如渲染进程、插件进程等)限制在一个封闭的 “沙箱” 环境中运行,限制权限、防止恶意代码或漏洞利用对操作系统和用户数据造成威胁。

  1. 进程隔离:多进程架构,浏览器将不同功能模块分配到独立进程中
  2. 操作系统级沙箱技术:浏览器依赖操作系统提供的底层隔离能力
    • 内存隔离
    • 文件系统访问限制
    • 进程间通信(IPC)
  3. 语言层面的安全限制
    • JavaScript 沙箱:限制脚本权限
      • 禁止直接访问操作系统 API(如文件读写、进程创建)。
      • 通过同源策略(Same-Origin Policy)限制跨域资源访问。
      • 使用Content Security Policy(CSP)等策略进一步约束脚本的执行范围。
    • WebAssembly(Wasm)沙箱:Wasm 代码运行在独立的内存空间中,与 JavaScript 环境隔离,且默认无法访问宿主环境(浏览器或操作系统)的原生功能。