2011-10-25 40 views
0

スーパーバイザーモードとユーザーモード「スーパーバイザー」と「ユーザー」モードを別々にする必要はありますか?

OSにこの区別が必要なのはなぜですか?

私はスーパバイザモードがOSサポートのためであり、ユーザモードがアプリケーションサポートのためのものであることを知っています。私は、OSの操作がスーパーモードでのみ行われる間に、ユーザーの操作がユーザーモードでのみ行われることを保証するために、これらが使用されていることを漠然と理解しています。私は欠けている可能性のあるギャップを埋めるために、もう少し詳細な議論を探しています。

ありがとうございました。

答えて

1

スーパーバイザモードでは、スタックポインタの2番目のコピーが提供されます。ユーザースタックとスーパバイザスタックは、別々のメモリ領域にあります。現在のタスクのスタックポインタは監視モードまたはユーザモードを指します。

USP - A7:ユーザスタックポインタ

SSP - A7: - 現在のトップレベルのタスクの一つの各モードは、コードの自己完結型のスレッドであるので、監督スタックポインタ

各モードは、スタックポインタを有しています、もう1つはOSです。両方が同じスタックを使用していた場合、オペレーティングシステムがユーザーアプリケーション用に割り当てられたスタックを弓形にする可能性があります。言い換えると。 OSは、任意のオペレーティングシステム機能をサポートするためにスタックの制限が何であるかを知りません。

2つの別々のスタックを持つ方がはるかに安全です。システムが1つのstakcしか持たない場合、オペレーティングシステムはスタックポインタレジスタを独自に調整して、異なるメモリ領域が適切に使用されるようにする必要があります。 OS用のメモリとタスク用のメモリがあります。

3

ユーザーモードでは、ランダムなメモリへの書き込みなどの操作を禁止し、互いのプログラムを保護します。スーパバイザモードでは、オペレーティングシステムが入出力を開始したり、プログラムを開始したりする必要があるため、それらの操作を許可します。

たとえば、メモリ保護を見てください。プログラムが互いのメモリに書き込むのを防ぎます。しかし、オペレーティングシステムが機能するためには、各プログラムのメモリページマッピングを設定する必要があります。プログラムの設定が許可されたらどうなりますか?保護はありません。各プログラムは保護を無効にすることができます。これが、スーパーユーザモードがそのような操作を行うために必要とされる理由です。オペレーティングシステムだけがそれを実行でき、ユーザプログラムは実行できません。

Btwスーパーバイザモードでは、「ユーザ操作」は禁止されていません。何でも構いません。

+0

ありがとうございました – BigBug

関連する問題