3

Unix ライクなマシンのユーザー モードとスーパーバイザー モードについていくつか質問があります。

ユーザーモードとスーパーバイザーモードの違いは何ですか? ユーザー プロセスがすべてのメモリとハードウェアにアクセスできず、すべての命令を実行できないことはわかっています。これ以上のことはありますか?

異なるモードを持つことの利点は何ですか?

ユーザーモードからスーパーバイザーモードに切り替える際に必要な手順は何ですか?

ユーザープログラムからシステムコールが発生した場合、ユーザーモードからスーパーバイザーモードにモードを変更する必要があります。int x80を使用してx86マシンでこれが達成されることを他の場所で読みました。では、モード切り替えは割り込み処理とどう違うのでしょうか?

コンテキストスイッチとどう違うのですか?

スーパーバイザ モードは、さまざまなアーキテクチャでどのように実装されていますか?

回答やポインタをいただければ幸いです。

4

2 に答える 2

5

CPU は、「特権」と判断された領域へのアクセスを物理的に許可しません。これはハードウェアで強制されるため、オペレーティング システム自体を保護する機能が提供されます。このメカニズムがなければ、オペレーティング システムに「セキュリティ」はありません。たとえば、コードの最もあいまいな部分がカーネル メモリにアクセスして、すべてのパスワードを読み取ることができるからです。

ユーザー モードからスーパーバイザー モードへの切り替えは、コンテキストの切り替えであるため費用がかかります。セキュリティ上の理由から、キャッシュをフラッシュする必要があります (そうしないと、意図しないものにアクセスできてしまう可能性があります)。

コンテキストの切り替えに関しては、これには本質的に、タスクを実行するためのカーネル モードへの切り替えが含まれます。CPU スケジューラのタイマー割り込みが発生すると、カーネル モードに切り替わり、次に実行するタスクを選択してから、ユーザー モードに戻り、次のタスクを再開します。

于 2009-01-26T05:59:54.653 に答える
3

次の 2 つの概念があります。

  • システムコール実行時と復帰型システムコール実行時に切り替わるソフトウェアユーザー/カーネルモード、
  • ハードウェア ユーザー/スーパーバイザー モード。これらは割り込みで互いに切り替えられます。

HW スーパーバイザ モードで実行されるコードはほとんどなく、主に低レベルの割り込みルーチンとスタートアップの最初の部分です。SW カーネル モードのほとんどでさえ、HW ユーザー モードで実行されます。

于 2009-01-26T06:28:22.520 に答える