注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

写着玩

Bob

 
 
 

日志

 
 
 
 

chrome源码解析系列:Chrome框架一览  

2009-12-01 16:18:14|  分类: Chrome |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

怎么开始研究它的框架?路在何方?
研究这种源码,

我的理解就是不停地提出问题,

然后解决自己提出的问题。

那么研究chrome,我应该怎么样给自己提出问题呢?

不一样的人提出的问题不同,得出的结论也就不同。

像我这样的小菜鸟提出的问题当然就是菜鸟了级别的了,

但是我是认真的,我会坚定不移的解决自己提出的问题,坚持不懈,持之以恒,愚公移山…..还有什么类似的成语看客帮我想想,先就不废话了,进入正题----给自己提问题。

 

什么叫擒贼先擒王,

丫的抓住了老大还怕什么?

那么我应该怎么抓住chrome中的关键代码呢?

Chrome的结构如何呢?

 

先来看chrome为我们提供的一张进程图:

 


详细资料参见Multi-process Architecture

 

在这里申明一下:

准备写的这个系列是为了梳理自己的学的知识。内容可能会凌乱,逻辑性不强,让别人看的很晕等副作用。

 

上面这张图片要随时会翻出来看看,如此一张粗狂而奔放,简洁而精炼的一张图J。

 

关于 chrome框架有个问题要弄清楚:

1:进程:

每个进程之间的关系如何?

进程间如何通讯?

2:线程:

chrome 的线程如何分布?

如何通讯?

每种进程中都有那些线程?

3:消息系统:

chrome 的消息网络是如何组织的?

chrome中消息有多少种类?

如果分派消息?

这些消息如果在进程之间,线程之间传递的?

 

让我暂时忘记那些琐碎的细节,只要抓住了几个重要的筋骨,细节问题都会被牵连到的?

现在我得和那些烦人的细节说过几天见。

 

看了上面的那张图片,我会对chrome 的进程模型了解一点?

 

一个浏览器的主进程<BrowserProcess>,N个渲染进程<RenderProcess>。

主进程中包括了UI线程<MainThread>和资源分派线程<IOThread>,

一个渲染进程包括了资源分派线程<IOThread>和主渲染线程<RenderThread>

其中浏览器进程和渲染进程之间靠的是通道<Channel>.来进行连接的。

 

下面分别多上面提到的三部分做重点研究。

 

 

Chrome的进程体系。
chrome有4种启动方式

1:每个TAB一个进程。

2:每个域名一个进程。

3:每个网页一个进程。

4:每个网页以及从这个网页说打开的其他连接一个进程。

 

上面四种方式由用户启动时通过命令行传入。

可参考Process Models  这里不作累述。

 

 纵观代码,Chrome中进程无非三种类型:

1:主进程<皇上>

2:渲染进程<大臣>

3:插件进程<大臣的家属>《关于插件进程,这里先当它是透明的,以后再相会》

 

所有粗线条的事务都由主进程来拍板决定,

那些事务呢?

数据库线程,

读写文件线程,

沙箱<浏览器中所谓的沙箱是指屏蔽掉改进程访问计算机本地资源的能力,这里先跳过去不表>

IO线程,

以及一些其他的辅助线程的执行。

 

BrowerProcess 环境中包含了上面几个线程,这些到线程体系中在表。

值得一题的是,这些线程并非在BrowerProcess进程创建后立马就创建所有的这些线程,

相反,它采用一种lazyCreate的策略,即是到了有运行需要的时候在创建。

这样就加快了浏览器的启动速度。

 

先抛开一些烦人的东西<插件进程,沙箱,….>,

让我先单独BrowerProcess和RenderProcess之间的通讯。

因为我需要冷静。

 

注意:这里我需要进入代码细节了,不再奔放中粗狂,而是需要展示细腻的一面的时候了。

来吧,让我深入代码深处,揭示其细节。

Chrome的线程体系。
 

Chrome的消息系统。
 

进程,线程,消息之三角瓜葛


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bzero1982/archive/2008/10/09/3044250.aspx

  评论这张
 
阅读(604)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017