浏览器多进程架构

1,498 阅读2分钟

跟很多多线程浏览器不一样,chrome使用多个进程来隔离不同的标签页,因此打开一个标签页,就等于是开了一个新的进程,当然,进程之间是不共享资源和地址空间的,所以每个进程之间不太会出现互相影响的安全问题,而多个线程,是共享着相同的资源和地址空间的,所以线程之间就有可能会存在恶意修改或者获取非授权数据的复杂性安全问题。

多进程:类似于一个工厂,每个工厂有每个工厂自己做的时间,互不影响

多线程:类似于每一个工厂里面的工人,一个工厂可以有很多个工人 

浏览器也会有自己的优化机制,比如打开多个空白的标签页,在chrome的任务管理器里面,就会发现把这些空白页,都合成了一个进程,所以一个tab标签页对应一个进程也不是绝对的

浏览器除了主进程,还有一个其他进程来辅助支撑主进程

Browser进程

  • 浏览器的主进程(负责调控、主控),只存在一个,作用有
  • 负责浏览器界面显示,与用户交互,前进、后退等
  • 负责各个页面间的管理,创建和销毁其他进程
  • 网络资源管理,下载等

第三方插件

  • 每种类型的插件是一个进程,当使用时创建

GPU进程

  • 最多一个,用于3D绘制等

浏览器渲染进程(浏览器内核)(Renderer进程,内部是多线程的):默认每一个tab页都是一个进程,互不影响,主要作用为:

  • 页面渲染
  • 脚本执行
  • 时间处理等

相对于单进程浏览器,多进程浏览器的优势有

  • 避免单个页面奔溃影响整个浏览器
  • 避免第三方插件奔溃影响整个浏览器
  • 多进程充分利用多核优势
  • 方便使用沙盒模式隔离插件等流程,提高浏览器稳定性