【学习总结】浏览器的工作原理与实践——chrome架构

李兵老师的浏览器的工作原理与实践,安排~

第一次学习这门课,总结下重点,过段时间回过头来看可能会有不一样的思考,就像看自己以前写的代码一样……

chrome架构:仅仅打开了1个页面,为什么会有四个进程?

⭐️ 进程VS线程

多线程可以并行处理任务,但是线程是不能单独存在的,它是由进程启动和管理的。那什么又是进程呢?一个进程就是一个程序的运行实例。详细解释就是,启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,我们把这样的一个运行环境叫进程。

在这里插入图片描述
从图中可以看出,线程是依附于进程的,而进程中使用多线程处理能提高效率。

⭐️ 进程和线程的关系有以下四个特点

1、进程中任意一线程出错,都会导致整个进程崩溃。
2、 线程之间共享进程中的数据。
在这里插入图片描述3、当一个进程关闭之后,操作系统会回收进程所占用的内存。
即使其中任意线程因为操作不当导致内存泄漏,当进程退出时,这些内存也会被正确回收
4、进程之间的内容相互隔离。
进程隔离是为保护操作系统中进程互不干扰的技术
正因为进程之间的数据是严格隔离的,所以一个进程如果崩溃了,或者挂起了,是不会影响到其他进程的
如果进程之间需要进行数据通信,这就要使用进程间通信(IPC)的机制了

⭐️ 单进程浏览器时代
单进程浏览器:浏览器的所有功能模块都是运行在同一个进程里(包括网络、插件、JS运行环境、页面)。
单进程浏览器架构示意图

如此多的功能模块运行在一个进程里,是导致单进程浏览器不稳定不流畅不安全的一个主要因素。

1、不稳定
早期浏览器需要借助于插件来实现诸如 Web 视频、Web 游戏等各种强大的功能,并且插件运行在浏览器进程中,所以一个插件的意外奔溃会引起整个浏览器的崩溃
2、不流畅
从上图中可以看出,所有的页面渲染、JS执行环境、插件都运行在同一个线程中,这就意味着同一时刻只能有一个模块可以执行,一个无限循环的JS脚本,就会让整个浏览器失去响应,变卡顿。
除了上述脚本或者插件会让单进程浏览器变卡顿外,页面的内存泄漏也是单进程变慢的一个重要原因。通常浏览器的内核都是非常复杂的,运行一个复杂点的页面再关闭页面,会存在内存不能完全回收的情况,这样导致的问题是使用时间越长,内存占用越高,浏览器会变得越慢。
1、不安全
插件可以使用 C/C++ 等代码编写,通过插件可以获取到操作系统的任意资源。
页面脚本,它可以通过浏览器的漏洞来获取系统权限

⭐️多进程浏览器时代

最新的chrome进程架构图
最新的chrome进程架构图
从图中可以看出,最新的 Chrome 浏览器包括:1 个浏览器(Browser)主进程、1 个 GPU 进程、1 个网络(NetWork)进程、多个渲染进程和多个插件进程。

  • 浏览器进程
    主要负责界面显示、用户交互、子进程管理,同时提供存储等功能。
  • 渲染进程
    核心任务是将 HTML、CSS 和 JavaScript 转换为用户可以与之交互的网页,排版引擎 Blink 和 JavaScript 引擎 V8 都是运行在该进程中。默认情况下,Chrome 会为每个 Tab 标签创建一个渲染进程。出于安全考虑,渲染进程都是运行在沙箱模式下。
  • GPU进程
    初衷是为了实现3D的CSS效果,后来用GPU绘制页面
  • 网络进程
    主要负责页面的网络资源加载
  • 插件进程
    主要是负责插件的运行,因插件易崩溃,所以需要通过插件进程来隔离,以保证插件进程崩溃不会对浏览器和页面造成影响。

这块就可以回答标题提出的问题了:打开一个页面,为什么在浏览器的任务管理器中可以看到四个进程?因为打开一个页面至少需要1个浏览器进程,1个网络进程,1个GPU进程,1个渲染进程,如果一个页面有运行插件的话,还需要有个插件进程。

不过凡事都有两面性,虽然多进程模型提升了浏览器的稳定性、流畅性和安全性,但同样不可避免地带来了一些问题:更高的资源占用、更复杂的体系架构

⭐️总结

最初的浏览器都是单进程的,它们不稳定、不流畅且不安全,之后出现了 Chrome,创造性地引入了多进程架构,并解决了这些遗留问题。随后 Chrome 试图应用到更多业务场景,如移动设备、VR、视频等,为了支持这些场景,Chrome 的架构体系变得越来越复杂,这种架构的复杂性倒逼 Chrome 开发团队必须进行架构的重构,最终 Chrome 团队选择了面向服务架构(SOA)形式,这也是 Chrome 团队现阶段的一个主要任务。

总体说来,Chrome 是以一个非常快速的速度在进化,越来越多的业务和应用都逐渐转至浏览器来开发,身为开发人员,我们不能坐视不管,而应该紧跟其步伐,收获这波技术红利。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值