阴影中的曙光

浏览器工作原理【1】

2019.07.10 / H5C3 / 点击 254 / 回复 1 / 浏览器, Chrome

浏览器工作原理

Chrome架构

Chrome浏览器的进程列表
Chrome浏览器的进程列表
__线程不能单独存在,它是由进程启动和管理的,而进程则是一个程序的运行实例,一个进程中采用多线程并行处理能有效的提升运算效率。
进程中任意线程出错就会导致整个进程崩溃
线程之间可以对进程内公共数据进行读写操作
当一个进程关闭后系统会回收进程所占用的所有内存
进程之间的内容相互隔离__

单进程浏览器架构

2007年以前基本上所有浏览器都是单进程的,单进程浏览器内网络线程,页面线程(包括页面渲染,页面展现,JavaScript环境等),其他线程等都运行在浏览器总进程下。这类架构主要有以下一些问题。

  • 不稳定
    任意一个浏览器插件的崩溃都会导致整个浏览器崩溃,尤其像渲染引擎模块一类容易出错的线程,很容易导致整个进程失效
  • 不流畅
    所有页面的渲染模块,JavaScript执行环境以及插件都是运行在同一线程中的,这就意味着同一时刻只能有一个模块可以执行,而且页面的内存泄漏(页面在关闭时内存回收不完全)也会使导致内存占用过高,引发卡顿
  • 不安全
    很多插件可以由C/C++编写,通过插件就可以获得操作系统的任意资源,页面内的脚本也可以通过浏览器漏洞获取系统权限,引发安全问题。

早期多进程浏览器架构

早期的Chrome架构
早期多进程浏览器架构
可以看出,Chrome页面渲染进程是独立的,页面插件也运行在单独的插件进程中。进程之间则是通过IPC机制进行通信的。

  • 稳定性
    因为进程是相互隔离的,所以当一个界面或者插件崩溃时只会影响到当前页面进程或者插件进程,不会影响到浏览器的其他页面。
  • 流程性
    JavaScript也是运行在渲染进程中的,所以即便JavaScript阻塞了渲染进程,影响的也只是当前渲染页面,不会影响到其他页面。
  • 安全性
    采用多进程架构就可以形成安全沙箱,把进程内数据和进程外数据隔离。

目前的多进程浏览器架构

目前多进程浏览器架构

包括浏览器主进程,GPU进程,网络进程,多个渲染进程和多个插件进程

只有 1 条评论

  1. 所以即便JavaScript阻塞了渲染进程,影响的也只是当钱渲染页面

    错别字 当"前"