コンピュータおよび計算機科学におけるコンテキスト()とは、何らかのタスク(プロセス、スレッド、またはファイバー)によって使用されるデータの最小セットである。英語のは文脈や状況といった意味を持ちcontextの意味・使い方・読み方|英辞郎 on the WEB、タスクの状態(ステート)の集合を表すためにコンテキストという概念が用いられる。
概要 複数のタスクが同時並行的に動作するマルチタスク環境では、1つのタスクのみに計算資源(CPU)を占有させることはできず、短時間でタスクを切り替えながら(プロセッサ時間を割り当てながら)少しずつ実行する必要がある。オペレーティングシステム (OS) がタスクを中断する場合、タスクが再開された際に中断箇所からタスクを継続するため、プロセッサが実行中のタスクの内容(プログラムの実行状態)を保存しておく必要がある。この保存される一連の情報がコンテキストであるコンテキスト(コンテクスト)とは - 意味をわかりやすく - IT用語辞典 e-Words。タスクの割り込みが発生すると、OSはタスクを中断してプロセッサのコンテキストを保存し、割り込みハンドラ(interrupt service routine: ISR)が動作する。したがって、コンテキストが小さいほど、タスク切り替え(コンテキストスイッチ)のレイテンシ(遅延)はより小さくなる。
コンテキストのデータは、プロセッサレジスタ、タスクによって使用されるメモリ、またはタスクを管理するためにOSが使用する制御レジスタ内に配置されることがある。
ストレージメモリ(タスクで使用されるファイル)は、コンテキストスイッチの場合は「タスクコンテキスト」にとって重要ではない。
プロセッサ自身がコンテキストスイッチの仕組みをハードウェアによって実装していることもあるが、大規模な汎用OSの場合、一般的にはこの仕組みを使わず、OS側が制御するASCII.jp:意味の違いがわかる? タスクとプロセスとスレッド (2/4)。
ソフトウェアレベル OSやデバイスドライバーが管理するプロセッサ状態のようなハードウェアレベルの情報に限らず、各種APIなど、アプリケーションソフトウェアレベルの抽象化された状態情報に関しても、コンテキストという概念が使われることがある。以下はその例である。
Microsoft WindowsのGDIおよびDirect3D/Direct2Dには「デバイスコンテキスト」の概念があり、グラフィックスオブジェクト集合の保持、グラフィックスパイプラインステートの設定、描画命令の発行などを担当するDevice Contexts - Win32 apps | Microsoft LearnIntroduction to a Device in Direct3D 11 - Win32 apps | Microsoft LearnHow to render by using a Direct2D device context - Win32 apps | Microsoft Learn。 OpenGLには「OpenGLコンテキスト」の概念があり、OpenGLインスタンスに関連付けられたステートを保持するOpenGL Context - OpenGL Wiki。WindowsのWGLでは「レンダリングコンテキスト」とも呼ばれ、すべてのOpenGL命令を通過させるポートの役割を果たすRendering Contexts - Win32 apps | Microsoft Learn。OpenGL呼び出しを実行するスレッドはカレントコンテキストを持つ必要があり、スレッドローカルストレージの変数により保持される。 macOS/iOSのQuartz 2D(Core Graphics)には、描画パラメータや描画に必要なデバイス固有の情報を保持・管理する「グラフィックスコンテキスト」を表現するクラスとしてCGContextがあるCGContext | Apple Developer Documentation。 Androidには、アプリケーション環境に関する情報にアクセスするための抽象クラスとしてandroid.content.ContextがあるContext | Android Developers。 .NETには、論理的な実行スレッドに関する情報を格納するコンテナとして「実行コンテキスト」ExecutionContextがあるExecutionContext Class (System.Threading) | Microsoft Learn。.NET Frameworkでは、実行コンテキストはセキュリティコンテキスト、呼び出しコンテキスト、同期コンテキストを含んでいる。
脚注
関連項目 コンテキストスイッチ コンテキストアウェアネス
外部リンク
Context S-Cube Knowledge Model