2

スレッドとプロセスのスケジューリングに関連するクエリはほとんどありません。

  1. プロセスがスリープ状態になり、復帰するとき、以前にスケジュールされたのと同じ CPU でスケジュールされるのは常にですか?
  2. プロセスからスレッドを作成すると、常に同じ CPU で実行されますか? 他の CPU が空いていてスリープ状態であっても。

具体的にLinuxでの仕組みが知りたいです。また、pthread ライブラリを使用してスレッドを作成しています。常に再現できないランダムなハングアップの問題に直面しています。正しい方向に進むには、この情報が必要です。

4

2 に答える 2

0

プロセスがスリープ状態に入ったときとウェイクアップしたときに、同じ cpu でスケジュールする必要はありません。マルチプロセッサ環境がある場合は、スケジューラ ポリシーに従って、任意の cpu でスケジュールされます。プロセスがスリープ状態になると、さまざまな理由があります。 、io、任意のリソースを待機しているため、スリープ状態になります。イベントが発生すると、待機状態から準備完了状態になります。その時点で、どの cpu が空きになるかスケジューラーが空き cpu でそのプロセスをスケジュールします。必要ではありません同じCPUでスケジュールされます。スケジューラに関する追加情報については、linux リリース ツリー パスにあるスケジューラのオープン ソース コードを参照してください。

于 2013-09-13T07:04:25.193 に答える