360浏览器资深架构师王志刚 360浏览器应邀参加中国软件开发者大会→买购网
作者: 发布时间:2022-08-21 17:24:56 分类:最新信息 浏览:
摘要:
360浏览器资深架构师王志刚给我们做了一个《浏览器的多进程架构与渲染优化》的讲座。首先介绍了多进程体系结构的安全性和稳定性问题。他说,世界互联网用户数量是一万亿,这是一个非常庞大的天文数字。如果要解决网络运行的稳定性和安全性问题,基本上是不可能的。所以,我们必须从.
【CSDN现场报道】2012中国软件开发者大会(SDCC)于9月8日至9日在国家会议中心举行。这次会议是由CSDN和《程序员》杂志联合举办的。作为年度最具实践性的技术盛会,大会汇聚了国内外一线互联网和企业软件公司的实践专家,深入分享和讨论了高可用性系统架构、海量数据挖掘、开放平台服务与架构、智能推荐系统、异构计算等议题。
360浏览器资深架构师王志刚给我们做了一个《浏览器的多进程架构与渲染优化》的讲座。首先介绍了多进程体系结构的安全性和稳定性问题。他说,世界互联网用户数量是一万亿,这是一个非常庞大的天文数字。如果要解决网络运行的稳定性和安全性问题,基本上是不可能的。所以要从建筑学的角度来解决这个问题。通过设计一个更好的架构并将这种危害限制到最小,多进程浏览器可以满足这一要求。
360浏览器高级架构师王志刚
以下是发言记录:
各位下午好。我是360的王志刚。我演讲的题目是浏览器多进程架构和渲染优化。其实浏览器的作用很重要。首先,多进程架构存在安全性和稳定性问题。如果打开一个页面,整个浏览器都会崩溃。如果一个插件存在安全漏洞,就会对打开的页面或其他插件造成安全隐患。2008年开放开放多进程浏览器时,多进程架构的管理机制隔离了浏览器的渲染进程,渲染进程相互隔离。每个进程都有自己独立的空间,所以如果一个进程崩溃,不会影响其他进程。
目前,全球互联网用户数量为一万亿,这是一个天文数字。如果要解决网络运行的稳定性和安全性问题,基本上是不可能的。所以要从架构上解决这个问题,设计一个更好的架构,把危害限制到最小,这样多进程浏览器才能满足这个要求。我们可以看看,因为有很多第三方应用,包括很多浏览器。它有一个分支,把流程分为两种,一种是UI流程,把推广管理模块和UI界面放入其内核的UI流程中。
我们可以看到有三种类型的进程,即、和PluginProcess。IE8和Sarfari在引入多进程架构上有显著差异。主进程和UI进程,不同的标签运行在不同的标签进程中。所谓的保护模式就是通过这些手段让标签在一个受限的进程中运行。IE的保护模式取决于这种安全机制的实现。本来就是控制这种访问方式,查URL,定个态度,关闭保护模式。这种多进程的成本比原来贵很多,所以IE根据物理内存设置了不同的上限。如果超过这个上限,就会做一个负载均衡和一个调度,根据流程、安全属性和一致性放入相应的流程中,从而达到资源的合理使用。
Chrome多进程架构,实际上在这种架构当中,可以说叫一切接近,主进程,渲染进程,主进程是负责历史记录这些资源的管理,同时还要负责跟这种系统的交互,比如说屏幕的显示,鼠标键盘事件的处理,网络请求等等。渲染进程,做页面的布局,做渲染。扩展进程,每一个扩展进程在独立的进程当中,扩展也是特殊的进程。每一个PlugIn,它是直接操纵操作系统,CPU进程,负责页面渲染加速,可以显示到窗口。谈到插件是有安全隐患的,新的插件的平台,实际上是一套。
接下来我们看一下Renderer进程模型,实际上多进程我们直观上理解,指的就是有多个Renderer,是不是广告说上每打开一个进程就是Renderer,实际上是有四个,比如说打开一个导航网站,像京东的链接,两个标签运行在一个进程当中,外部的链接也被认为是可信任的,如果大家通过开关去修改默认设置的话,是可信任的。这个其实是最简单的,但是每看一个标签就打开一个进程,显然这是比较消耗资源的。
我们多次谈到了砂浆,和我们知道的拦截,实际上就是利用操作系统机制来实现的,类似于IE的保护模式。Renderer砂箱,利用操作系统的四个部分,用户令牌,对象,管理级别,Renderer通过调用API,来为进程设定一个令牌,可以有不同的使用权限。对于文件系统是有要求的,在系统上是不起作用的。
作业对象和桌面对象,实际上它可以控制,切换桌面,控制剪切板。管理级别,仅仅支持W7,没有支持XP,这种级别运营除了不能访问系统的核心区域之外,权限是非常大的。Renderer低端级别运行,受到很大的限制,比如说它只能访问MY,标签的共享内存以及管道,其他很多事情就无法访问。如果一旦操作系统有漏洞被攻破,Renderer实际上也会被攻破。
在这种多进程架构下,砂箱有很多的限制,对于渲染进程,渲染完了之后要把渲染后的图形显示在窗口,这些都是怎么做到的呢?我们看一下渲染的架构。在说渲染架构之前,我们先提一些Webkit,这是基础,页面加载的同时,解析之后生成一个DOMtree,树形的结构,为了方便渲染,又创建了一个RendeObjectTreer,可以简单认为定向的,只不过节点不同的树形结构。为了表现网页上不同的层次,大家可以看一下这个图,反过来看,它实际上可能会做一个一对多的影射关系。
有了这个树形结构之后,就可以进行渲染,从最底层开始,每建立一个Renderer的时候,都是下面的步骤,RenderLayer有两个成员列表,这两个列表用于描述当前层的下面和上面,在渲染过程要友列表,如果下面这个层渲染完之后,就会渲染当前的RenderLayer,如何去绘制跟它相关联的东西。RenderLayer,绘制的时候也是一个递归的过程,是有一定条件的。
做绘制的时候,实际上会调用一个共享的对象,这个对象实际上被认为是具体的平台的抽象,执行实际的绘制,生成位图。
渲染进程,把它生成渲染位图,怎么解决这个问题呢?实际上引入了一个共享内存位图的概念,这个区域实际上在渲染之后,通过请求主进程来创建共享主进程的区域,过去共享内存的地址,通知主进程,位图已经渲染完毕,这个时候主进程拿到这个位图,把位图显示到目标窗口。刚才讲的这些过程都是软件渲染的过程,这就要通过CPU的帮助。
前面提到了GPU的进程,实际上是做GPU加速的,怎么在软件渲染过程当中转变成进程加速呢?前面讲到的GPU进程,实际上它可以访问系统,可以把位图直接显示到窗口。
GPU进程它有几个好处,一是安全性,二是健壮性,三是一致性。这是安全和性能很好的平衡的设计,我认为是这是一个完美的设计。GPU加速当中要用到显卡的驱动程序,如果驱动程序错误,会导致GPU渲染发生崩溃,因为这是独立的GPU进程,即使是GPU进程崩溃了也不会影响到其他。这个接口的内容,这种模型是CS的图形,客户端服务器的模式,GPU进程从共享内存上解析,调用。
GL的命令,这种方式可以充分把CPU和GPU最大化进行,渲染进程,渲染结果,放到共享的区域上,放到GPU上,通过这样的架构,实现GPU加速,以后有时间我们可以探究更深入的细节,谢谢大家。
更多精彩内容,请关注CSDN微博,2012中国软件开发者大会图文直播专题。
本文为CSDN原创,未经允许不得转载。如需转载请联系market@csdn.net
- 微信:微信二维码
- 电话:
- 最新信息排行
-
- 03-051微商代理加盟童装各种档次价钱均有
- 03-052怎样鉴别chanel高仿包的真伪
- 03-053怎样寻找高品质莆田货?莆田货高质量一手货源在哪里
- 03-054化妆品的基本保养准则有哪些?
- 03-055学会搭建朋友圈,微商之路才好走!
- 03-056引流前做好3方面准备,才能事半功倍!
- 03-057月子期间买的最有用的母婴用品是什么?
- 03-058在秋冬季那个牌子的身体乳最好用,强烈推荐
- 03-059直播、微商:你没试过,别瞧不起
- 03-0510怎样买到质量好的莆田鞋,教你拒绝做傻白甜
- 随机tag
-















