0

解決策が与えられた問題セットの質問がありますが、詳細がよくわかりません。

問題は 、コンテキストをどのように切り替えるかです。

答えは次のとおりです。

  1. ステップ 1: プロセス A のコンテキストを保存する
  2. ステップ 2: プロセス B のコンテキストを復元する
  3. ステップ 3: プロセス B の実行を再開する

プロセス A と B のコンテキストを保存して復元するとはどういう意味ですか?

答えを見る前に、A のメモリ マッピングを保存し、B のメモリ マッピングを復元すると言いたかったのですが、保存と復元にはメモリ マッピング以外の何かがありますか?

4

3 に答える 3

2

簡単に言えば、プロセスの切り替えは 2 つの部分で表示できます。まず、現在実行中のPCBコンテキスト レジスタ (保存済みおよび汎用) を切り替えてから、キューから最も優先度の高いプロセスを見つけて再開し、以前に切り替えた場所からレジスタをコピーして戻りアドレスに戻ります。 . その間、キューに実行する他のプロセスがない場合、コアはアイドル状態に移行するか、省電力サイクルを実行しています。マルチプロセッサの場合も注意が必要です。つまり、現在のプロセスのコンテキスト切り替えが 1 つのコアで発生し、他のコアで実行するように切り替えられます。

SOlinkでのコンテキスト切り替えに関する非常に優れた情報

于 2012-12-16T17:48:31.690 に答える
1

私の知る限り、保存されるデータは、いわゆる PCB (プロセス制御ブロック) です。具体的に何をどのように保存するかは、OS によって異なります。しかし、通常、「メモリ マッピング」のほかに、PCB にはレジスタ値 (特に命令ポインタ)、親プロセスへのポインタ、I/O 情報なども含まれます。

于 2012-12-16T18:07:40.783 に答える
0

コンテキスト スイッチは、ホスト オペレーティング システムによってのみ処理され、デバイス ドライバーなどを作成していない限り、プロセスまたはコード ライターに対して透過的です。

100 個のプロセスが実行されていると仮定すると、OS は優先度アルゴリズムに従って適切なプロセスを自動的に選択し、複数の CPU が現在利用可能な場合に備えて、1 つまたは複数のプロセスをスケジュールします。

プログラムを書くときは、自分のプログラムが何の障害もなく実行されるかのように書きます。

オペレーティング システムの概念 (http://en.wikipedia.org/wiki/Operating_system) をブラッシュ アップするだけで理解できます。

于 2012-12-16T17:51:11.500 に答える