浅谈浏览器中的进程


前言

提示:博主学浅,文章仅作学习记录和总结分享,如果有不足的地方欢迎指正。


一、线程与进程

关于查看浏览器进程的方法:

以谷歌浏览器为例,点击右上角,点击更多工具,点击任务管理器:
浏览器进程信息
我们可以发现打开一个百度页面浏览器就开启多个进程,这其中就有浏览器进程渲染进程GPU 进程网络进程插件进程存储进程音频进程。(如果你的谷歌并没有安装任何插件,插件进程并不会启动,而Storage Service和Audio Service在传统的教程中并没有提及到,博主猜测是新版浏览器新加的进程)

我们知道,线程是不能单独存在的,它必须由进程来启动和管理,在处理大量数据时,多线程相较于单线程可以大大提升性能。但凡事都有两面性,在某些情况多线程并不比单线程有优势,线程的切换时需要额外的开销的。

进程与线程之间的关系,大致可以归为如下几点:

1.进程里的任一线程出错,会导致整个进程的奔溃。

2.线程与线程之间可以共享进程中的数据。

3.进程与进程之间时相互隔离的。

4.进程关闭,所占用的内存会被操作系统回收。


二、单进程浏览器

话说回到那个浏览器远古时代,浏览器基本采用的是单线程的模式,即浏览器的所有功能模块都是运行在同一个进程里。这也导致了有时因为某一个页面卡顿导致整个浏览器奔溃的情况。

而单线程浏览器不好的地方有以下几点:

1.不安全,不法分子可以在一个页面利用脚本去操作获取另一个页面的信息。

2.不流畅,如果一个页面的脚本执行占用了,这会导致其他页面的响应卡顿等问题。


三、多进程浏览器

新版浏览器划分了多个模块进程,各个进程各司其职,某一进程的奔溃一般情况并不会导致浏览器的奔溃。因为进程之间相互隔离。对于安全性的问题,多进程架构的额外好处是可以使用安全沙箱机制,而安全沙箱的好处是沙箱内的程序并不能去对系统进行读写操作,有利于用户的系统安全。

就目前的多进程浏览器,每一个进程都有自己独立的功能,这提升了浏览器的稳定性和安全性。但我们也必须清楚,多进程带来的是更高的资源占用。


总结

我们需要了解浏览器各个进程模块功能,这有利与理解页面的渲染原理和事件循环机制。

猜你喜欢

转载自blog.csdn.net/Mr_RedStar/article/details/116068487