blog

フロントエンドのテストポイント - ブラウザのプロセススレッド編

1.GUIレンダリングスレッド 2.エンジンスレッド 3.イベントトリガースレッド 4.タイマートリガースレッド 5.非同期リクエストスレッド...

Jul 20, 2020 · 2 min. read
シェア

概念分析

  • プロセス:スケジューリングリソースを割り当てるオペレーティングシステムの最小単位。

  • スレッド:プログラム実行の最小単位

  • マルチプロセッシング:1つのオペレーティング・システム上で複数のアプリケーションを同時に実行したり、1つのブラウザで複数のタブを同時に開いたりします。

  • マルチスレッド:ブラウザカーネル内の複数のスレッドが協力してレンダリングジョブを完了します。

ブラウザのプロセス

  • ブラウザのメイン処理、ブラウザのタブ切り替え、戻る→更新などの操作
  • ネットワークリソースのロードを担当するネットワークプロセス
  • ピクセル描画を担当するGPUプロセス
  • プラグインのプロセス
  • レンダリング処理で、複数のタブが互いに影響しないようにしました。

ブラウザカーネル

GUIレンダリングスレッド

  • HTMLとCSSを解析し、DOM番号とレンダーツリーを構築します。
  • 時間:再描画、リフロー時に実行
  • 特徴:JSエンジンと相互排他的

JavaScriptエンジンスレッド

  • 役割:JSスクリプトプログラムの処理、V8エンジン、Chrome、Node.jsなどのJSコードのコンパイルが使用されています。

  • 原因:JSはシングルスレッド言語であり、イベントループによって非同期とマルチスレッドを実現しています。

  • 特徴:GUIエンジンと相互排他的

  • 構成:メモリヒープ、コールスタック

  • シングルスレッドなので、非同期タスクはイベントループ機構で実装されます。

イベントトリガースレッド

  • イベントループのテンポを制御し、実行スタックが、メッセージキューからタスクを取り出し、実行のために実行スタックに置くとき。
  • 実行スタックが空になると、メッセージ・キューからメッセージが取り出され、実行スタックに置かれます。
  • メッセージキューの維持

タイマー・トリガー・スレッド

  • setTimeout, setInterval

非同期リクエストスレッド

  • データのネットワーク要求を送信

<<<-

Read next

ソースコード解釈のHashMap部分

1、はキーバリュー型データ構造で、jdk1.7では連鎖テーブル+配列、jdk1.8では連鎖テーブル+配列+赤黒木というデータ構造になっています。赤黒木を導入した理由は、jdkでは

Jul 20, 2020 · 11 min read