1

sched.h を使用して Linux のスケジューリングをいじっていて、いくつかの質問にぶつかりました。

私の知る限り、Linux スケジューラは、スケジューリング時にスレッドとプロセスを異なる方法で処理しません。スレッドは、共通のリソースを共有するプロセスのようなものです。

OK、Process-A があり、CPU コア 0 に設定され、SCHED_FIFO プロパティが設定されているとします。これは、優先度の高い別のタスクが開始されるまで実行されます。Process-A が新しいスレッドを作成した場合、スレッドは同じプロパティを継承しますか? (つまり、SCHED_FIFO プロパティで CPU 0 にバインドするか、DEFAULT にしますか?)

ありがとう!

4

1 に答える 1

4

簡単なプログラムで実際にこれをテストできますが、さまざまなマニュアルページから:

sched_setaffinity :

fork(2) によって作成された子は、親の CPU アフィニティ マスクを継承します。アフィニティ マスクは、execve(2) 全体で保持されます。

pthread_create :

新しいスレッドは、呼び出しスレッドの機能セット (capabilities(7) を参照) と CPU アフィニティ マスク (sched_setaffinity(2) を参照) のコピーを継承します。

sched_setスケジューラー:

子プロセスは、fork(2) を介してスケジューリング ポリシーとパラメーターを継承します。スケジュールのポリシーとパラメーターは、execve(2) 全体で保持されます。

于 2012-10-25T10:21:42.563 に答える