私は現代のCPUとオペレーティングシステムでの割り込み処理について読んでいますが、1つの点を理解できません:
一部のハードウェア デバイスがstate
CPU の割り込みピンの (電流/電圧?) を変更するとすぐに、CPU は優先命令の処理後に停止し、ジャンプして割り込みハンドラー コードを実行します。ここで、割り込みハンドラー コードがスケジューラーのデータ構造のある種の状態を変更する必要があると想像してください。ただし、OS が中断される前に、同じ構造内でも手探りでした。それはデータの混乱につながるため、解決策が必要です。
OS と割り込みハンドラーの両方が、共有データ構造を保護するためのアトミックな比較/設定メモリ操作によって実装されたセマフォを使用していると思います。ただし、そのようなセマフォを保持している間に OS が中断された場合、割り込みハンドラーは何もできず、割り込みは消えてしまいます。これは、そのセマフォを待っているビジー状態が OS に制御を返さないため、ロックが解放されないためです。
この問題はどのように解決されますか? 私が見逃しているトリックがあるはずです...