インタラプト

割り込みとは、プログラムが想定している以外のことが起こったために、マイクロプロセッサが指示されていないことを行うことです。割り込みは、プロセッサがハードウェアから信号を受け取ることで発生することがほとんどですが、プログラムと共に動作しているソフトウェアから発生することもあります。キーボードのキーを押したとき、内蔵タイマーが作動したとき、データ転送が行われたとき、その他プロセッサがすぐにアクションを起こす必要のあるイベントなどが、割り込みを引き起こす原因となることがあります。割り込みは、プロセッサがプログラムを実行している間、プログラムのソースコードのどこにあっても、いつでも発生する可能性があります。

この図は、割り込みが呼び出されたときの様子を示しています。Zoom
この図は、割り込みが呼び出されたときの様子を示しています。

割り込みの仕組み

ハードウェアまたはソフトウェアによる割り込み要求(IRQ)は、プロセッサ内の「割り込みハンドラ」または「割り込みサービスルーチン」(ISR)によって処理されます。ISRは、その時点で行っていることをスタックに格納し、特定の命令に従って、システムに代わって所定のタスクを実行します(実行するプログラムの一部である必要はありません)。ISRは、その命令に従い終わると、スタックに置いたものを取り返し、割り込みが入る前にやっていたことを続行します。

今日のプロセッサの多くの割り込みコントローラは、割り込みがどこから来たかなどに基づいて割り込みを分類するために、割り込みベクタを使用しています。ベクタには通常、割り込みが発生したときに実行しなければならないコードが含まれています。ISRは一般に、割り込みの処理、つまり「サービシング」を担当し、それ自体を動作状態に維持することもあります。

割り込みの用途

  • 一定時間ごとにタスクを起動する
  • いつ起こるかわからない外部機器への対応
  • 同期ポーリングの必要性を排除
  • オペレーティング・システム(OS)にアクションを起こさせること

質問と回答

Q:割り込みとは何ですか?


A:割り込みとは、外部からの事象により、実行中のプログラムに含まれないマイクロプロセッサが行う動作のことです。

Q: プロセッサで割り込みが最も多く発生する原因は何ですか?


A: ハードウェアからの信号を受信することにより、プロセッサ上で最も頻繁に割り込みが発生します。

Q:割り込みはソフトウェアで発生することもあるのですか?


A:はい、実行中のプログラムと並行して動作しているソフトウェアによっても割り込みが発生することがあります。

Q: 割り込みが発生する可能性のある事象の例をいくつか挙げてください。
A:キーボードのキーを押す、タイマーが切れる、データ転送が行われるなどがあります。

Q: 割り込みは、プログラムが実行されている場所に依存するのでしょうか?


A:いいえ、プログラムの実行中であれば、ソースコードのどの位置にいても割り込みは発生します。

Q: 割り込みはマイクロプロセッサーにとって望ましい事象ですか?


A: 割り込みは、プログラムの実行を中断させ、直ちに注意を払う必要があるため、通常、マイクロプロセッサにとっては望ましくない事象です。

Q: マイクロプロセッサはどのように割り込みに対応するのですか?


A: マイクロプロセッサは実行中のプログラムを一時的に中断し、実行中のプログラムに戻る前に割り込みサービスルーチン(ISR)を実行し、割り込みを処理します。

AlegsaOnline.com - 2020 / 2023 - License CC3