1 前言
本文为《浏览器工作原理与实践》的读书笔记。
2 进程和线程
进程:进程就是程序的运行实例。具体而言就是:启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,我们把这样的一个运行环境叫进程。
线程:依附于进程,多线程并行处理能提升运算效率。
进程和线程关系的特点:
- 任一线程出错,都会导致所在的整个进程崩溃。
- 同一进程内的线程可以共享进程数据。
- 不同进程间数据很难共享。
3 单进程浏览器时代
单进程浏览器:是指浏览器的所有功能模块都是运行在同一个进程里,这些模块包含了网络、插件、JavaScript 运行环境、渲染引擎和页面等。
弊端:
- 不稳定
- 不安全
- 不流畅
4 早期多进程架构
沙箱(sandbox):沙箱中的进程没有访问本地资源的能力(例如文件系统,窗口系统,等等),是一种用于安全的运行程序的机制。
多进程架构的优点:解决单进程架构的上述三点弊端。
5 当前多进程架构
主要进程的功能:
- 浏览器进程——负责界面显示、用户交互、子进程管理,同时提供存储等功能。
- 渲染进程——负责将 HTML、CSS 和 JavaScript 转换为用户可以与之交互的网页,排版引擎 Blink 和 JavaScript 引擎 V8 都是运行在该进程中,默认情况下,Chrome 会为每个 Tab 标签创建一个渲染进程。
- GPU 进程
- 网络进程——负责页面的网络资源加载。
- 插件进程——负责插件的运行。
弊端:
- 更高的资源占用
- 更复杂的体系架构
6 未来面向服务的架构
面向服务的架构”(Services Oriented Architecture,SOA):原来的各种模块被重构成独立的服务(Service),每个服务都可以在独立的进程中运行,访问服务必须使用定义好的接口,通过 IPC 来通信,从而构建一个
更内聚
、松耦合
、易于维护和扩展
的系统。
另外, Chrome 还提供灵活的弹性架构。如果在资源受限的设备上,Chrome 会将很多服务整合到一个进程中,从而节省内存占用。