40

GoogleChromeは各タブを別々のプロセスで実行すると言われています。したがって、1つのタブでクラッシュしても、他のタブで問題が発生することはありません。

AFAIK、マルチプロセスは主にGUIのない​​プログラムで使用されます。複数のGUIプロセスを1つのプロセスに組み込むことができる手法を読んだことはありません。

Chromeはどのようにそれを行いますか?

この質問をしているのは、複数のカメラメーカーのビデオデコードSDKを使用するCCTVソフトウェアを設計しているためです。その中には、安定性にほど遠いものもあります。そのため、これらのSDKをさまざまなプロセスで実行することを好みます。これはChromeに似ていると思いました。

4

5 に答える 5

43

基本的に、それらはすべてをGUIに接着する別のプロセスを使用します。

Google Chromeは、ブラウザ、レンダラー、プラグインの3種類のプロセスを作成します。

ブラウザ: ブラウザのタブ、ウィンドウ、および「クロム」を管理するブラウザプロセスは1つだけです。このプロセスは、ディスク、ネットワーク、ユーザー入力、および表示とのすべての対話も処理しますが、Webからのコンテンツを解析またはレンダリングしようとはしません。

レンダラー: ブラウザープロセスは多くのレンダラープロセスを作成し、それぞれがWebページのレンダリングを担当します。レンダラープロセスには、HTML、JavaScript、CSS、画像などを処理するためのすべての複雑なロジックが含まれています。Chromeは、AppleのSafariWebブラウザでも使用されているオープンソースのWebKitレンダリングエンジンを使用してこれを実現します。各レンダラープロセスはサンドボックスで実行されます。つまり、ディスク、ネットワーク、またはディスプレイに直接アクセスすることはほとんどありません。ユーザー入力イベントやスクリーンペイントなど、Webアプリとのすべてのやり取りは、ブラウザープロセスを経由する必要があります。これにより、ブラウザプロセスは、疑わしいアクティビティがないかレンダラーを監視し、エクスプロイトが発生した疑いがある場合はレンダラーを強制終了できます。

プラグイン: ブラウザプロセスは、Flash、Quicktime、Adobe Readerなど、使用中のプラグインの種類ごとに1つのプロセスも作成します。これらのプロセスには、プラグイン自体と、ブラウザーやレンダラーと対話できるようにするためのグルーコードが含まれています。

出典:Chromiumブログ:マルチプロセスアーキテクチャ

于 2010-01-07T10:25:28.493 に答える
19

この文脈では、基本的な設計は興味深いものです。

関連する設計ドキュメント、特にマルチプロセスアーキテクチャのセクションは次のとおりです。

アーキテクチャの概要:

ブラウザスレッドのアーキテクチャの概要

于 2010-01-08T14:48:12.613 に答える
0

Web ページをレンダリングする作業のほとんどは、物事がどこに行くのか (つまり、各画像をどこに配置するか、各テキストをレンダリングする色) を把握することです。その作業は別のプロセスで行われます。別のプロセスがすべての行き先を把握すると、その情報をメインの Chrome プロセスに渡し、画面にすべての要素を描画します。

ビデオ SDK システムがどのようにセットアップされているかは正確にはわかりません。ただし、ビデオを圧縮解除する 1 つのプロセスと、それをディスプレイにレンダリングする別のプロセスを持つことができます。ただし、ほとんどの場合、opengl または DirectX を使用しています。これらの API は、異なるプロセス間で物事を分割する方法にいくつかの制限を課す場合があります。

于 2010-01-08T00:13:11.917 に答える
-2

ウィンドウ オブジェクト (ユーザーがウィンドウとして見るものではなく、ウィジェットを実装するために使用される小さくて描画可能な長方形の領域) は、共有メモリまたは X プロトコルを使用して、プロセス間で完全に共有できます。ツールキットのドキュメントを確認してください。

于 2010-01-09T00:29:50.240 に答える