0

作成された一連のプロセスがある場合、ややばかげた質問があります...これらは必ずしも何らかの継承であるとは限りません。プロセスのpidは、連続した数値またはランダムなpidである必要がありますか?

4

7 に答える 7

7

これは、オペレーティング システムによって決定されます。

一般に、これらは通常、OS によって順番に割り当てられます。ただし、ほとんどのオペレーティング システムの仕様では、プロセス ID の割り当ては決定論的ではない (つまり、ランダムである可能性があり、将来のバージョンで変更される可能性があるなど) ため、この動作は決定の基礎となるものではありません。

于 2009-05-05T00:47:25.673 に答える
4

Linux では、pid は通常、システム全体で順番に割り当てられますが、定期的に循環し、他の無関係なプロセスによって「ギャップ」が生じる場合があります。極端なケースでは、このラップアラウンドを引き起こすのに十分な幅の「ギャップ」がある可能性があります。したがって、特定の順序を想定しないでください。代わりに、親プロセスまたは子プロセスの PID を明示的に追跡してください。

于 2009-05-05T00:48:09.980 に答える
2

システムの機能をテストする方法は次のとおりです。

for i in $(seq 20); do ps; done | grep ps

「ps」コマンドのPIDは連続したプロセスであるか、他の呼び出し元がスポーンできると合理的に期待できる限り連続したプロセスです。

Windows上の私のcygwinターミナルは、それらをランダムに割り当てます。私のWebホストは、それらを順番に割り当てます(おそらく、他のユーザーまたはサーバーによって実行されるプロセスのためのギャップがあります)。

マルチユーザーシステムのユーザー間で情報が漏洩する可能性があるため、シーケンシャルPID割り当てはセキュリティ上の懸念事項であると考える人もいます。

于 2009-05-05T01:56:20.987 に答える
1

AIXでは、多くの場合、より大きな(たとえば、7桁の)PIDが表示され、必ずしも半順次に割り当てられるとは限りません(ただし、テストしたところ、2ずつ増加して循環しているように見えました。マシンに別のユーザーがいたため、あまり意味がありません)。

AIX 5.3マシンでの新規ログイン:

$ ps
     PID    TTY  TIME CMD
 1060910 pts/27  0:00 -ksh
 1155224 pts/27  0:00 ps
$
于 2009-05-05T01:57:05.303 に答える
0

プラットフォームによって異なりますが、pid の特定の順序に依存するべきではありません。

Windows では、pid は通常増加する数で割り当てられますが、プロセスが終了すると、pid は再利用される可能性があり、新しいプロセスの pid が古いプロセスよりも低い場合が見られます。また、pid は tid と同じ名前空間から生成されるため、新しいプロセスを起動しても pid が 4 ずつ増加することはありません。

于 2009-05-05T00:46:34.303 に答える
0

あなたの観点からは、それらはランダムになります。システムはこれらの番号を管理し、プロセスが作成されると割り当てます。現在私のシステムにある PID をざっと見てみると、それらはすべて 4 で割り切れます...

于 2009-05-05T00:47:16.347 に答える
0

それらの子を作成している場合、pid を知っているでしょう。pid は OS スケジューラに依存します。このようなことは気にしません。

于 2009-05-05T00:53:13.040 に答える