オペレーティング システムの概念 (Silberschatz、Galvin、Gagne)、第 6 版、第 20 章を読んでいます。Linux カーネル コードはプリエンプティブルではないことを理解しています (2.6 バージョンより前)。ただし、ハードウェア割り込みによって中断される可能性があります。カーネルがクリティカル セクションの途中で割り込みが発生し、カーネルもクリティカル セクションを実行した場合はどうなりますか?
私が本で読んだことから:
Linux が使用する 2 番目の保護方式は、割り込みサービス ルーチンで発生するクリティカル セクションに適用されます。基本的なツールは、プロセッサの割り込み制御ハードウェアです...
このスキームは、ISR にクリティカル セクションがある場合に使用されます。ただし、それ以上の割り込みを無効にするだけです。そもそも、この割り込みによって中断されたカーネル コードはどうなるのでしょうか?