オペレーティングシステムのカーネルモードとユーザーモードの切り替えが、ハードウェアまたはOS自体によって行われているかどうかは疑問でした。 私は、ユーザプロセスがカーネルモードに入るためには、システムコールを行い、いくつかのカーネルコードを実行できることを理解しています。システムコールが行われると、プロセスはカーネルモードに入り、すべてのメモリがアクセス可能になります。これが起こるためには、割り込みハンドラがページテーブルを切り替えるか変更する必要があると思います。これは本当ですか?そうでない場合、CPUはカーネルモードで動作しており、制限された(ユーザープロセスにアクセスできない)メモリにアクセスするときにページ違反する必要はないと、どのように認識していますか?カーネル/ユーザーモード間の変更は、ハードウェアまたはソフトウェアによって行われますか?
ありがとうございます!
にいたとき、それが設定された方法により、ハードウェアが応答することを、ソフトウェアコマンドを実行する必要!私はまた私がそれを非常にうまく説明すると思うこのサイトを見つけた:http://www.codinghorror.com/blog/2008/01/understanding-user-and-kernel-mode.html ページフォールトかどうかCPUのように思えるまたはCSレジスタに格納されている値に基づいていない(これはx86固有の可能性があります)。 – user1096294