April 2026
356 pages
4h 48m
Japanese
割り込みは難解なものの1つです。従来のアプリケーションとは勝手が違います。割り込みは突然発生し、コードのフローが変更されます。割り込みが発生すると特定の関数が呼ばれます。割り込み関連のコードは高速である必要があるため、一部はアセンブリ言語で記述されている場合もあります。割り込みは非同期動作となるため、バグの解析が困難でもあります。
しかし、割り込みは難しいものではありません。仕組みを理解すれば、ソフトウェア設計においても役に立ちます。
ルーブ・ゴールドバーグ(Rube Goldberg)マシン†1を考えてみましょう。図5-1のニワトリに注目してください。
[†1] 訳注:単純なことを実現するだけなのに、過剰に複雑な装置のことです。Rube Goldbergは漫画家で、漫画に登場する発明品が由来です。日本では類似した例によくピタゴラ装置が挙げられます。
ニワトリがボタンを押すと、割り込みがプロセッサに送られます。プロセッサは実行中だったコードを保存し、呼び出すべき割り込み専用のコードを検索します。検索したら、そのコードを呼び出して処理を実行します。コードが終了すると、プロセッサは保存したコードを復帰し、再実行します。
図5-1 ニワトリがボタンを押すと、イベントループのアクションから関連するアクションが連鎖する
以下に割り込みが発生したときの動作をもう少し詳しく説明します。プロセッサとインタフェースはソフトウェアAPIのようなもの( ...
Read now
Unlock full access