当前位置:主页   - 电脑 - 程序设计 - C/C++
chrome源码解析系列:Chrome框架一览
来源:网络   作者:   更新时间:2012-02-24
收藏此页】    【字号    】    【打印】    【关闭

  怎么开始研究它的框架?路在何方?

  研究这种源码,

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

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

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

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

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

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

  什么叫擒贼先擒王,

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

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

  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的消息系统。 进程,线程,消息之三角瓜葛

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明