Oracle® Solaris 11.2 デバイスドライバの記述

印刷ビューの終了

更新: 2014 年 9 月
 
 

ソフトウェア割り込み

Oracle Solaris DDI/DKI は、ソフトウェア割り込みをサポートしています。ソフトウェア割り込みは、ソフト割り込みとも呼ばれます。ソフト割り込みは、ハードウェアデバイスではなくソフトウェアによって開始されます。この割り込みのハンドラは、システムとの間でも追加および削除する必要があります。ソフト割り込みハンドラは割り込みコンテキストで実行されるため、割り込みハンドラに属するタスクの多くを実行するために使用できます。

ハードウェア割り込みハンドラは、これらのタスクの実行中にほかのシステムアクティビティーを中断しなければならないことがあるため、タスクをすばやく実行する必要があります。この要件は、システムスケジューラの優先順位レベルより高い優先順位レベルで動作する高レベルの割り込みハンドラに特に当てはまります。高レベルの割り込みハンドラは、システムクロックの割り込み処理を含め、優先順位の低いすべての割り込み処理をマスクします。したがって、割り込みハンドラは、mutex の獲得など、割り込みハンドラのスリープの原因になることがあるアクティビティーにかかわることを避ける必要があります。

ハンドラがスリープ状態になると、クロックがマスクされてスリープスレッドのスケジューリングができなくなるため、システムがハングアップすることがあります。この理由で、高レベルの割り込みハンドラは通常、最小限の処理を優先順位の高いレベルで実行し、ほかのタスクをソフトウェア割り込みに委任します。ソフトウェア割り込みは、高レベルの割り込みハンドラの優先順位レベルの下で動作します。ソフトウェア割り込みハンドラはシステムスケジューラの優先順位レベルの下で動作するため、ソフトウェア割り込みハンドラは、高レベルの割り込みハンドラができなかった処理を行うことができます。