これは素晴らしい質問であり、特権レベルはオペレーティング システムの最も美しい概念の 1 つです。
ただし、このフォーラムは質問するのに適した場所ではありません。
しかし、あなたが尋ねたので、私はあなたに全体像を描きます. これで、OS が多くのプロセスのスケジューリングを行うことがわかりました。スケジューラは定期的に呼び出す必要があります。CPU は、タイマー割り込みを発生させるカウンターを維持します。
タイマー割り込みを処理するコードは、スケジューラを呼び出します。現在、スケジューリング中に OS レベルのデータ構造が変更されます (プロセス キューなど)。この時点で、何らかの理由でユーザー プログラムがアクティブになると、クラッシュにつながるデータ構造を混乱させる可能性があります。
これは特権レベルによって処理されます。そのため、スケジューリング中、CPU は特権モード (カーネル モード) にあると言われます。現在、ユーザー プログラムは CPU にアクセスできません。
ここに素晴らしい部分があります。この特権レベルの切り替えがソフトウェアによって行われると仮定すると、コマンドがあれば、悪意のあるユーザー プログラムによって悪用される可能性があります。
このため、切り替えをソフトウェアに頼ることはできません。ハードウェア サポートが必要です。ハードウェアは、割り込みを受信すると「特権ビットレジスタ」が設定されるように設計されています。割り込みコードが終了すると (スケジューリングが完了すると)、リターンによってハードウェアがビットをクリアします。
割り込み処理コードは、OS コード用に予約されたメモリ内の保護領域に配置されます。ユーザー プログラムはこのコードにアクセスできません (メモリのその部分にアクセスしようとすると、ハードウェアによって例外がスローされます)。
したがって、正気は保たれます。