トラップ (コンピュータ)

コンピューティングオペレーティングシステムにおいて、トラップ例外あるいはフォールトとしても知られる)は、一般的に [NB 1][1]例外的な状況によって引き起こされる同期割り込みの一種である(例えば、ブレークポイントゼロ除算無効なメモリアクセス)。

通常、トラップの発生は、カーネルモードへ切り替わるという結果になる。切り替わる箇所は、元のプロセスに制御を戻す前にオペレーティングシステムがいくつかの行動を実行するところである。 カーネルプロセス内のトラップは、ユーザープロセス内のトラップよりもさらに深刻である。いくつかのシステムにおいて、致命的である。 いくつかの用途において、トラップという用語は、プロファイラあるいはデバッガへのコンテキストスイッチの開始を意図する割り込みを特別に指している。 [2]

元の用途から派生して、トラップは、いくつかの分野において通常の制御構造を横取りする仕組みを意味することがたまにある。 [3]

SNMPにおいて、トラップは、管理されたサブシステムに関する警報あるいは他の非同期イベントを報告するために使われるPDUの一種である。

関連項目編集

注釈編集

  1. ^ トラップは、専門用語として幅広い意味を持つ。あるコンピューターにおいて、トラップはあらゆる割り込みを意味する。あるマシンにおいては、あらゆる同期割り込み(CPUが生成する割り込みのこと。一方、非同期割り込みは外部ハードウェアによって発生する割り込み)を意味する。あるマシンにおいては、入出力に関連しないあらゆる割り込みを意味する。あるマシンにおいては、命令名にtrapを含む命令によって引き起こされる割り込みだけを意味する。その他の意味もある。

出典編集

  1. ^ Hyde, Randall (1996). "CHAPTER SEVENTEEN: INTERRUPTS TRAPS AND EXCEPTIONS (Part 1)". The Art Of Assembly Language Programming. 割り込みの概念は、長年に渡って範囲を拡大してきた。80x86ファミリーは、int 命令(ソフトウェア割り込み)の導入によって割り込み関連の混乱を増やすだけであった。実際に異なる複数のメーカーは、この章で論じている事柄を記述するために例外、フォールト、アボート、トラップ、そして割り込みのような用語を使ってきた。不幸なことにこれらの用語の正確な意味についての明確な合意はとれていない。異なる執筆者たちは、自分の都合に合わせて異なる複数の用語を採用する。議論のためにそのような誤用された用語の使用を完全に避けたいと思う限り、この章で使用できる明確に定義された用語の集合を決めておくことは素晴らしいことである。それゆえに割り込み、トラップ、そして例外という3つの用語を選んでそれらを定義した。この章は、これらの用語に対する最も一般的な意味を使用しようと試みている。しかし、異なる文脈でそれらの用語を使用する他の教本を見つけても驚くことではない。
  2. ^ "The Jargon File, version 4.4.7". 27 October 2003. 2007年2月3日閲覧
  3. ^ "handler.apply() - JavaScript MDN:". 2020年8月12日閲覧