カーネルモードからユーザーモードへの割り込み禁止

カーネルモードからユーザーモードへの割り込み禁止

RFE(Return with Exception)は、カーネルモードからユーザーモードに切り替えるのに役立つ特権コマンドであることを読みました。

特権命令であるため、実行中にソフトウェア割り込み(トラップ)が生成されます。

実行中にカーネルが中断されないように、他のすべての割り込みまたは割り込み許可フラグが実行中に無効になるかどうかを知りたいです。ソフトウェア割り込み中に割り込みが禁止されますか?

ベストアンサー1

免責事項:私はMotorola 68000のOSレベルコードでのみ働きました。この答えは同様の2リングシステムの観点から書かれていますが、概念は現代のマルチリングシステムにうまく変換する必要があります。


ユーザーモードとシステムモードの2つの特権レベルを持つシステムでは、アプリケーションはユーザーモードで実行され、カーネルはシステムモードで実行されます。ユーザーモードアプリケーションが特権コマンドを実行しようとすると、カーネルが状況をどのように処理するかを決定できるようにトラップが発生します。

一方、カーネルには必要なコマンドを実行する権限が既にあるため、トラップは実行されません。

特に、MC680x0では、すべてのトラップハンドラがデフォルトで特権モードで実行されます。したがって、すべてのトラップハンドラは影響を受けず、別のトラップの作成を心配することなく「例外から戻る」を使用できます。ユーザーモードコードでは例外を返すことができないため、これらの命令を使用しないでください。

簡単に言えば、この問題は、「例外を返す」を使用してユーザーモードに切り替えたときにトラップが生成されないという誤った前提に由来します。

おすすめ記事