您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
   
 
 
     
   
 订阅
  捐助
主流浏览器多进程架构对比以及检测方法
 
来源:www.iefans.net 发布于: 2016-12-7
   次浏览      
 

为了应对浏览器经常出现崩溃的现象,现在很多浏览器厂商都采用了多进程标签浏览的概念,其中包括主的IE8、Chrome、 Firefox浏览器,而众多基于WebKit的浏览器在苹果发布WebKit2内核以后已经将可以后采用多进程标签浏览这个功能。因为在在浏览器中添加多进程浏览功能之后,即使是浏览器其中的一个进程出现了崩溃现象,也不会牵连到其他浏览器窗口,从而有效的避免了整个浏览器的假死。微软曾有调查数据显示:70%的浏览器崩溃故障由插件引起。上述浏览器虽然都采用了多进程标签浏览概念,但他们在浏览器中执行多进程标签浏览的方法却是不同的。   1、微软IE8 Loosely-Coupled IE(LCIE)   在最新一代浏览器IE8中,微软添加了被称为“Loosely-Coupled IE(LCIE)”的架构。   通过Loosely-Coupled IE(LCIE)架构,IE8将主要的浏览进程与渲染进程相隔离。   主要的进程处理浏览器、用户界面和框架(窗口),用于存储选项卡。在IE8中,多个选项卡是运行在相同的进程中的,不过不同安全级别的选项卡是相互分开的。ActiveX空间是通过选项卡进程进行处理的。

微软IE8多进程架构

微软IE8打开网站界面

2、谷歌Chrome/Chromium的多进程架构   谷歌Chrome是首款采用多进程浏览概念的浏览器,它还具备最为复杂的用于隔离浏览器各个组成部分的系统。   在Chrome中,谷歌通过out of process plugins(OOPP)功能将所有的插件进程(如Flash、Java、PDF阅读器等)与的浏览器进程隔离,进而提升Chrome浏览器的安全性。也就是说,即使是Chrome中有插件出现崩溃现象,也并不会影响整个浏览器的运行   总得来讲,谷歌Chrome和Chromium中包含以下4中主要的进程类型:   *浏览器进程——用于处理用户界面和管理所有其他的进程,其运行在浏览器的最顶级;   *渲染进程——用于处理独立浏览器标签中的渲染,值得注意的是,一个渲染进程能够处理多个标签;   *插件进程——每个浏览器插件如Adobe Flash或Java都运行在它们自己的独立进程中,这些插件进程能够与各自的渲染进程互通;   *扩展进程——浏览器中的扩展也拥有各自的独立进程,以避免互相干扰。

谷歌Chrome多进程架构

3、Mozilla Electrolysis和Out-of-process插件   相较于谷歌Chrome和微软IE8,Mozilla Firefox是步入多进程行列中较晚的一款浏览器,其中所包含的多进程架构也不如Chrome或IE复杂。   Mozilla基金会在Firefox中添加多进程架构的目的就是隔离浏览器插件和浏览器的主要进程,项目代号为“Electrolysis”,正处于早期的测试阶段。   目前,Firefox 3.6.4 beta builds中已经包含了多进程处理能力。

Firefox中的多进程架构

4、WebKit 2中的多进程   前段时间,WebKit团队宣布,在即将发布的WebKit2中将会包含多进程浏览能力。换句话也就是说,采用WebKit Web渲染引擎的大量浏览器中都将会引进多进程浏览功能。 虽然谷歌Chrome/Chromium使用的是WebKit引擎,不过他们的多进程架构是不同的。在Chrome中,谷歌在每个渲染进程中都包含一个WebKit渲染引擎,而WebKit 小组则计划将WebKit2渲染引擎自身分裂到多个进程中。   在WebKit2采用多进程浏览模型之后,网页的内容(JavaScript,HTML,以及布局等)将各自拥有独立的进程,这一机制是通过两个主要的子系统(CoreIPC和DrawingArea)来支持的。   WebKit2中的多进程浏览模型和Google Chrome的最大不同在于,WebKit直接把独立进程模型放进了一个框架中,因此也能被其他客户端使用。事实上,历史上除了浏览器之外,苹果的邮件客户端和微软的个人信息管理软件都使用过WebKit内核。   WebKit还是其它几个移动浏览器的基础,包括iPhone操作系统、谷歌的 Android、Symbian手机使用的S60 Web浏览器和Palm Pre。

WebKit中的多进程架构

检查浏览器进程模式的方法 在微软的Visual Studio工具包中就有一个小工具能方便的检测浏览器进程模式,这个工具叫做Spy++, 仅有400K大小,如果你的机器上没有,可以下载:spyxxx.zip,解开后即可运行,如果缺少spyhk55.dll文件,点击这里下载,解压到同一目录即可执行。   Spy+++运行后如下图所示:

点击红圈按钮,弹出下面的对话框,用这个对话框可以检查任意窗口的进程线程属性。

下面我们来检测一下Firefox浏览器3.5版本的进程模式,打开Firefox,任意打开两个网页,例如百度,google:

把刚才SPY++上的圆形小图标托拽到Firefox的百度网页上,放手,点SPY对话框OK按钮.

SPY++即可显示该网页窗口的属性,点Process页签,就可以看到该网页的进程及线程ID:

在Firefox中将google设为当前页,把刚才SPY++上的圆形小图标托拽到Firefox的google网页上,放手,点OK.

SPY++即可显示该网页窗口的属性,点Process页签,就可以看到该网页的进程及线程ID:

可以发现,在Firefox中,百度网页和google网页的进程ID和线程ID是一模一样的,这就很清楚的证明了Firefox3.5是款单进程单线程浏览器。

   
次浏览       
相关文章

企业架构、TOGAF与ArchiMate概览
架构师之路-如何做好业务建模?
大型网站电商网站架构案例和技术架构的示例
完整的Archimate视点指南(包括示例)
相关文档

数据中台技术架构方法论与实践
适用ArchiMate、EA 和 iSpace进行企业架构建模
Zachman企业架构框架简介
企业架构让SOA落地
相关课程

云平台与微服务架构设计
中台战略、中台建设与数字商业
亿级用户高并发、高可用系统架构
高可用分布式架构设计与实践

最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]

相关文章


专家视角看IT与架构
软件架构设计
面向服务体系架构和业务组件
人人网移动开发架构
架构腐化之谜
谈平台即服务PaaS

相关培训课程


面向应用的架构设计实践
单元测试+重构+设计模式
软件架构师—高级实践
软件架构设计方法、案例与实践
嵌入式软件架构设计—高级实践
SOA体系结构实践

成功案例


锐安科技 软件架构设计方法
成都 嵌入式软件架构设计
上海汽车 嵌入式软件架构设计
北京 软件架构设计
上海 软件架构设计案例与实践
北京 架构设计方法案例与实践
深圳 架构设计方法案例与实践
嵌入式软件架构设计—高级实践
更多...