http://www.cnbeta.com/articles/109595.htm

随着Web浏览器重要性的日益突出,恶意软件、木马、间谍软件等网络攻击也呈现逐渐的上升。而面对 如此众多的潜在威胁,为了确保用户的安全性和稳定性,浏览器不得不改进浏览器的性能,其中之一就是向用户提供多进程浏览。在浏览器中添加多进程浏览功能之 后,即使是浏览器其中的一个进程出现了崩溃现象,其他的进程也不会受到影响。例如,如果一个网站中有漏洞或包含恶意代码,它就有可能摧毁当前运行在这个网 站上的标签,但是它却不会影响其他的进程或整个浏览器。

   据国外媒体报道,随着时代的进步,互联网已经成为人们生活的重要组成部分,而Web浏览器也理所应当地成为计算机等设备中最为重要的软件。

 
  不过,随着Web浏览器重要性的日益突出,恶意软件、木马、间谍软件等网络攻击也呈现逐渐的上升。而面对如此众多的潜在威胁,为了确保用户的安全性和稳定性,浏览器不得不改进浏览器的性能,其中之一就是向用户提供多进程浏览。
 
  在浏览器中添加多进程浏览功能之后,即使是浏览器其中的一个进程出现了崩溃现象,其他的进程也不会受到影响。例如,如果一个网站中有漏洞或包含恶意代码,它就有可能摧毁当前运行在这个网站上的标签,但是它却不会影响其他的进程或整个浏览器。
 
  目前,有很多的浏览器厂商采用了多进程标签浏览的概念,其中包括谷歌Chrome、微软IE8和Mozilla Firefox,而众多基于WebKit的浏览器也将在不久之后采用多进程标签浏览这个功能,例如苹果的Safari浏览器。
 
  不过,虽然上述浏览器都采用多进程标签浏览概念,但是他们在浏览器中执行多进程标签浏览的方法却是不同的。
 
  #1、谷歌Chrome/Chromium的多进程架构
 
  谷歌Chrome是首款采用多进程浏览概念的浏览器,它还具备最为复杂的用于隔离浏览器各个组成部分的系统。
 
  在Chrome中,谷歌通过out of process plugins(OOPP)功能将所有的插件进程(如Flash、Java、PDF阅读器等)与的浏览器进程隔离,进而提升Chrome浏览器的安全性。 也就是说,即使是Chrome中有插件出现崩溃现象,也并不会影响整个浏览器的运行
 
  总得来讲,谷歌Chrome和Chromium中包含以下4中主要的进程类型:
 
  *浏览器进程——用于处理用户界面和管理所有其他的进程,其运行在浏览器的最顶级;
 
  *渲染进程——用于处理独立浏览器标签中的渲染,值得注意的是,一个渲染进程能够处理多个标签;
 
  *插件进程——每个浏览器插件如Adobe Flash或Java都运行在它们自己的独立进程中,这些插件进程能够与各自的渲染进程互通;
 
  *扩展进程——浏览器中的扩展也拥有各自的独立进程,以避免互相干扰。


图1:谷歌Chrome多进程架构

 
  #2、微软IE8 Loosely-Coupled IE(LCIE)
 
  在最新一代浏览器IE8中,微软添加了被称为“Loosely-Coupled IE(LCIE)”的架构。
 
  通过Loosely-Coupled IE(LCIE)架构,IE8将主要的浏览进程与渲染进程相隔离。
 
  主要的进程处理浏览器、用户界面和框架(窗口),用于存储选项卡。在IE8中,多个选项卡是运行在相同的进程中的,不过不同安全级别的选项卡是相互分开的。ActiveX空间是通过选项卡进程进行处理的。


图2:微软IE8多进程架构

图(3)

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


图4: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。
 


图1:WebKit中的多进程架构

