chrome架构引进
2020 M12 22
单进程架构
单进程浏览器是指浏览器的所有功能模块都是运行在同一个进程里。
这些模块包含了网络、插件、JavaScript 运行环境、渲染引擎和页面等。
实际上,单进程架构会有很多问题。
这些模块包含了网络、插件、JavaScript 运行环境、渲染引擎和页面等。
实际上,单进程架构会有很多问题。
不稳定
早期浏览器需要借助于插件来实现诸如 Web 视频、Web 游戏等各种强大的功能。
但是插件是最容易出问题的模块,并且还运行在浏览器进程之中。
所以一个插件的意外崩溃会引起整个浏览器的崩溃。
但是插件是最容易出问题的模块,并且还运行在浏览器进程之中。
所以一个插件的意外崩溃会引起整个浏览器的崩溃。
不流畅
同一时刻只能有一个模块可以执行,错误代码导致的死循环,内存泄漏会让浏览器变得卡顿。
不安全
插件可以使用 C/C++ 等代码编写,通过插件可以获取到操作系统的任意资源。 当你在页面运行一个插件时也就意味着这个插件能完全操作你的电脑。 如果是个恶意插件,那么它就可以释放病毒、窃取你的账号密码,引发安全性问题。
多进程架构
chrome通过一次单进程到多进程的架构升级,解决了单进程暴露出来的问题。
解决不稳定问题
由于进程是相互隔离的,所以当一个页面或者插件崩溃时, 影响到的仅仅是当前的页面进程或者插件进程,并不会影响到浏览器和其他页面。
解决不流畅问题
js运行在渲染进程中,即使js阻塞了渲染进程,影响到的也只是当前的渲染页面,而并不会影响浏览器和其他页面,因为其他页面的脚本是运行在它们自己的渲染进程中的。 当我们再在 Chrome 中运行某个死循环的脚本时,没有响应的仅仅是当前的页面。
解决不安全问题
采用多进程架构的额外好处是可以使用安全沙箱,你可以把沙箱看成是操作系统给进程上了一把锁。 沙箱里面的程序可以运行,但是不能在你的硬盘上写入任何数据,也不能在敏感位置读取任何数据,例如你的文档和桌面。 Chrome 把插件进程和渲染进程锁在沙箱里面, 这样即使在渲染进程或者插件进程里面执行了恶意程序,恶意程序也无法突破沙箱去获取系统权限。