浏览器多进程架构
单进程架构的缺点
- 稳定性
如果浏览器所有的任务(页面渲染、插件)都以线程的形式运行在同一个进程中, 那么任何一个线程的崩溃, 都将导致进程的崩溃, 也就是浏览器的崩溃。
- 安全性
单进程下, 进程中的所有任务都能随意访问计算机资源, 无法进行权限管理。
在多进程架构下, 浏览器可以沙盒化某些功能,让特定进程发挥特定功能。例如,Chrome 浏览器会限制处理任意用户输入的进程(例如渲染程序进程)对任意文件的访问权限。
多进程概览
- 多进程架构保证了浏览器不会因为某一个任务崩溃而崩溃, 标签页之间不会互相影响
- 限制了渲染进程的访问权限。由于渲染任务运行在独立的进程中, 这使得可以限制渲染进程的访问权限如网络、文件系统等等。 渲染进程不能直接访问其他渲染进程或操作系统, 只能和主进程通过 浏览器IPC系统进行通信。
浏览器主要有哪些进程?
- 主进程. 主进程负责浏览器UI以及子进程的管理。
- 渲染进程。渲染进程负责web内容(html、css和javascript)的渲染和展示, 一般的每一个浏览器标签页就对应着一个渲染进程。
- 网络进程。
- GPU进程。
- 插件进程。
- 等等