欢迎来到天天文库
浏览记录
ID:16553849
大小:71.35 KB
页数:27页
时间:2018-08-22
《谷歌chrome浏览器源码分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、谷歌chrome浏览器源码分析转自CSDN前言:1、之所以整理此文,有俩个目的:一是为了供自己学习研究之用;二是为了备份,以作日后反复研究。除此之外,无它。2、此文的形式其实是有点俩不像的,既不是个人首创即原创,又非单纯的转载(有加工),无奈之下,权且称作翻译吧。有不妥之处,还望原作者,及读者见谅。文中加入了我自己的一些见解,请自行辨别。顺便再说一句,duguguiyu写的这个Chrome源码剖析,真不错,勾起了偶对源码剖析的莫大兴趣。顺便透露下:在此份Chrome源码剖析之后,互联网上即将,首次出现
2、sgistlv3.3版的源码剖析拉。作者:本人July。是的,本人最近在研究sgistlv3.3版的源码,正在做源码剖析,个人首创,敬请期待。在本文具体针对源码剖析之前,再粗略回答一下网友可能关心的问题:chrome速度维护如此之快?据网上资料显示:有几个主要的关键技术:DNS预解析、Google自主开发的V8Javacript引擎、DOM绑定技术以及多进程架构等等。但这不是本文的重点,所以略过不谈。ok,激动人心的Chrome源码剖析旅程,即刻开始。Chrome源码剖析【序】此序成于08年末,Chr
3、ome刚刚推出之际。duguguiyu:"有的人一看到Chrome用到多进程就说垃圾废物肯定低能。拜托,大家都是搞技术的,你知道多进程的缺点,Google也知道,他们不是政客,除了搞个噱头扯个蛋就一无所知了,人家也是有脸有皮的,写一坨屎一样的开源代码放出来遭世人耻笑难道会很开心?所谓技术的优劣,是不能一概而论的,同样的技术在不同场合不同环境不同代码实现下,效果是有所不同的。."Chrome对我来说,有吸引力的地方在于(排名分先后…):1、它是如何利用多进程(其实也会有多线程一起)做并发的,又是如何解决
4、多进程间的一些问题的,比如进程间通信,进程的开销;2、做为一个后来者,它的扩展能力如何,如何去权衡对原有插件的兼容,提供怎么样的一个插件模型;3、它的整体框架是怎样,有没有很NB的架构思想;4、它如何实现跨平台的UI控件系统;5、传说中的V8,为啥那么快。但Chrome是一个跨平台的浏览器,其Linux和Mac版本正在开发过程中,所以我把所有的眼光都放在了windows版本中,所有的代码剖析都是基于windows版本的。有错误请指正。关于Chrome的源码下载和环境配置,大家可自行查找资料,强调一点,
5、一定要严格按照说明来配置环境,特别是vs2005的补丁和windowsSDK的安装,否则肯定是编译不过的。最后,写这部分唯一不是废话的内容,请记住以下这幅图,这是Chrome最精华的一个缩影:图1Chrome的线程和进程模型Chrome源码剖析【一】--多线程模型【一】Chrome的多线程模型0.Chrome的并发模型如果你仔细看了前面的图,对Chrome的线程和进程框架应该有了个基本的了解。Chrome有一个主进程,称为Browser进程,它是老大,管理Chrome大部分的日常事务;其次,会有很多R
6、enderer进程,它们圈地而治,各管理一组站点的显示和通信(Chrome在宣传中一直宣称一个tab对应一个进程,其实是很不确切的…),它们彼此互不搭理,只和老大说话,由老大负责权衡各方利益。它们和老大说话的渠道,称做IPC(Inter-ProcessCommunication),这是Google搭的一套进程间通信的机制,基本的实现后面自会分解。Chrome的进程模型Google在宣传的时候一直都说,Chrome是onetaboneprocess的模式,其实,这只是为了宣传起来方便如是说而已,基本等同
7、广告,实际疗效,还要从代码中来看。实际上,Chrome支持的进程模型远比宣传丰富,简单的说,Chrome支持以下几种进程模型:1.Process-per-site-instance:就是你打开一个网站,然后从这个网站链开的一系列网站都属于一个进程。这是Chrome的默认模式。2.Process-per-site:同域名范畴的网站放在一个进程,比如www.google.com(由于此文形成于08年,所以无法访问,你懂的)和www.google.com/bookmarks就属于一个域名内(google有自
8、己的判定机制),不论有没有互相打开的关系,都算作是一个进程中。用命令行–process-per-site开启。3.Process-per-tab:这个简单,一个tab一个process,不论各个tab的站点有无联系,就和宣传的那样。用–process-per-tab开启。4.SingleProcess:这个很熟悉了吧,即传统浏览器的模式:没有多进程只有多线程,用–single-process开启。关于各种模式的优缺点,官方有官方的说法,大家自己也会有自己
此文档下载收益归作者所有