chromium学习:进程模型

  • Post author:
  • Post category:其他

    在我们继续我们的源码分析之前,我们先来补一下基础。


    今天,我们一起看一下chromium的进程模型。


    当年chrome刚出来的时候,多进程模型也是大力宣传的一点。那么多进程有什么好处呢?


    chromium的官方文档是这么解释的:以前,我们的浏览器就像旧时代的操作系统,单用户协同工作的多任务操作系统。一个恶意的程序就能使得整个操作系统崩溃。同样,一个恶意的网页也能使得浏览器崩溃。现代操作系统把这些用用程序分割在不同的进程里面,进程之间有很好的保护,这样,一个进程崩溃了不会影响到其他进程,更不会影响到操作系统。基于同样的道理,浏览器应该像操作系统一样向多进程模型演进。

    很有道理,是不是?

 

   那么,chromium支持哪些进程模型呢?这里我大致介绍一下,因为我发现这里可能有很多误解。


    1. 默认的,Process-per-site-instance。这个类似javascript的同源策略,不过不同的是,把子域以及含端口的网站也划拉进来了。也就是说,这些都会用一个进程。


    2. process-per-site。启动选项 –process-per-site。这个模型除了1的同源策略外,增加了一项,对于同一个网站,维护一个进程。比如在一个tab里面打开了http://blog.csdn.net/awebkit,然后在另一个tab里面同样打开http://blog.csdn.net/awebkit,使用此模式,发现他们是在同一个进程内。


  3.process-per-tab。启动选项–process-per-tab。这可不是一个tab一个进程。由javascript连接的tab在一个进程内。也就是说,打开一个tab,然后只要是通过javascript打开的tab都会在同一个进程内。如果手动打开一个新tab,则会增加一个新进程。


  4. single-process。启动选项–single-process。这个就是传统的单进程模式。学习chromium的时候很有用哦


  上面说的都是render进程。那chromium中还有别的进程吗?

  其他的进程:沙盒进程和插件进程。所有的render进程不是直接使用资源的,而是通过沙盒进程。关于沙盒部分,以后再详细介绍。插件也会运行在独立的进程。


  好了,chromium支持的进程模型大致这些。

  然后我们来看看多进程之间是如何协同工作的。


  仔细看看下面这张图:



   




 


版权声明:本文为awebkit原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。