微软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是款单进程单线程浏览器。