多进程浏览器浅析

本文探讨了为何现代浏览器如QQ浏览器采用多进程架构。通过对比进程与线程的特性,指出多进程能提高浏览器的健壮性,避免一个页面故障导致整个浏览器崩溃。Chrome浏览器的多进程分为浏览器进程、渲染器进程和插件进程,其中渲染进程在沙箱环境中运行以保障用户安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多进程的浏览器

对QQ浏览器的测试:

在打开八个网页页面之后,在任务管理器界面察看详细信息:1556376597269
在这里插入图片描述

可以得知现在的浏览器应该都是多进程实现的。

那么为什么使用多进程来实现浏览器?

首先看一下进程与线程的区别:

**进程:**作为系统资源分配的最小单位。每创建一个进程,系统就会为其开辟地址空间,创建唯一的PID,并且建立数据表来维护代码段、堆栈段和数据段。

**线程:**作为CPU调度,也就是程序执行的最小单元。线程依托于进程,也是轻量级的进程,每一个进程都至少有一个线程,并且同一进程中的多个线程共享进程的地址空间,但是它拥有自己的栈空间、寄存器。

所以,从空间分配来看,进程之间的地址空间无疑是独立的,而线程之间则不一样。

那么它们的这点区别为什么会让众多的浏览器使用多进程来实现呢?

原因在于:如果使用多线程来实现一个浏览器架构,那么当其中一个页面(多标签浏览器)崩溃,会导致整个进程崩溃,也就是浏览器当前所有界面都崩溃掉。而多进程实现的浏览器则有很好的健壮性,一个页面坏死,并不会影响其它的页面。

对于Chrome而言,它的多进程分为三个模块:

  • 浏览器(browser):负责管理用户界面以及磁盘和网络的I/O。当Chrome启动时,就会创建一个新的浏览器进程。

  • 渲染器(renderer):包含渲染网页的逻辑。因此,它们包含逻辑,以便处理HTML、JavaScript、图像等等。一般情况下,对应于新标签的每个网站都会创建一个新的渲染进程,这也就是我们之前所看到的任务管理器中多个活跃的浏览器进程的原因。

  • 插件(plugins):每个插件都会占有进程(如Flash或QuickTime等),一般而言,插件进程不但包含本身代码,而且包含额外代码,以便与有关渲染进程和浏览器进程进行通信。

此外,渲染进程是运行在沙箱当中的,为了保护用户系统的安全。

沙箱的说明:https://www.cnblogs.com/slly/p/6639173.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值