文章目录
- 前言
- 一、线程与进程
- 二、单进程浏览器
- 三、多进程浏览器
- 总结
前言
提示:博主学浅,文章仅作学习记录和总结分享,如果有不足的地方欢迎指正。
一、线程与进程
关于查看浏览器进程的方法:
以谷歌浏览器为例,点击右上角,点击更多工具,点击任务管理器:
我们可以发现打开一个百度页面浏览器就开启多个进程,这其中就有浏览器进程、渲染进程、GPU 进程、网络进程、插件进程、存储进程、音频进程。(如果你的谷歌并没有安装任何插件,插件进程并不会启动,而Storage Service和Audio Service在传统的教程中并没有提及到,博主猜测是新版浏览器新加的进程)
我们知道,线程是不能单独存在的,它必须由进程来启动和管理,在处理大量数据时,多线程相较于单线程可以大大提升性能。但凡事都有两面性,在某些情况多线程并不比单线程有优势,线程的切换时需要额外的开销的。
进程与线程之间的关系,大致可以归为如下几点:
1.进程里的任一线程出错,会导致整个进程的奔溃。
2.线程与线程之间可以共享进程中的数据。
3.进程与进程之间时相互隔离的。
4.进程关闭,所占用的内存会被操作系统回收。
二、单进程浏览器
话说回到那个浏览器远古时代,浏览器基本采用的是单线程的模式,即浏览器的所有功能模块都是运行在同一个进程里。这也导致了有时因为某一个页面卡顿导致整个浏览器奔溃的情况。
而单线程浏览器不好的地方有以下几点:
1.不安全,不法分子可以在一个页面利用脚本去操作获取另一个页面的信息。
2.不流畅,如果一个页面的脚本执行占用了,这会导致其他页面的响应卡顿等问题。
三、多进程浏览器
新版浏览器划分了多个模块进程,各个进程各司其职,某一进程的奔溃一般情况并不会导致浏览器的奔溃。因为进程之间相互隔离。对于安全性的问题,多进程架构的额外好处是可以使用安全沙箱机制,而安全沙箱的好处是沙箱内的程序并不能去对系统进行读写操作,有利于用户的系统安全。
就目前的多进程浏览器,每一个进程都有自己独立的功能,这提升了浏览器的稳定性和安全性。但我们也必须清楚,多进程带来的是更高的资源占用。