コンテキスト (計算機科学)

コンピュータおよび計算機科学におけるコンテキスト（）とは、何らかのタスク（プロセス、スレッド、またはファイバー）によって使用されるデータの最小セットである。英語のは文脈や状況といった意味を持ち、タスクの状態（ステート）の集合を表すためにコンテキストという概念が用いられる。
概要.
複数のタスクが同時並行的に動作するマルチタスク環境では、1つのタスクのみに計算資源（CPU）を占有させることはできず、短時間でタスクを切り替えながら（プロセッサ時間を割り当てながら）少しずつ実行する必要がある。オペレーティングシステム (OS) がタスクを中断する場合、タスクが再開された際に中断箇所からタスクを継続するため、プロセッサが実行中のタスクの内容（プログラムの実行状態）を保存しておく必要がある。この保存される一連の情報がコンテキストである。タスクの割り込みが発生すると、OSはタスクを中断してプロセッサのコンテキストを保存し、割り込みハンドラ（interrupt service routine: ISR）が動作する。したがって、コンテキストが小さいほど、タスク切り替え（コンテキストスイッチ）のレイテンシ（遅延）はより小さくなる。
コンテキストのデータは、プロセッサレジスタ、タスクによって使用されるメモリ、またはタスクを管理するためにOSが使用する制御レジスタ内に配置されることがある。
ストレージメモリ（タスクで使用されるファイル）は、コンテキストスイッチの場合は「タスクコンテキスト」にとって重要ではない。
プロセッサ自身がコンテキストスイッチの仕組みをハードウェアによって実装していることもあるが、大規模な汎用OSの場合、一般的にはこの仕組みを使わず、OS側が制御する。
ソフトウェアレベル.
OSやデバイスドライバーが管理するプロセッサ状態のようなハードウェアレベルの情報に限らず、各種APIなど、アプリケーションソフトウェアレベルの抽象化された状態情報に関しても、コンテキストという概念が使われることがある。以下はその例である。