概念分析
プロセス:スケジューリングリソースを割り当てるオペレーティングシステムの最小単位。
スレッド:プログラム実行の最小単位
マルチプロセッシング:1つのオペレーティング・システム上で複数のアプリケーションを同時に実行したり、1つのブラウザで複数のタブを同時に開いたりします。
マルチスレッド:ブラウザカーネル内の複数のスレッドが協力してレンダリングジョブを完了します。
ブラウザのプロセス
- ブラウザのメイン処理、ブラウザのタブ切り替え、戻る→更新などの操作
- ネットワークリソースのロードを担当するネットワークプロセス
- ピクセル描画を担当するGPUプロセス
- プラグインのプロセス
- レンダリング処理で、複数のタブが互いに影響しないようにしました。
ブラウザカーネル
GUIレンダリングスレッド
- HTMLとCSSを解析し、DOM番号とレンダーツリーを構築します。
- 時間:再描画、リフロー時に実行
- 特徴:JSエンジンと相互排他的
JavaScriptエンジンスレッド
役割:JSスクリプトプログラムの処理、V8エンジン、Chrome、Node.jsなどのJSコードのコンパイルが使用されています。
原因:JSはシングルスレッド言語であり、イベントループによって非同期とマルチスレッドを実現しています。
特徴:GUIエンジンと相互排他的
構成:メモリヒープ、コールスタック
シングルスレッドなので、非同期タスクはイベントループ機構で実装されます。
イベントトリガースレッド
- イベントループのテンポを制御し、実行スタックが、メッセージキューからタスクを取り出し、実行のために実行スタックに置くとき。
- 実行スタックが空になると、メッセージ・キューからメッセージが取り出され、実行スタックに置かれます。
- メッセージキューの維持
タイマー・トリガー・スレッド
- setTimeout, setInterval
非同期リクエストスレッド
- データのネットワーク要求を送信
<<<-




