私は、カーネルとこのタスクを担当するカーネルの部分によってどのように特権の分離が強制されるのかを知りたいと思います。Linuxカーネルのどの部分が権限分離を実施し、どのように実施していますか?
例えば、リング0とリング3の2つのプロセスが実行されていると仮定します。カーネルはどのように各プロセスのリング番号を追跡しますか?
編集:私はリング番号について知っています。私の質問は、特権レベルを知るためにプロセスをチェックするカーネル(モジュールまたは何か)の部分についてです。私は、プロセスの呼び出し回数をチェックするカーネルのコンポーネントがあると信じています。
[OSのRing 0とRing 3とは何か]の可能性があります(http://stackoverflow.com/questions/18717016/what-are-ring-0and -ring-3-in-os) –
[** OSのRing 0とRing 3とは何なのですか?](http://stackoverflow.com/questions/18717016/what-are-ring-0-and) -ring-3-in-os)である。可能な重複を越えて、この質問は接尾辞的なプログラミング質問だけであり、* Kernel Documentation *の質問のようです。 –
待ちます。 **ハードウェア**によってリングがチェックされていませんか?リング3でプロセスが実行されているとは、文字通りCPUがそのレベルで実行するように設定されていることを意味します。 OSがプログラムを実行する前にCPUモードを切り替え、再度呼び出されると、CPUはリング0にCPUを戻してOSを動作させます。あなたの質問に答えるには、これをチェックするカーネルのモジュールはありません。なぜなら、それを行うハードウェアだからです。カーネル、特にスケジューラーは、ユーザーコードを実行する直前に切り替わります。それだけです。 – Bakuriu