Chromium のプロセスとソースの関係
Chromium の内部構造(プロセスとソースコード)の関係を調べてみます。本家サイトはこちらです。
Getting Around the Chromium Source Code Directory Structure
ソースコードからビルドした人は既にお分かりと思いますが、Chromium のソースコードは短時間で全てを読み切れる量ではありません。これは本家サイト(以下引用)でも以下のように言及されています。
この記事ではプロセスがどのような役割で分離されているかを調べます。
chrome.exe をプロファイリングする
chromium を起動すると複数のプロセスが生成されます。これは chromium のプロセスが役割に応じて分散されているためです。役割に関してのドキュメントはこちら Multi-process Architecture (chromium.org) にありました。
実際に chrome.exe を調べてみます。ここでは Very Sleep というプロファイラーを使用します。
- chrome.exe process list
chromium のキャッシュがない状態で起動すると以下のプロセスが生成されます。
- CrBrowserMain
Very Sleepy で chrome.exe を上から順に一つずつクリックしていきます。ここで重要なのは一番最初に表示される Thread Name です。これはプロセス起動時の名称になっているようです。
このプロセスは CrBrowserMain という名称です。
- CrGpuMain
- network.CrUtilityMain
- storage.CrUtilityMain
- CrRendererMain
ソースの配置と各Mainが定義されているソースの場所
各プロセスのエントリーが定義されているソースは全て content に配置されています。ソース配置構成の説明はここにありました。
- CrBrowserMain 該当箇所
- CrGpuMain 該当箇所
- network.CrUtilityMain/storage.CrUtilityMain 該当箇所
- CrRendererMain 該当箇所
chromium ソースコード リーディングの入り口には適切なプロセス解析
chromium のソースコードを読んでいくため、プロセスや機能分担を理解することで効率良く読んでいくことができるようです。どこかの機会で少し改変した chromium ができたらご紹介したいと思います。