ハードウェア割り込みとソフトウェア割り込みの違いは何ですか?

ハードウェア割り込みとソフトウェア割り込みの違いは何ですか?

両方についての私の理解を概説します。グーグルでいろいろ調べましたが、自分の知識に自信がありません。訂正して下さい!

ハードウェア割り込みは、CPU 時間を別のプロセスに再割り当てするために、オペレーティング システムのイベント スケジューラによって生成されます。これは本当ですか?

ソフトウェア割り込みは、たとえばファイルを読み取る実行中のプログラムから生成される可能性があり、そのためには適切なオペレーション システム コールに CPU を再割り当てする必要があります。これは本当ですか?

他の種類のソフトウェア/ハードウェア割り込みはありますか?

答え1

ハードウェア割り込みとソフトウェア割り込みは、主にその生成方法が異なります。ハードウェア割り込みは、タイマー、キーボード、ネットワーク カードなどのハードウェアによって生成されますが、ソフトウェア割り込みは、特別なソフトウェア命令 ( などint 0x80) によってトリガーされます。また、それらの役割にも関連する違いがあります。ハードウェア割り込みハンドラーは、ハードウェア イベント (ネットワーク インターフェイスに到着したパケットなど) を処理することになっていますが、ソフトウェア ハンドラーは、割り込み命令を実行した別のソフトウェア (通常はアプリケーション) を処理することになっています (たとえば、アプリケーションに代わってカーネルにファイルへのアクセスを要求するため)。

タイマー割り込みは、実際にはオペレーティング システムのスケジューラによって定期的に制御を取り戻し、さまざまな操作 (リソース アカウンティング、コンテキスト スイッチなど) を実行するために使用されます。

ソフトウェア割り込みを生成することはカーネルと通信する 1 つの方法であり、一部のプラットフォームではシステム コールを呼び出すために使用される場合があります。

関連情報