01.单进程浏览器和多进程浏览器的区别

2,353 阅读4分钟

注:以下所有内容都是基于谷歌浏览器,本文所有内容都是个人对学习极客时间(浏览器的原理与实践)的整理,不喜勿碰

谷歌浏览器的优点:

  • Chrome是世界上使用率最高的浏览器,最具代表性

1. 进程和线程

并行处理: 同一时刻处理多个任务,大大提升性能

单线程: 按照一定的顺序,一步一步的执行程序,只有一个任务在执行

多线程: 多个任务同时进行

1.1 线程 VS进程

  • 线程是不能单独存在的,它是由进程来启动和管理的
  • 一个进程就是一个程序的运行实例
  • 线程是依附于进程的,而进程中使用多线程并行处理能提升运算效率

进程和线程的4个特点:

  • 进程中任意一线程序执行出错,就会导致整个进程的崩溃
  • 线程之间共享进程中的数据
  • 当一个进程关闭之后,操作系统回回收进程所占用的内存
  • 进程之间的内容相互隔离,互不影响

2. 单进程浏览器时代

顾名思义,单进程浏览器是指浏览器的所有功能模块都是运行在同一个进程里

带来的问题:

  1. 不稳定: 插件,渲染引擎等任何一个模块出问题,都会引起浏览器的崩溃
  2. 不流畅: 同一时间只有一个模块可以运行
  3. 不安全: 插件和脚本之中容易存在恶意软件,进而控制自己电脑

3. 多进程浏览器时代

现代浏览器基本上都是多进程浏览器了

3.1 早期Chrome进程架构图:

3.2 对单进程浏览器问题的解决方法:

不稳定问题的解决方法: 多进程,进程之间相互隔离。当一个页面或者一个插件崩溃的时候,影响的只是当前页面,并不会影响其它进程和其它页面,也不会导致浏览器的崩溃

流畅性问题的解决方法: 多线程,不会因为某一个页面的阻塞影响其它程序的运行,最多只能影响当前页面。当页面关闭的时候,整个渲染进程也就关闭了,进程所占用内存会被系统回收,防止了内存泄漏的问题

安全性问题的解决方法: 多线程的浏览器采用了 安全沙箱,安全沙箱可以看做是给程序上了一把锁,程序可以运行,但是不能在硬盘上写入任何数据,也不能读取任何敏感信息。

3.3 目前多进程架构

最新的Chrome进程架构图

浏览器进程: 负责页面的显示,用户交互,子进程管理和存储等功能

渲染进程: HTML,CSS,Js文件转化为可以交互的网页。排版引擎和JavaScript引擎V8都在该进程中

GPU进程: UI界面的绘制

网络进程: 网络资源的加载

插件进程: 主要负责插件的运行,因为插件容易崩溃,所以通过插件进程来进行隔离,以防止对浏览器造成影响

3.4 未来的挑战和发展趋势

3.4.1 挑战

  • 更高的资源占用
  • 更复杂的体系架构

3.4.2 趋势

面向服务的架构

4. 分享-推动浏览器发展的主要动力

网友分享:

  • Michael Cheng 2019-08-05 21:05:16 ⼀个⻆度来说,最⼤动⼒就是chrome的出现。曾经的IE像极了诺基亚,chrome就像是横空出世的iPhon e ,当着IE的⾯告诉IE,浏览器应该这么玩⼉。 另⼀个⻆度也是互联⽹的发展需要,⼈们所需要的不再是只是简单展⽰个⻚⾯的浏览器,需要有复杂的交 互,浏览器应该能做更多的事情,这对浏览器的稳定性、以及性能都有了新的要求。所以出来⼀个性能符 合要求的浏览器也是必须的。 还有就是11年后相对规范的es5的出现,再之后es6.7,web能做的事情越来越多了,web⼯程化,再后来 node的出现,前端体系越来越庞⼤,

提炼:Chrome的出现,互联网发展的需要,前端的规范化(ES5,ES6的出现),web工程化,Node等的流行

5. 总结

  1. 单进程浏览器具有不稳定,不流畅,且不安全的问题
  2. 多进程浏览器通过多进程,安全沙箱,进程之间的隔离等方法了,解决了单进程浏览器中存在的各种问题