OSの特権レベルと基盤となるハードウェアの特権レベルの違いは何ですか?すべてのシステムコールがカーネルへのトラップを引き起こしますか?システムコールがトラップを引き起こすのはなぜですか?アセンブリコードのINなどの特権命令が原因ですか?
1425 次
1 に答える
3
質問に直接答えるには:
OS の特権レベルと基盤となるハードウェアの特権レベルの違いは何ですか?
コード レベルで実施する必要がある特権 (つまり、特権命令) は、ハードウェアでサポートされている必要があります。多くの OS セキュリティ レベル (つまり、特定のハードウェア デバイスへのアクセス許可) では、その非常に特定の機能を認証するためのハードウェア サポートは必要ありませんが、少なくともコードがデバイスにアクセスするのをブロックするためのハードウェア サポートが必要です。つまり、OS が特権レベルを実装できるかどうかは、基盤となるハードウェアに依存しますが、2 つが同じである必要はありません。
すべてのシステム コールがカーネルにトラップを引き起こしますか? システムコールがトラップを引き起こすのはなぜですか? アセンブリ コードの IN などの特権命令が原因でしょうか。
それは本質的に正しいです。トラップは、特権のないコードが特権レベルに移行できる自然なメカニズムです。たとえば、ユーザー プログラムがハードウェアの一部にアクセスする必要がある場合、IN と OUT には特権が与えられているため、カーネルに「トラップ」する必要があり、カーネルは必要な操作を実行して戻ります。
于 2012-08-31T19:46:51.670 に答える