这是我参与8月更文挑战的第11天,活动详情查看:8月更文挑战
浏览器是web前端开发者日常开发中接触频率非常高的,是陪伴我们一起并肩作战的重要伙伴,了解浏览器的多进程架构可以帮助我们更了解伙伴的基础架构,作为日常陪伴我们左右的浏览器,不能仅仅止步了解其华丽的外表,还是深入理解其内在
接下来就让我们一起看看浏览器的多进程架构到底是怎样的一回事吧
单进程和多进程架构差异
在浏览器初期是基于单进程架构的,后续迭代更新至多进程架构,那么浏览器架构的演变为何从单进程演进为多进程架构?
单进程优缺点
单进程的优点:架构简单、资源占用少
在浏览器初期并没有很复杂的页面交互和动画,ajax请求甚至都是后续慢慢增加,当时浏览器仅仅需要展示一些简单的服务端渲染的页面即可,单进程架构不仅可以满足当时的市场需求,而且整体架构相对多进程架构会简单便捷,占用的资源也会少很多,随时时代的发展单进程架构并不能很好的支持需求,便出现了多进程架构
单进程的缺点:不稳定、不流畅、不安全
不稳定:由于单进程中一旦有一个线程崩坏,会导致整个进程崩坏,整个浏览器会随之崩坏。比如我们写了一段有问题的JS代码,在浏览器中执行到这个JS代码导致线程崩坏,整个浏览器都不可用了
不流畅:单进程架构中所有的渲染模块、JS解析模块和插件模块等都是运行在同一个线程中的,同一时间只能运行其中某一个模块,但是浏览器的整体运行不流畅
不安全:JS可以通过浏览器的漏洞来获取系统权限,这些JS获取系统权限之后也可以对你的电脑做一些恶意的事情,会引发安全问题
多进程优缺点
多进程的优点: 稳定、流畅更安全
稳定:浏览器将不同的功能职责划分至不同的进程中,各个进程独立工作且相互隔离的,当一个进程崩坏时并不会影响其他进程,影响的仅仅是当前进程,从而保证了浏览器的稳定性
流畅:同样受利与进程的相互独立且隔离,渲染进程阻塞也仅仅影响的是渲染进程而已,并不会影响到GPU进程、插件进程等,保证了浏览器的可以流程且有条不絮的运行
安全:多进程架构引入的沙箱机制, 把插件进程和渲染进程锁在沙箱里面,这样即使在渲染进程或者插件进程里面执行了恶意程序,恶意程序也无法突破沙箱去获取系统权限,保证了浏览器的安全性
多进程的缺点:架构复杂、资源占用高
架构复杂:浏览器各模块之间耦合性高、扩展性差等问题,会导致现在的架构已经很难适应新的需求了
资源占用高:因为每个进程都会包含公共基础结构的副本(如 JavaScript 运行环境),这就意味着浏览器会消耗更多的内存资源
通过上述的对比,可以明显的对比浏览器单进程架构和多进程架构的优缺点,在这个过程中也可以发现其实优点和缺点都是相对的,而且是跟随着时代的发展而变化的,也许在未来的某一天会否定现在的浏览器架构,出现一个更符合未来设备的浏览器