カーネルモードで実行されるプロセスをプリエンプションできない理由

カーネルモードで実行されるプロセスをプリエンプションできない理由

ユーザーモードプロセスはプリエンプティブであると読みましたが、なぜカーネルモードプロセスではないのですか?

答え1

「カーネルプリエンプションは、すべてまたはほとんどのデバイスドライバがカーネルスペースで実行されるモノリシックカーネルとハイブリッドカーネルで主に使用される方法です。プロセスを表す)を実行できるようにします。ドライバまたはカーネル機能(システムコールなど)が実行を完了し、プロセッサ制御をスケジューラに返すまで、協力的に待たずにドライバまたはカーネルの他の部分を制御します。

このアプローチは、モノリシックカーネルとハイブリッドカーネルには2つの主な利点があります。つまり、デバイスドライバが無限ループやその他の回復不可能な状態に入り、システム全体が故障する可能性があります。モノリシックコアの一部のドライバとシステムコールは遅く実行され、実行が完了するまでプロセッサ制御をスケジューラまたは他のプログラムに返すことはできません。 」

https://en.wikipedia.org/wiki/Kernel_preemption

関連情報