Google Chrome のつくりを考察する:サンドボックス

2008-09-23 04:17:08

何かと話題の Google Chrome 、DNSプリフェッチっで表示が速い!、動作が軽い!、サンドボックで安全!とかいろいろ言ってますが、実際のところそのあたりどうなんすかね、というのを気がついたところから調べてみてます。

サンドボックスはプロセスを分離する事で実装している

chrome.exe の動作を見てると、おもしろい事に気がつきます。ひとつのサイトを見てるだけでも、プロセスが複数あがります。いろんなサイトを見ると、プロセスがどんどん起動されてきます。

 

Windows 標準のタスクマネージャだとこんな感じ。最初、不正に残ったゴミプロセスか~さすがBeta版!とややがっくりんこしていたのですが、どうも違うみたい。そもそも、優先度が意図的に通常以下になっている。

 

こんどは、Process Explorer (Sysinternals いまや Microsoft TechNet) で拝見。 プロセスのプライオリティが、どんどん変わっているだけでなくて、そもそも親子関係にある事がわかります。

なかなかに渋い設計で動作している chrome.exe  

回りくどいのが苦手なので結論から言ってしまいますが、レンダリングエンジンをサンドボックス化している、という実装の大枠が、これのようです。で、この実装をいろいろ調べてみたところ、以下の設計図で実装されているようだ、というところまできました。以下、パワーポイントで起こしてますんで多少見づらいですがお許しを。

 

この設計、見ればみるほど、後発の強みが感じられます。(これであっている、と決めつけてますが。。 

複雑化するメモリ管理を見据えているというか、遅れてはいるものの Windowsだけでなく、UNIX系(MacOS X、Linuxディストリビューション群) への移植をちゃんと考えているとか、セキュリティ対策とか、クライアントで軽く感じさせる操作感を実現するノウハウとか、もういろいろ読み取れます。

次回以降、その辺に落ちているツールを使って、この設計の想像図をどうやって起こしていってるのか、そして、この設計の感心しどころを、つらつらと書いてみようと思ってます。 

 

※このエントリは builder メンバーにより投稿されたものです。朝日インタラクティブ および builder編集部の見解・意向を示すものではありません。