ジョブ作成者を探す

ジョブ作成者を探す

Linuxカーネルですべてのタスクのプロデューサタスクを見つけたいです。しかし、これを行う方法があるかどうかはわかりません。

real_parent通常、ジョブのメンバーに基づいてジョブ作成者を見つけることができますstruct task_struct。私の問題はカーネルのスレッドグループ処理にあります。

ユーザーモードのプロセス(カーネルのタスクA)がスレッド(カーネルのタスクB)を作成するとします。これを行うには、このフラグを使用してcloneシステムコールをCLONE_THREAD行います。その後、カーネルはタスクAをコピーしてタスクBを生成し、スレッドごとの初期化を実行します。そのうちのいくつかはreal_parentBがreal_parentAに設定されているということです(kernel/fork.cのコードをご覧ください。)。

したがって、親関係はタスク間ではなくスレッドグループ(つまり、ユーザーモードのプロセス)間です。スレッドグループの作業は、それらの間で階層なしで兄弟として扱われるようです。

これにより、特定のタスクがどのタスクによって生成されたかを判断する方法が不明瞭になりました。フォークされたコードを確認してメンバーを検索してみましたが、struct task_struct何も出ませんでした。ジョブの作成者を識別する方法はありますか?

ベストアンサー1

おすすめ記事