Google Chrome源码剖析【序】

【序(本人什么都没作,彻底转载)】

开源是口好东西,它让这个充斥着大量工业垃圾代码和教材玩具代码的行业,多了一些艺术气息和美的潜质。它使得每一个人,不管你来自米国纽约仍是中国铁岭,都有机会站在巨人的肩膀上,若是不能,至少也能够抱一把大腿。。。html

如今我就是来抱大腿的,这条粗腿隶属于 Chrome(开源项目名称实际上是Chromium,原本Chrome这个名字就够晦涩了,没想到它的本名还更上一层楼…),Google那充满狼子野心的浏览器。每个含着金勺子出生的人都免不了被仰慕并被唾骂,Chrome也不例外。关于Chrome的优劣好坏讨论的太多了,基本已经被嚼成甘蔗渣 了,没有人愿意再多张一口了。俗话说,内行看门道外行看热闹,大部分所谓的外行,是经过使用的真实感觉来评定优劣的,这无疑是最好的方式。但恰恰仍是有自夸的内行,喜欢说内行话办外行事,一看到Chrome用到多进程就说垃圾废物确定低能。拜托,你们都是搞技术的,你知道多进程的缺点,Google也知道,他们不是政客,除了搞个噱头扯个蛋就一无所知了,人家也是有脸有皮的,写一坨屎同样的开源代码放出来遭世人耻笑难道会很开心?所谓技术的优劣,是不能 一律而论的,一样的技术在不一样场合不一样环境不一样代码实现下,效果是有所不一样的。既然Chrome用了不少看上去不是很美的技术,咱们是否是也须要了解一下 它为何要用,怎么用的,而后再开口说话?(恕不邀请,请自行对号入座…)。。。linux


人说是骡子是马拉出来遛遛,Google已经把 Chrome这匹驴子拉到了世人面前,你们能够随意的遛。咱们一直自夸是搞科学的,就是在努力和所谓的艺术家拉开,人搞超女评委的,能够随意塞着屁眼用嘴放屁,楞把李天王说是李天后,你也只能说他是艺术品位独特。你要搞科学就不行,说的不对,轻的叫无知,重的叫学术欺诈,结果一片惨淡。因此,既然代码都有 了,再说话,就只能当点心注点意了,先看,再说。。。windows

我已经开始遛Chrome这头驴了,确切一点, 是头壮硕的肥驴,项目总大小接近2G。这样的庞然大物要从头到脚每一个毛孔的大量一遍,那估计不咽气也要吐血的,咱又不是作Code review,不须要如此拼命。每个好的开源项目,都像是一个美女,这世界没有十全十美的美女,天然也不会有样样杰出的开源项目。每一个美女都有那么一两点让你最心动不已或者倍感神秘的,你会把大部分的注意力都放在上面细细品味,看开源,也是同样。Chrome对我来讲,有吸引力的地方在于(排名分先 后…):api

1. 它是如何利用多进程(其实也会有多线程一块儿)作并发的,又是如何解决多进程间的一些问题的,好比进程间通讯,进程的开销;
2. 作为一个后来者,它的扩展能力如何,如何去权衡对原有插件的兼容,提供怎么样的一个插件模型;
3. 它的总体框架是怎样,有没有很NB的架构思想;
4. 它如何实现跨平台的UI控件系统;
5. 传说中的V8,为啥那么快。浏览器

但Chrome是一个跨平台的浏览器,其Linux和Mac版本正在开发过程当中,因此我把全部的眼光都放在了windows版本中,全部的代码剖析都是基于windows版本的。话说,我本是浏览器新手、win api白痴以及并发处理的火星人,为了个人好奇投身到这个溜驴的行业中来,不免有学的不到位看的走眼的时候,各位看官手下超生,有错误请指正,实在看不下去,回家本身牵着遛吧。。。
扯淡实在是个体力活,因此后面我会少扯淡多说问题。。。多线程

关于Chrome的源码下载和环境配置,你们看这里(windows版本),只想强调一点,必定要严格按照说明来配置环境,特别是vs2005的补丁和windows SDK的安装,不然确定是编译不过的。。。架构

最后,写这部分惟一不是废话的内容,请记住如下这幅图,这是Chrome最精华的一个缩影,若是你还有空,必定要去这里进行阅读,其中重中之重是这一篇。。。并发

 

图1 Chrome的线程和进程模型
相关文章
相关标签/搜索