`
xitong
  • 浏览: 6158253 次
文章分类
社区版块
存档分类
最新评论

为什么浏览器会使用多进程架构。

 
阅读更多

在使用浏览器时偶然发现虽然仅仅打开一个标签页,但是在任务管理器内发现有多个浏览器进程在运行,占用了不小的内存,当时很纳闷:为什么一个浏览器却需要多个进程呢?不经意间在网上发现这篇文章,以Googlechrome浏览器为例,讲解了使用多进程构架的浏览器。翻译给大家,希望对有英语阅读困难的同学有所帮助,第一次翻译技术文章好多术语不明白啥意思,也没有搜到都是凭理解翻译的。如cross-siteframe,如果有错误请不吝指正。

原文地址:

http://blog.chromium.org/2008/09/multi-process-architecture.html

浏览器的多进程构架

跟现在的很多浏览器不一样,谷歌chrome浏览器使用多个进程来隔离不同的网页和你的计算机。在这篇博客中我将会解释为什么在现在的网络条件下使用多进程架构是一个巨大的进步。我还会讨论浏览器的不同部分分别属于什么进程以及在什么情况下googlechrome为创建一个新的进程。

1:为什么在一个浏览器中使用多个进程。

在浏览器刚被设计出来的时候,那时的网页非常的简单,几乎没有动态的代码。这对仅使用一个进程渲染所有要访问的网页却仍然保持非常低的资源占有率是行得通的。

然而在今天我们看到大量网页转而使用动态网页,从含有大量javascriptflash的网页到像完全成熟的网络应用如GMail。这些应用的很大一部分是在浏览器中运行的,就像运行在操作系统之上的应用程序一样。跟操作系统一样,浏览器必须让这些应用互相分离。

除此之外,浏览器中负责渲染HTMLJavaScriptCSS的部分日益的复杂。在这些渲染引擎在演化的过程中会频繁的出现bug,有些bug会导致渲染引擎崩溃。不仅如此,渲染引擎会经常性的在网络上遇到不可信、甚至是恶意的代码,它们会利用这些漏洞在你的电脑上安装恶意的软件。

在当今世界,把所有东西都放进一个进程的浏览器面临在健壮性,响应速度,安全性方面的挑战。如果浏览器中的一个网络应用崩溃的话,这回波及括所有被打开的应用在内的任何其他应用。单线程的网络应用不得不经常相互竞争以获得的cpu时间,这有时会导致整个浏览器无法响应。安全性也同样不容小觑,因为仅仅一个页面就可以利用渲染引擎的某个漏洞获得对整台计算机的控制权。

然而,并不是非这样做不可。网络应用在设计的时候就是在浏览器中相互独立且并行的运行。它们不需要对磁盘和设备的访问权。这些被应用在网络上的安全策略保证了这些,使让你在访问大部分的页面时并不需要担心数据和计算机的安全性。这意味着可以让浏览器中的应用在不破坏彼此的情况下完全相互隔离。对于浏览器中的插件如flash也是一样的,它们与浏览器松散的耦合在一起且相互隔离,这没有任何问题。

GoogleChrome充分利用了这种特性,它将插件或是网络应用放在与浏览器本身不同的进程中。在一个渲染引擎中的崩溃并不会影响浏览器本身或是其他网络应用。这意味着操作系统可以并发的运行网络应用来提高响应速度,如果一个特定的网络应用程序或是插件停止响应时浏览器本身并不会被死锁。这也意味着我们可以在一个严格意义上的沙箱内运行渲染引擎进程,帮助减少发生错误时造成的损失。

有趣的是,使用多进程意味着GoogleChrome可以有自己的任务管理器,你可以通过右击浏览器标题栏打开。这个任务管理器可以让你跟踪每个网络应用和插件的资源使用率,而不是针对整个浏览器。

它也可以让你在不需要重启浏览器的情况下终止任何停止响应网络应用或插件。

针对以上原因,GoogleChrome浏览器的多进程构架与单进程浏览器相比有更强的健壮性,更快的响应速度,同时更安全。

2:每个进程内都有什么。

GoogleChrome创建三种不同类型的进程:浏览器进程,渲染器进程,插件进程。

浏览器进程:浏览器进程只有一个,用于管理标签页、窗口和浏览器本身。这个进程同时负责处理所有跟磁盘、网络、用户输入和显示的交互,然而它不分析和渲染任何网页内容。

渲染器进程:渲染器进程会创建多个进程,每个都负责渲染网页。渲染器进程中包含用于操作HTML,JavaScript,CSS,图片和其他内容的复杂的逻辑。我们使用了也同样被AppleSafari浏览器使用的开源的WebKit渲染引擎实现以上功能。每个渲染器进程都运行在沙箱内,这意味着它对磁盘、网络和显示器没有直接的访问权限。所有跟网络应用的交互,包括用户输入事件和屏幕绘制都必须通过浏览器进程。这可以让浏览器进程监视渲染器的可疑行为,一旦发现其从事破坏活动就将其终止。

插件进程:浏览器进程同样为处于使用状态的每种类型的插件创建一个进程,如:FlashQuicktimeAdobereader。这些进程仅仅包含插件本身以及和浏览器进程、渲染器进程交互的胶水代码。

3:在什么情况下浏览器会创建进程。

一旦GoogleChrome创建了一个浏览器进程,它一般会为你所访问的每个站点创建一个渲染器进程。这种做法旨在将不同站点的不同网页相互隔离。

你可以这样认为:浏览器对每个标签页面使用不同的进程,但是允许两个相关的且属于同一站点的网页共享同一个渲染器进程。例如,如果打开另一个也使用JavaScript的标签页,或者你打开了属于同一个站点的新标签页,这些标签页将会共享一个渲染器进程。这可以让这些标签页中的页面通过JavaScript通信,共享缓存对象。相反,如果你在标签页的地址栏里输入一个不同站点的URL,这个标签页会被交换到一个新的渲染器进程。

跟已存在的页面保持兼容对我们来讲非常重要。基于此,我们将每个站点定义一个像google.combbc.co.uk注册的域名,这意味着我们可以认为像mail.google.commaps.google.com一样的子域名是属于同一个站点。这很有必要,因为存在属于不同子域名的标签页面通过Javascript相互通信的情况,因此我们让它们使用同一个渲染器进程。

然而,对这种基本的方法要有以下注意事项。如果创建太多的进程,电脑的性能会降低,因此我们限定了创建渲染进程的最大数量(大多数情况下是20)。当达到这个限制时我们会为新标签页页面重用已经存在的渲染器进程。因此,同一个渲染器进程可以被用于多个站点。我们不把跨站点的访问放在原来的进程,同时也不将所有类型的交叉站点导航都交换到新的渲染器进程。目前,我们仅仅将浏览器进程本身的导航交换到新的标签页进程。尽管有这么多告诫,在平常使用时googlechrome还是会将不同站点相互隔离。

对于每一种类型的插件,当你第一次访问一个使用该插件的网页时,googlechrome会创建一个插件进程。只有当所有使用该插件的所有网页都被关闭之后,该进程才会被撤销。

随着我们对创建和交换渲染器进程策略的进一步细化,我们会发布更多的博客。同时我们希望在你使用Googlechrome时会体验到多进程构建带来的诸多好处。

本文由CharlieReis发表

ithzhang翻译

转载请注明出处,谢谢!!

分享到:
评论

相关推荐

    详解主流浏览器多进程架构:Chrome、IE

    详解主流浏览器多进程架构:Chrome、IE

    王志刚:浏览器的多进程架构与渲染优化

    该议题主要介绍浏览器多进程架构的设计目的、多进程架构下的安全机制,以及在多进程和安全机制的限制条件下如何进行渲染优化。

    C#多进程浏览器-仿Chrome浏览器

    C#多进程浏览器-仿Chrome浏览器

    主流浏览器多进程架构对比以及检测方法

    为了应对浏览器经常出现崩溃的现象,现在很多浏览器厂商都采用了多进程标签浏览的概念,其中包括主的IE8、Chrome、Firefox浏览器,而众多基于WebKit的浏览器在苹果发布WebKit2内核以后已经将可以后采用多进程标签...

    糖果浏览器3.0版。速度最快的人性化浏览器

    糖果浏览器是一款“永不崩溃”的浏览器,全球首款多进程多线程架构浏览器,糖果浏览器3。0 将使用户彻底摆脱浏览器假死或真死(崩溃)的困扰。糖果浏览器3。0实现了以下目标: 1 行云流水,操作流畅,决不出现鼠标...

    一个小巧的浏览器

    这是一个使用IE内核,多进程多Tab架构的简单浏览器。他基本上具备了浏览器的功能。

    超速浏览器 v5.2 正式版

    多进程多线程架构浏览器,全面防假死和程序奔溃,网页加载达到极速。 2、个性皮肤 提供大量个性皮肤,可在工具菜单对皮肤进行管理,也可到官网下载更多皮肤。 3、鼠标手势 增强了浏览网页的便捷性,鼠标右键...

    超速浏览器 v5.0

    超速浏览器是款多进程多线程架构浏览器,使用户远离浏览器假死或崩溃的困扰,并使网页加载达到极速。 2、超级拖曳 支持文字,超链接以及图片的拖动。往不同的方向拖动以上三种对象会执行不同的动作。 3、独创窗口...

    音速浏览器 V2.0.4.0.zip

    采用全新架构,双进程,低资源完美融入异步防假死模式,真正解决了浏览器崩溃和卡的问题,同时开400个网页也不怕,即使某些网页存在错误导致浏览器崩溃,音速也会自动恢复。 3)看视频无需等待 拥有强大的智能过滤...

    迅雷155浏览器 v1.0.15.135

    迅雷浏览器1.0正式版进行了大规模的改进和优化,对多进程架构进行了更多的优化,大幅提示了运行的速度与稳定性。同时更换了新的界面与皮肤,使得浏览器更加动感时尚。全新设计的起始页和配置页面,让您的操作更加...

    翼游影视浏览器 v2.9.0.zip

    3.多进程架构快速上网 4.智能防假死,永远不死的浏览器 5.防崩溃沙盒技术 6.集成下载功能,快速稳定下载 7.广告弹出拦截功能 8.鼠标手势操作 9.网络云收藏 翼游影视浏览器 v2.9.0更新内容 优化系统架构,...

    114啦浏览器Chrome v5.0.2.117.zip

    多进程架构,远离崩溃假死 多线程框架设计,极大的优化了浏览器的内存占用,并能够自动释放闲置内存,极大减少了崩溃的可能。 功能强大的历史浏览记录控制,让您随时随地浏览网页不留痕迹。

    超速浏览器5.1 正式版

    多进程多线程架构浏览器,全面防假死和程序奔溃,网页加载达到极速。 2、个性皮肤 提供大量个性皮肤,可在工具菜单对皮肤进行管理,也可到官网下载更多皮肤。 3、鼠标手势 增强了浏览网页的便捷性,鼠标右键代替...

    基于B_S架构的高并发虹膜识别系统_徐云涛.pdf

    在云服务器端使用Django、Nginx框架搭建部署虹膜识别系统,利用MySql存储用户信息,并且通过多线程、多进程技术基于CPU核心加快图像处理及并行搜索速度。实验结果表明,与普通虹膜识别系统相比,该模型百张图像处理速度...

    谷歌浏览器稳定版_80_X64.exe

    谷歌浏览器的耀眼之处在于多进程架构,很大程度上避免了恶意网页和应用软件的侵入而崩溃。谷歌浏览器官方下载版是基于其他开源软件基础上开发的,Chrome浏览器下载版目标是提升稳定性、兼具速度和安全性,并提供简单...

    miniblink浏览器模块(含源码)18-08-14

    而且由于是多进程架构,对资源的消耗也很夸张。如果只是想做个小软件,一坨文件需要带上、超大的安装包,显然不能忍受。nwjs,或者最近大火的electron:和cef内核类似,都是chromium内核。缺点和cef一模一样。优点是...

    Google Chrome Mac免费软件是Mac os系统上一款由Google公司开发的网页浏览器

    Chrome最大的亮点就是其多进程架构,保护浏览器不会因恶意网页和应用软件而崩溃。每个标签、窗口和插件都在各自的环境中运行,因此一个站点出了问题不会影响打开其它站点。通过将每个站点和应用软件限制在一个封闭的...

    光速浏览器V1.0.rar

    采用全新架构,双进程,低资源完美融入异步防假死模式,真正解决了浏览器崩溃和卡的问题,同时开400个网页也不怕,即使某些网页存在错误导致浏览器崩溃,光速会自动恢复。 4. 上手容易 人们总希望使用一款浏览器,...

    格子啦浏览器 v1.1.4.6.zip

    采用全新架构,双进程,低资源完美融入异步防假死模式,真正解决了浏览器崩溃和卡的问题,同时开400个网页也不怕,即使某些网页存在错误导致浏览器崩溃,光速会自动恢复。 真好用 上手容易人们总希望使用一款...

Global site tag (gtag.js) - Google Analytics