Google Chrome如何在单个应用程序中将标签隔离到单独的进程中?

abl*_*lmf 38 browser architecture google-chrome multiprocess

我们被告知Google Chrome会在单独的流程中运行每个标签.因此,一个选项卡中的崩溃不会导致其他选项卡出现问题.

AFAIK,多进程主要用于没有GUI的程序.我从来没有读过任何可以将多个GUI流程嵌入到单个GUI流程中的技术.

Chrome是如何做到的?

我问这个问题是因为我正在设计CCTV软件,它将使用来自多个相机制造商的视频解码SDK,其中一些远非稳定.所以我更喜欢在不同的流程中运行这些SDK,我认为这与Chrome类似.

Dan*_*llo 42

基本上,他们使用另一个过程将它们全部粘合到GUI中.

Google Chrome会创建三种不同类型的流程:浏览器,渲染器和插件.

浏览器: 只有一个浏览器进程,用于管理浏览器的选项卡,窗口和"chrome".此过程还处理与磁盘,网络,用户输入和显示的所有交互,但它不会尝试从Web解析或呈现任何内容.

渲染器: 浏览器进程创建许多渲染器进程,每个进程负责渲染网页.渲染器进程包含用于处理HTML,JavaScript,CSS,图像等的所有复杂逻辑.Chrome使用开源WebKit渲染引擎实现了这一点,该引擎也被Apple的Safari Web浏览器使用.每个渲染器进程都在沙箱中运行,这意味着它几乎不能直接访问磁盘,网络或显示器.与Web应用程序的所有交互(包括用户输入事件和屏幕绘制)都必须通过浏览器进程.这使浏览器进程可以监视呈现器是否存在可疑活动,如果它怀疑已经发生了攻击,则会将其终止.

插件: 浏览器进程还为正在使用的每种类型的插件创建一个进程,例如Flash,Quicktime或Adobe Reader.这些进程只包含插件本身,以及一些粘合代码,以便它们与浏览器和渲染器进行交互.

来源:Chromium博客:多进程架构

  • 它们不属于浏览器进程.浏览器进程只是管理它们(它创建它们,停止它们并监视它们).浏览器进程还会创建浏览器GUI,但选项卡的内部逻辑(易受崩溃的危险部分)由单独的渲染器进程(每个选项卡一个)处理. (4认同)
  • 我不明白.看起来这些选项卡属于浏览器进程,这些渲染如何在选项卡上绘制图片和文本属于另一个进程? (2认同)

Nic*_*lay 19

在这种情况下,基本设计很有趣.

以下是相关的设计文档,特别是多进程架构部分.

建筑概述:

浏览器线程的架构概述