プロセスp1
が独自のアドレス空間(スタック、ヒープ、テキスト)で実行されているとします。コンテキストスイッチが発生したとき、私はすべての現在のCPUレジスタがPCBにプッシュされていることを理解しています。プロセスをロードする前にp2
。次にTLBはフラッシュされ、p2
アドレスマッピングがロードされ、それ自身のアドレス空間で実行を開始します。 私が知りたいと思うのはp1
のアドレス空間です。プロセスをロードする前にディスクにコピーしてページテーブルを更新しますかp2
?linuxの2つのプロセス間でコンテキスト切り替え中に何が起こるのですか?
1
A
答えて
1
コンテキストスイッチの詳細は、基本となるハードウェアによって異なります。しかし、コンテキストスイッチは基本的には異なるシステム間でも同じです。
あなたが抱えている間違いは、「現在のCPUレジスタがすべてプロセスp2をロードする前にスタックにプッシュされていることを理解しています」です。レジスタは、プロセッサによって定義された構造を有するPROCESS CONTEXT BLOCK(またはPCB)と通常呼ばれるメモリ領域に格納されます。ほとんどのプロセッサは、プロセスコンテキスト(すなわち、そのレジスタ)をロードしてこの構造に保存するための命令を有する。インテルの場合、異なるレジスタセット(FPU、MMXなど)のため、複数の命令を複数のブロックに保存する必要があります。
発信プロセスをディスクに書き込む必要はありません。システムがより多くのメモリを必要とする場合は、ページアウトされる可能性がありますが、メモリ内に完全に存在し、実行準備ができている可能性があります。
コンテキストスイッチは、あるプロセッサの保存されたレジスタ値を別のプロセッサに交換するだけです。
関連する問題
- 1. Linuxのコンテキスト切り替えカーネルプロセス
- 2. linuxの下でのPythonのtime.sleep(0)の振る舞い - コンテキスト切り替えを引き起こしますか?
- 3. std :: this_thread :: sleep_for - このスレッドへのコンテキスト切り替えですか?
- 4. 中間プロセスを作成せずにユーザーを切り替える
- 5. jqueryの2つのラジオボタンの間でクラスを切り替える
- 6. 2つの画像の切り替え時の切り替え
- 7. ADFを切り替える正しいプロセスは何ですか?
- 8. JVMでコンテキストの切り替えやスレッドの起動に費やす時間を見つけ出す
- 9. コンテキスト切り替え時間を短縮することは可能ですか?
- 10. タスク間のコンテキスト切り替えを容易にする習慣
- 11. コンテキスト切り替えデッドロック
- 12. FreeRTOSコンテキスト切り替え
- 13. 2つのメインウィンドウを切り替える
- 14. 2つのNSWindowを切り替える
- 15. 2つのアンカーパネルを切り替える
- 16. 2つのサブアプリケーションを切り替える
- 17. 2つのフランジを切り替える
- 18. VSCodeの2つのタブの間で前後に切り替える
- 19. メニューは、2つの異なるアクションの間で切り替えることができます。
- 20. XMLからSQLiteコアのデータストアに切り替える際に起こりうる障害は何ですか?
- 21. コンテキスト切り替えのgccインラインアセンブリ
- 22. C++:スレッドプールとコンテキスト切り替えのスローダウン
- 23. Symfony:コンテキスト切り替えの問題
- 24. 1つのボタンで2つのイベントを切り替える
- 25. Androidアプリが2つのサーバ間で切り替わるとき
- 26. キーバインディングを使用した2つのフォーム間の切り替え
- 27. セレンのwebdriverで2つのウィンドウをJavaで切り替える
- 28. アプリ間でのAndroidの切り替え
- 29. ViewController間で切り替えるときの2つの方法の相違
- 30. jqueryで2つの関数を切り替えるには?
これはまさに私が求めていた説明です。ありがとう。あなたのコメントについての質問「システムがより多くのメモリを必要とする場合はページアウトされるかもしれませんが、メモリ内に完全に残る可能性があります」私が正しく理解すれば、p1は現在スリープ状態にあり、p2は実行中で、p1のアドレス空間は必要な場合にのみスワップアウトされます。 p1ページからのスワップが発生した場合、OSはスワップアウトページがプロセスp1に属していることと、p1ページテーブルをどのように更新するのかをOSはどのように知っていますか? – user1762571
オペレーティングシステムは空きページのデータベースを管理しています。ページがP1の作業セットから削除されると、空きページに追加されます。ページテーブルの更新は、解放プロセスの一部です。通常、OSは「解放された」ページだけを残して、P1がそれらを再度必要とし、それらが使用されていない場合、ページテーブルをディスクに読み込まずに更新することによってページを再び有効にすることができる。 OSはプロセスをページアウトして、利用可能なページを知ります。 – user3344003
申し訳ありませんまだ私は完全にそれを得ることはありません。空きページがある場合、OSがp1のページを交換するのではなく、空きページを使用できないのはなぜですか?どの時点でも、メモリは複数のプロセスのページを保持することがあります。 OSは物理メモリアドレスだけを使用してページの所有者をどのように識別できますか? – user1762571