0

「オペレーティングシステムは最高レベルの特権で実行され、アプリケーションはシステムコールを介してサービスを要求できますSystem Call。これは多くの場合、割り込みを介して実行されます。割り込みは、自動的に CPU を必要な状態にします。カーネルに制御を渡します。これにより、要求されたサービスを呼び出し元のプログラムに許可するかどうかが決定されます。」

CPU を特定の特権レベルに物理的にどの程度入れることができますか?また、制御をカーネルに渡すとはどういう意味ですか? これらをCPUレジスタレベルで説明してください。

4

1 に答える 1

3

これは素晴らしい質問であり、特権レベルはオペレーティング システムの最も美しい概念の 1 つです。

ただし、このフォーラムは質問するのに適した場所ではありません。

しかし、あなたが尋ねたので、私はあなたに全体像を描きます. これで、OS が多くのプロセスのスケジューリングを行うことがわかりました。スケジューラは定期的に呼び出す必要があります。CPU は、タイマー割り込みを発生させるカウンターを維持します。

タイマー割り込みを処理するコードは、スケジューラを呼び出します。現在、スケジューリング中に OS レベルのデータ構造が変更されます (プロセス キューなど)。この時点で、何らかの理由でユーザー プログラムがアクティブになると、クラッシュにつながるデータ構造を混乱させる可能性があります。

これは特権レベルによって処理されます。そのため、スケジューリング中、CPU は特権モード (カーネル モード) にあると言われます。現在、ユーザー プログラムは CPU にアクセスできません。

ここに素晴らしい部分があります。この特権レベルの切り替えがソフトウェアによって行われると仮定すると、コマンドがあれば、悪意のあるユーザー プログラムによって悪用される可能性があります。

このため、切り替えをソフトウェアに頼ることはできません。ハードウェア サポートが必要です。ハードウェアは、割り込みを受信すると「特権ビットレジスタ」が設定されるように設計されています。割り込みコードが終了すると (スケジューリングが完了すると)、リターンによってハードウェアがビットをクリアします。

割り込み処理コードは、OS コード用に予約されたメモリ内の保護領域に配置されます。ユーザー プログラムはこのコードにアクセスできません (メモリのその部分にアクセスしようとすると、ハードウェアによって例外がスローされます)。

したがって、正気は保たれます。

于 2013-06-18T21:09:43.300 に答える