レディ キューにプロセスが 1 つしかなく、ラウンド ロビン スケジューリングを使用するシステムで、コンテキスト スイッチは発生しますか?
単一プロセスの現在の CPU バーストが、ラウンドロビン アルゴリズムの複数のタイム スライスにまたがっているとします。
私の推論は以下の通りです
一般的なケースでタイマー割り込みが発生したときに実行される手順は次のとおりです。
- 割り込みが発生します。カーネル モードに切り替える
- OS は現在のコンテキストを PCB に保存します (現在のプロセスのレジスタ、プロセス状態、およびメモリ管理情報を保存します)
- データや命令キャッシュ、TLB のフラッシュなど、多くのアーキテクチャ固有の操作を実行します。
- 現在のプロセスを準備完了キューに入れる
- 実行する新しいプロセスを選択してください
- そのプロセスの PCB からコンテキストをロードする
- ユーザーモードに切り替えます。新しいプロセスの実行を開始します
私は今、OS が最初に準備完了キューを検査し、他のプロセスがあるかどうかを確認することを考えています。何もない場合は、コンテキスト スイッチの必要はありません。したがって、タイマー割り込みの処理には、ユーザー モードとカーネル モード間の切り替え、準備完了の Q の確認、およびプロセスの実行を再開するためのユーザー モードへの切り替えが伴います。
これは何が起こるのですか?それとも、孤立したプロセスの現在の状態の不必要な保存と同じ状態の復元を含む適切なコンテキストの切り替えが行われますか?
後者が発生した場合、特別な理由はありますか?
この混乱は、そのような状況でのコンテキスト切り替えに費やされた時間の計算に関する試験問題の質問が原因で発生しました。与えられた答えは、コンテキストの切り替えが行われることを意味します。
カーネルコードを調べたことのある人がこれを理解できることを願っています。したがって、stackoverflowに関するこの質問。