2

OSの特権レベルと基盤となるハードウェアの特権レベルの違いは何ですか?すべてのシステムコールがカーネルへのトラップを引き起こしますか?システムコールがトラップを引き起こすのはなぜですか?アセンブリコードのINなどの特権命令が原因ですか?

4

1 に答える 1

3

質問に直接答えるには:

OS の特権レベルと基盤となるハードウェアの特権レベルの違いは何ですか?

コード レベルで実施する必要がある特権 (つまり、特権命令) は、ハードウェアでサポートされている必要があります。多くの OS セキュリティ レベル (つまり、特定のハードウェア デバイスへのアクセス許可) では、その非常に特定の機能を認証するためのハードウェア サポートは必要ありませんが、少なくともコードがデバイスにアクセスするのをブロックするためのハードウェア サポートが必要です。つまり、OS が特権レベルを実装できるかどうかは、基盤となるハードウェアに依存しますが、2 つが同じである必要はありません。

すべてのシステム コールがカーネルにトラップを引き起こしますか? システムコールがトラップを引き起こすのはなぜですか? アセンブリ コードの IN などの特権命令が原因でしょうか。

それは本質的に正しいです。トラップは、特権のないコードが特権レベルに移行できる自然なメカニズムです。たとえば、ユーザー プログラムがハードウェアの一部にアクセスする必要がある場合、IN と OUT には特権が与えられているため、カーネルに「トラップ」する必要があり、カーネルは必要な操作を実行して戻ります。

于 2012-08-31T19:46:51.670 に答える