五千年(敝帚自珍)

主题:【原创】Chrome进程管理(1)---启动模式 -- 素里太守

共:💬40 🌺72
分页树展主题 · 全看首页 上页
/ 3
下页 末页
  • 家园 【原创】Chrome进程管理(1)---启动模式

    CHROME有4种启动模式,分别对应4种进程管理模式。俺就从易到难挨着个地数落一遍。

    Single process,单进程模式,命令行参数 --single-process。这个最简单了,传统上浏览器就是这么运行的,一个进程涵盖了浏览网页过程中的所有资源。

    Process-per-site,网站进程模式,命令行参数 --process-per-site。正在浏览的每个网站对应一个Render进程。什么叫Render进程?下面的下面的下面俺还要解释。那什么叫网站?怎么定义?GOOGLE是这样解释的:西西社区 --- ccthere.com,西西河典藏 --- cchere.com,淘客熙熙 --- talkcc.com都是单独的网站。如果用Chrome网站进程模式同时打开http://www.ccthere.com/和http://www.ccthere.com/forum/boards/,Chrome只分配一个Render进程渲染这两个不同的网页文件,维护网页的DOM, 运行其中的JavaScript代码。

    Process-per-tab,标签页进程模式,命令行参数 --process-per-tab。Chrome浏览器的每个标签页对应一个Render进程。这个东西倒是直观易懂,俺就不多费口舌了。

    Process-per-site-instance 网站实例进程模式,命令行参数没有,这是预置进程模式。如果用Windows或者Chrome的任务管理器观察,该模式标签页进程模式似乎没有差别 --- 浏览简单网页,Chrome的进程数目不变;但是用VS或者其他工具观察,差别就体现出来了。在Chrome打开1个标签页浏览不同的网页进程数目不变,但是从一个网站切换到另一个网站, Render进程的ID发生变化 --- 原先的Render进程被释放,回收,Browser生成新的Render进程用于新的网站。

    预告:Chrome进程管理(2)--- 威胁模型(Threat Model)

    其它链接

    关键词(Tags): #Chrome#进程#TAB#标签#Browser元宝推荐:爱莲,

    本帖一共被 1 帖 引用 (帖内工具实现)
    • 家园 【原创】Chrome进程管理(3)--- 进程,进程,还

      Chrome进程管理(3)--- 进程,进程,还是进程

      毛主席教导我们:路线是个纲,纲举目张。CHROME告诉我们:进程是个纲,纲举网(页)张。实际上IE8也教导我们了,可惜IE8那个BETA版不怎么好用。(俺在Windows Server 2008上安装试用的效果不佳。和别的软件混在一起,居然把俺的2008给搞蓝屏了---还是非常稳定的蓝屏。怎么启动都是蓝屏,瞎子害眼 --- 没治了。)

      什么是进程与线程?

      如果说OS(比如WINDOWS)是个大居民楼的话,进程就是大楼中的单元房,那个线程就是单元房中的睡房。通常情况下,用户启动一个(应用)程序就开启了一个进程,比如启动一个Microsoft Word,这就相当大楼里面的某个单元入住了一个(户)人(家)。传统的浏览器用的是大单元房的概念,一个Firefox就是一个进程,一个页面的TAB(睡房)就对应了一(多)个线程。这样做的好处是省资源。你想,如果一个大单元就一个厨房和厕所,住人的地方(睡房)不就多了吗?缺点吗,没有隐私,也不是很安全,特别是不是一家人住在一个单元内。想想看也是,隔壁睡房的张三带女朋友来幽会,动静闹得大了点,这不是给俺这王老五添堵吗;李四的前男友上门讨债来了,手上还牵了条大狼狗,俺就是呆在自己的小睡房也怕的要死,可惜睡房门口不能装防盗门(单元房门口到是可以装防盗门,整个单元房还可以装安全监控装置)。要是每个单元房都只有一个睡房,一个厨房,和一个厕所那就理想了。不过这样的话,大家都要有多多的米(建筑成本高)。

      与大居民楼中的单元房的概念类似,进程是OS(比如WINDOWS)安全设计中最基本的原始单位。一般而言,进程和进程不共享(虚拟)内存,彼此之间互不干扰。

      大居民楼里增加单元房的事情不是太好办。如果要加的话通常只能在楼顶上加盖的办法,受地基,结构,供电,给排水系统的限制,能增加的数目非常有限。计算机相对好办些,WINDOWS上进程这个东西理论上可以开很多很多,但受计算机速度和内存容量的限制,这个数目还是有相当的限制。否则,你的计算机不会比老蜗牛快多少。把时间回溯5年,那时的计算机基本上是单CPU,小于1 GB的内存。所以那个时候的应用(程序)大多是单进程的设计(别和俺抬杠服务器的事情)。当然即使现在,应用(程序)依然大多是单进程设计,不为别的原因,多进程的应用(程序)设计起来太复杂,实现的难度大了很多。想想看也是,如果兄弟家,父母家,岳父母家都住在一个大楼的不同单元内一定会增加很多的“沟通成本”;如果沟通不好的话,还会平白无故会生出很多事非。

      现在的情况和以前大不相同。现在买个计算机起码都是双(核)CPU, 2 GB的内存。游戏发烧友3,4(核)CPU,4 GB内存的机器都用上了。由于上网浏览成为计算机病毒流行和安全的头号威胁,采用多进程的设计的浏览器就变得既有必要又为可行。

      于是乎,GOOGLE宣布张三李四的那些问题解决了:Chrome中张三住的单元(Render Process)就他一人,他幽会的动静大了也吵不到别人;李四的男友可以上门讨债,但是那条大狼狗要寄放在大楼的拴狗房(Plugin Process);慢着,还有关键的一条 --- 进哪个单元前到门房(Browser Process)登记一下,每个单元只能会客一位(次),这样张三的女朋友林小姐和薛小姐也就相安无事了;当然,大狼狗进拴狗房,小京八也进拴狗房,牛进牛棚,叫驴有驴槽。

      预告:Chrome进程管理(4)--- 进程的分类,管理,和通信。

      关键词(Tags): #PLUGIN#线程#进程#Chrome#Chrome浏览器元宝推荐:铁手,
      • 家园 说到进程,想起Windows Mobile的不可思议来。

        太守说了:“WINDOWS上进程这个东西理论上可以开很多很多,但受计算机速度和内存容量的限制,这个数目还是有相当的限制”。限制归限制,理论上说还是成千上万的。但是,如果你是搞计算机的,而且没有研究过Windows CE,当你知道迄今为止所有的Windows Mobile系统的进程数限制时,一般还是要很震惊一下的。当年我就是这样的。当我看到时,而且确认没有印错时。我是着实感叹了MS的“伟大”。那么,到底是多少呢?

        32!!!!

        WM是基于WindowsCE的。迄今为止所有的WM都是基于CE5.0或更老的版本。CE6.0的进程数理论上来说可以到32K。但CE6.0虽然已经出来两年了,基于CE6.0的WM7还是要有的等的。所以,不管你的WM手机外表多酷,你家CE的居民楼就只有32个单元,甭管你是男女老少,亲疏远近,黑GG,白MM统统必须住到这32户里。当然了线程数并没有限制,你要是不怕你的程序慢的让蜗牛笑话,一个单元可以开成千上万的房间。

        打住,打住。我们还是听太守兄唠他的克里木嗑。

        • 家园 回WIFI兼NETONE

          还真是不好意思,俺也是WINDOWS的老用户了,还真是不知道CE 5.0有这么个限制 --- 从来没有玩过CE。

          按理讲进程的限制也不是什么大了不起的事情。不就是OS内部核心某个数据结构的数目大小。这里面商业层次的决策恐怕大于技术方面的决策,一如不同Windows Edition支持内存数量的大小。早年微软的客户没少提意见:你那个Windows NT Workstation和Windows NT Server用的不是一个内核吗?那个SERVER凭什么就卖那么贵的价钱?$MS真是从善如流,所以现在Workstation就叫XP和VISTA,SERVER就叫server 2003和2008。

          回到正题上来,这个Chrome系列。

          俺现在真是忙的四脚朝天。不为别的,还是这个Chrome。主要是围绕着Chrome做某种应用框架的开发,业余时间基本上都耗在这上面了。书到用时方恨少,写帖子是一码事,写码子又是另外一码事。有时候俺也自己问自己,Chrome的文档和代码都读懂了吗(实际上是应该读懂的部分,全部读懂基本上是MISSION IMPOSSIBLE)?因此这个系列基本上搁置下来,等俺把那个框架开发的有些眉目,也许俺会以一个全新的视角写这个系列。

          相比IE 8,CHROME的发布速度还是很快的,0.4.X.X一步就到了1.X.X.X(正式版).IE 8还不知何年正式发布?

      • 家园 这个系列也没下文了?

        邓侃兄的"Google集群"系列已经暂停了,这个系列难道也要暂停?

        你们都不好好相应铁老大打造IT专版的号召啊……

      • 家园 生动形象

        生动形象,深入浅出。

        差一点漏掉这篇文章。我说呢,怎么这太守怎么这么长时间不动笔了?去太守家园的院子转了转,才发现这篇文章。

        写长文不容易坚持下去。我琢磨着是不是可以把篇幅缩小一点,而且也不必追求结构完整。每篇短文只sell one or two points。这样写起来或许轻松点,轻松点就能长久点。

      • 家园 More about Chrome

        几个老大可能已经知道了,try

        about:stats

        about:network

        about:internets

        about:dns

        Google 确实野心不小, Chrome 已经不能算是单纯的browser 了, 难道真的要向M$(CE?) 发难了?

        more

        http://en.wikipedia.org/wiki/About:_URI_scheme

        • 家园 这个吗,俺的看法是。。。。。。

          近期目标是对Firefox的威胁;远期可能是对MS的威胁。

          1.x:\chrome\src\chrome\browser\resources目录下有若干个HTML文件,其中有about_memory.html,about_stats.html,......在Chrome中作为资源链接到DLL中,由browser_about_handler.cc中的类装入并提供相应的资源。

          2.Chrome至今没有类似Firefox Add-ons的公开开发文档出现(也许俺还没有看到?)。但resources目录下的HTML文件暴露了Chrome的一个野心 --- 采用Firefox Add-ons的思路将Firefox的第三方开发人员“拉“到自己的门下。毕竟Firefox有着丰富的第三方Add-ons,如果Chrome能提供一个类似的API的话......

          3.第三方完全可以采用Chrome的思路将自己的HTML文件“硬”编码到一个定制的“Krome”中,比如“西rome”。当然,相应的C++类要修改或者定义新的C++类。用AJAX + C++的方式是不是比纯C++的方式更加灵活,高效?如果把这个“Krome”仅限于某(些)个特殊的服务器,你说它是不是个应用程序而不是浏览器?

      • 家园 我VS2008 Build 失败了

        好像都是跟一个inline function 有关 :(

    • 家园 【原创】Chrome进程管理(2)---威胁模型

      高效,健壮,安全,兼容性,.....这样的一个序列可以很长。这里问题的关键是,软件(系统)的设计者如何考虑其优先次序。毫无疑问,安全性是当前浏览器设计时必须考虑的首要问题(之一?)。

      如何设计一个比较安全的浏览器是个非常复杂的问题?但是要设计安全的浏览器就必须要了解“威胁模型(Threat Model)”,舍此无他。

      You cannot build a secure system until you understand your threats. It's as simple as that.

      --- 摘自“Writing Secure Code,第二版”

      真实的情况是如此的简单 --- 如果你不对“威胁”有充分的了解,建造一个安全的系统就无从谈起。

      不过大家也别被“威胁模型(Threat Model)”给“威胁”了,这东西没有那么神秘。俺看看能不能用简单的语言把这个问题说道清楚。

      简而言之,“威胁模型(Threat Model)” --- 软件(系统)安全之需求分析。

      浏览器是个典型的网络客户端程序,主要的“威胁”来自上网。废话,打开IE,仅仅打开初始页about:blank,估计一年半载不会有任何“威胁”,但是这和戒网有区别吗?

      那些黑客是怎样“威胁”使用浏览器的上网客户?很简单。先架设一个服务器,比如www.黑黑河.com,用各种方法吸引人们来访问这个网站,然后根据某个浏览器的漏洞放置某个特殊的网页。如果用那个浏览器打开那个网页 --- BINGO,你中招了。除去威胁浏览器,还有“威胁”用户个人隐私,财务的很多办法。据称,大约花55美元能让50万用户中招。

      现在的主要问题是如何在浏览器内部和浏览器外部保护用户的安全。

      “威胁”浏览器内部的目的通常有以下几个:1.通过浏览器安装软件“劫持”用户机器。2.盗取用户键盘输入信息。3.窃取用户机器中的敏感数据与文件。

      即使浏览器本身的安全了也不意味着上网就是安全的。来自浏览器运行机器外部的“威胁”主要包括:网页仿冒诈骗(phishing),防火墙回绕,网站交叉...;来自浏览器运行机器内部的威胁包括其他程序的安全,比如其它的(浏览器)程序。想想看,如果Chrome自己是“安全”的但是IE让人劫持了,IE监测全部的用户键盘输入信息,哪你能放心地在Chrome上使用你的网上银行?更有甚者,你使用了一台"不安全"的机器上网。比如俺的一个“小朋友”在某个网吧玩了一次联机游戏,然后他在游戏中“超级兵器”就统统不见了

      ------据说损失价值达上千RMB。

      切记切记,即使考虑了各种安全因数设计的软件也不是永远安全的,道高一尺,魔高一丈,猫捉老鼠的“游戏”永远没有尽头;而且好猫也有“打盹”的时候 --- 没有不生虫的软件,没有没有漏洞的系统。

      预告:Chrome进程管理(3)--- 进程,进程,还是进程

      关键词(Tags): #Chrome#进程#威胁模型#Threat#Model
      • 家园 双宝

        恭喜:你意外获得【通宝】一枚

        谢谢:作者意外获得【通宝】一枚

        鲜花已经成功送出。

        此次送花为【有效送花赞扬,涨乐善、声望】

      • 家园 道高一尺魔高一丈

        好文,如果能把几个典型的威胁战术,仿冒诈骗,回绕防火墙,网站交叉等等,展开解释一下,就更有意思了。

        有一句没有完全明白,

        网站交叉...。想想看,如果Chrome自己是“安全”的但是IE让人劫持了,IE监测全部的用户键盘输入信息,哪你能放心地在Chrome上使用你的网上银行?

        如果IE会盗窃了用户隐私信息,那么正确的防范措施似乎是,禁用IE,改用Chrome。为什么连使用Chrome也不安全了呢?

        • 家园 关于“威胁”的补充说明

          仿冒诈骗,回绕防火墙,网站交叉

          这几个东西基本上不是浏览器“本身”的问题。这里简单的举两个例子。

          仿冒诈骗这个好解释 --- “山寨”网站。比如老铁有xxhere.com,俺就搞个xxxhere.com,而且页面文件“高仿”。哪天你不小心进来了,输入用户名“邓侃”,口令“邓侃的口令",你在xxhere.com的帐户就归俺了。如果把网银.com换成网瘾.com,通过类似的过程俺就可以从你的帐号向俺的帐号转钱了。

          网站交叉的问题有点复杂,其中有若干个分类。其中之一是仿冒诈骗的一个“变种”。比如某些网站(特别是论坛程序)允许用户直接“嵌入”HTML。最简单的方式是用frame“嵌入”一个网页。这样网站交叉变成了“仿冒诈骗”,不过这次“威胁”的目的可以但不限于盗取用户口令,引入的网页中可以嵌入很多JAVASCRIPT或者ActiveX的东西,然后 。。。。。。

          即使浏览器本身的安全了也不意味着上网就是安全的。浏览器外部的“威胁”主要包括:网页仿冒诈骗(phishing),防火墙回绕,网站交叉...。想想看,如果Chrome自己是“安全”的但是IE让人劫持了,IE监测全部的用户键盘输入信息,哪你能放心地在Chrome上使用你的网上银行?

          这段写的不好,俺把原文改一下。

          回绕防火墙就不说了。

分页树展主题 · 全看首页 上页
/ 3
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河