質問

何が正確に保存されるコンテキストスイッチ間のスレッド

  • 同一のプロセス
  • 両プロセス
役に立ちましたか?

解決

これはかなり複雑な問題であり、さらに、回答(s)に依存しているので多くのこと:

  1. CPUの問題
    • で大きく異なっても同一家族内における例えば、追加登録追加されSSE/MMXます。
  2. システム内でのハンドラがトリガーにコンテキストスイッチの判定をCPUハードウェア(もしあれば)をコンテキストスイッチを使います。
    • 例えば、Windowsを使用しないインテルのハードウェアできるほとんどのコンテキストスイッチ保存までを格納していない浮動小数点レジスタ.
  3. 他の最適化によって可能となることをプログラム認識してい独自の要求事項ときに通知し、OSのこ
    • うるしを使用していないのFPレジスタなのかわいい
    • 街の建築と相当の登録ファイルのようなものRISCデザインには多くの恩恵を知ることが必要だ小さいサブセットの登録

最低限の使用汎用レジスタ及びプログラムカウンターに登録する必要がある保存と共通のデザインの現在のCISC/RISCスタイル汎用Cpu).

注このような最小限の量の関連コンテキストスイッチは 話題の学

Linux明らかにして詳細情報この公私の参考文献はちょっとしてください。

あ'task_struct'を含む多数の関連分野の課題について記述しているプロセスとしてのタスク管理するものとします。

これらの一つは、'thread_struct'

/*CPU-特定の状態でこの課題*/
-struct thread_structスレッド
保有に関する情報キャッシュTLS記述子アプリケーションのデバッグの登録、
断層情報において、浮動小数点、仮想86モードIOアクセス権を表します。

各建築を定義でthread_structを識別するレジスタ及びその他の値に保存されているスイッチです。

これはさらに複雑なの存在によって名前の変更を登録する複数の飛行令(送が開始されたスーパスカラやパイプライン関連の建築デザイン).の回復期コンテキストswicthれはCPUのパイプラインが復元され、初期状態が空の状態などを指示された未退任したインフォメーションを無効とすることができれば無視されます。このデザインのCPUが硬くなっていきます。

の違いプロセスやスレッドがこのスイッチを常に意味のスレッド切り替えは全てメインストリーム運営システム)を更新する必要がある翻訳メモリの情報IO関連情報を許可関連する構造です。

これらは主にポインタにより豊富なデータ構造をなすということではありません大幅なコストに係るスレッドのコンテキストスイッチ.

他のヒント

コンテキスト切り替えは、同じプロセスのスレッド間である場合、

、現在のスレッドのすべての非揮発性の汎用レジスタが保存され、新しいスレッドのものが復元されます。揮発性レジスタは、現在のスレッドの実行が割り込みによって中断された場合にのみ保存する必要があります。スレッド(例えば浮動小数点プロセッサ)によって使用される任意のコプロセッサのレジスタは、また、保存および復元されなければなりません 切り替えは通常、コンテキストスイッチのために必要とされるものに加えて、2つのプロセスのスレッド間である場合、メモリ及びIO管理関連の変化も行われるべきです。例えばのためのプロセスが必要とするメモリ保護は、ページ・テーブルとページ・ディレクトリ・テーブルを使用して達成され、各プロセスは、プロセスが変化したときに変更する必要があるユニークなページ・ディレクトリ・テーブルのアドレスを持っています。

これは、あなたが使用しているOSに依存しますが、確かにあなたがに切り替えているスレッドのレジスタを(命令カウンタを含む)すべてのレジスタの内容を保存し、ロードする必要があります。

同じプロセス上の2つのスレッド間の切り替えについては私の心に来る唯一の違いは、L1およびMMUキャッシュの内容が失わないことです。

私も記憶が正しければ、

イムわからないが、ワーキングメモリセットが切り替わります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top