[转载]详解主流浏览器多进程架构:Chrome、IE的更多相关文章

  1. [转载]详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表

    [转载]详解网络传输中的三张表,MAC地址表.ARP缓存表以及路由表 虽然学过了计算机网络,但是这部分还是有点乱.正好在网上看到了一篇文章,讲的很透彻,转载过来康康. 本文出自 "邓奇的Bl ...

  2. IE8"开发人员工具"使用详解下(浏览器模式、文本模式、JavaScript调试、探查器)

    来源: http://www.cnblogs.com/JustinYoung/archive/2009/04/03/kaifarenyuangongju2.html 在上一篇文章IE8“开发人员工具” ...

  3. [转载]详解ssh端口转发(二)

    关于使用ssh portforwarding来进行FQ的操作,网络上已经有很多很好的文章,我在这里只是画两个图解释一下. 首先要记住一件事情就是: SSH 端口转发自然需要 SSH 连接,而 SSH ...

  4. java三篇博客转载 详解-vector,stack,queue,deque

    博客一:转载自http://shmilyaw-hotmail-com.iteye.com/blog/1825171 java stack的详细实现分析 简介 我们最常用的数据结构之一大概就是stack ...

  5. MapReduce过程详解(基于hadoop2.x架构)

    本文基于hadoop2.x架构详细描述了mapreduce的执行过程,包括partition,combiner,shuffle等组件以及yarn平台与mapreduce编程模型的关系. mapredu ...

  6. Netty4详解三:Netty架构设计(转)

    http://blog.csdn.net/suifeng3051/article/details/28861883?utm_source=tuicool&utm_medium=referral ...

  7. 转载--详解tomcat配置

    http://www.importnew.com/17124.html  原文链接 几乎所有容器类型的应用都会包含一个名为 server.xml 的文件结构.基本上,其中的每个元数据或者配置都是容器完 ...

  8. window.open()详解及浏览器兼容性问题

    一.基本语法:window.open(pageURL,name,parameters)其中:pageURL 为子窗口路径name  为子窗口名字parameters 为窗口参数(各参数用逗号分隔) 二 ...

  9. 浏览器多进程架构、浏览器内核多线程、js单线程、GUI 渲染线程 与 JavaScript引擎线程互斥 原理

    浏览器是多进程的,有一个主控进程,以及每一个tab页面都会新开一个进程(某些情况下多个tab会合并进程). 出处:http://www.imweb.io/topic/58e3bfa845e5c1346 ...

随机推荐

  1. Muduo学习笔记(一) 什么都不做的EventLoop

    Muduo学习笔记(一) 什么都不做的EventLoop EventLoop EventLoop的基本接口包括构造.析构.loop(). One Loop Per Thread 一个线程只有一个Eve ...

  2. 关于使用AzureCli登陆提示SSLError的错误解决方案

    如果使用Powershell的azure cli命令登陆Azure时提示sslerror,大致如下的错误: 这个是由于你的网络前有网关造成的ssl验证没法通过. 解决方案: 在powershell中执 ...

  3. Beta阶段展示博客

    Beta阶段展示博客 1. 团队成员的简介和个人博客地址 刘畅 博客园ID:森高Slontia 身份:PM 个人介绍: 弹丸粉 || 小说创作爱好者 || 撸猫狂魔(x || 生命的价值在于创造 (我 ...

  4. asp.net 网页拉伸 到300%不变形方法一

    网页拉伸到300%控件和表格不会出现太大变形 方法: 1.对主页面采用百分比宽度(Width="100%") 2.对于表格使用百分比宽度,包括表格宽度和表格中顶端td宽度 3.对t ...

  5. Leetcode题库——40.组合总和II

    @author: ZZQ @software: PyCharm @file: combinationSum2.py @time: 2018/11/15 18:38 要求:给定一个数组 candidat ...

  6. 个人作业3——个人总结AlPha阶段

    一.Alpha版本的总结 1.感受 Alpha版本已经结束了,回顾整个过程,我最大的遗憾就是项目完成得不是很理想,同时觉得自己做得不够多.不够好. 2.我做了哪些工作 数据库的连接,部分团队博客:部分 ...

  7. spring mvc自定义注解--访问时验证

    作用:在访问controller的方法时,判断用户是否是登陆状态. step1:定义注解 import java.lang.annotation.ElementType; import java.la ...

  8. Windows 下 Docker 的简单学习使用过程之二 Docker For windows

    1. Docker For windows 最新版也支持到了 docker ce 18.06 (这个博客的编写时间是 2018.8.17 当时是最新的) 2. 下载安装. 大概500m 左右的安装文件 ...

  9. dx、aapt工具

    1.DX命令: Dalvik虚拟机不能直接运行Java代码编译出来的文件,只能运行.dex文件,所以需要将.class,.jar等文件通过DX工具转换成.dex文件. 2.AAPT命令 一个Andro ...

  10. TClientDataSet[9]: 计算字段和 State

    TClientDataSet 中计算字段有两种: Calculated(计算字段).InternalCalc(内部计算字段). 两者区别是: Calculated 在每次需要时都要重新计算; Inte ...