私はLinuxプロセスを理解しようとしています。それぞれの用語pid_max
とについてulimit -u
混乱していますthread_max
。
この用語の違いは正確に何ですか?誰かがこれらの違いを明確にすることができますか?
ベストアンサー1
申し訳ありません。許可された回答は、さまざまな点で誤った情報です。
/proc/sys/kernel/pid_max
特定の時間に実行できるプロセスの最大数とは関係ありません。実際、これはカーネルが割り当てることができる最大の数値プロセス識別子です。
Linuxカーネルでは、プロセスとスレッドは同じです。カーネルはこれを同じ方法で処理します。これらはすべてtask_structデータ構造のスロットを占有します。一般的に言えば、スレッドは他のプロセスとリソースを共有するLinuxのプロセスです(スレッドグループIDも共有します)。 Linuxカーネルのスレッドは、スケジューラに関する限り、概して概念的な構成です。
カーネルがスレッドとプロセスを大幅に区別しないことを理解したので、/proc/sys/kernel/threads-max
実際にはtask_structデータ構造に含まれる要素の最大数を示すことがより理解されます。これは、プロセスリスト(またはタスクリストとも呼ばれる)を含むデータ構造です。
名前が示すように、ulimitはユーザー固有の制限です。この-u
フラグは、「単一ユーザーが使用できるプロセスの最大数」として定義されます。 task_structの要素には、ジョブを作成したユーザーのuidが含まれています。 task_structにジョブが追加/削除されるたびに、uidあたりの数が維持され、増減されます。したがって、ulimit -u
特定のユーザーが特定の時間にtask_structに持つことができる最大要素(プロセス)の数を示します。
状況が明確になることを願っています。