マルチコア システム (Linux 2.6) で CPU アフィニティとスケジューリングを設定する順序について疑問があります。
(架空の状況) プロセスがあり、そのアフィニティを core1 に設定し、その間にそのプロセスを一時停止 (スリープ モードにする) し、一時停止中にこのプロセスの CPU アフィニティを core2 に変更するとします。このプロセスは、最初に core1 で実行され、起動時に core2 にシフトされますか、それともバックグラウンドで直接 core2 にシフトされますか?
似たようなもの: (これが何らかの方法で実行できる場合) タスク構造体に新しいエントリを作成しますが、この新しいプロセスを最初からスリープ モードにします。このプロセスは、スリープ モードのときに、設定されたアフィニティに従って一部のコアに割り当てられますか? または、プロセスは、実行が開始されたときにのみ(そのアフィニティに従って)一部のコアに割り当てられます(その間、このプロセスが最初にスリープ状態だったとき、このプロセスはどのコアのスリープキューに保持されますか)?
各コアには独自のスケジューラのコピーがあり、独自のレディ キュー (SMP プロセッサ) を維持していると思いますが、どのプロセスがコア間でプロセスを移行しますか?
(いくつかの点で間違っている可能性があります。多くのことを想定している可能性がありますが、知識を共有していただきありがとうございます)
ありがとう