UNIXのプロセスにはどのように番号が付けられていますか?


17

プロセステーブル(ps -a)のPIDの番号付けを見ると、パターンが見つかりません。PIDは後続の番号ではなく、これらの番号の間に大きな「ギャップ」があるためです。短時間実行されるプロセスがいくつかあり、それらがいくつかのPIDを予約しているからでしょうか?プロセスの番号がリセットされる範囲はありますか?

私はMac OS Xを使用していますが、答えはUNIX全般に当てはまると思います。

回答:


18

はい、両方の点で。

多くのプロセスは短命です。PIDを取得して実行し、終了すると、PIDはプロセステーブルから消えます。

プロセスはほんの一瞬しか生きられないことがあります!

多くの場合、プログラムの起動時に、システムのチェックと環境の初期化の一環として、多数のコマンドが実行されます。

最大PID番号はシステムによって異なり、場合によっては構成可能です。基本的に、膨大な数のプロセスがあることを知っている場合は、その数を増やす必要がありますが、新しいオペレーティングシステムでは、通常、ほとんどのワークロードに対して最大数で十分だと思います。

PIDはプロセステーブル内のエントリであり、プロセステーブルが使用するメモリが多いほど多くなります。

この関連質問をご覧くださいhttps : //serverfault.com/questions/279178/what-is-the-range-of-a-pid-on-linux-and-solaris

また、これに関連するのは「ユーザーごとのプロセスの最大数」であり、悪意のあるユーザーが意図的に多くのプロセスを作成してプロセステーブル全体を占有することを防ぐ手段です。


7

いくつかの最新のカーネルを構成して、ランダムPIDを新しいプロセスに割り当ててセキュリティを向上させることもできます。少なくともLinuxとFreeBSDはsysctl設定でそれを行うことができ、OpenBSDは常にそれを行います。これらの場合、番号付けスキーマについてはこれ以上言い切れません。


これにパフォーマンスコストが存在する場合、それが何であるかを知っていますか?
ブルースエディガー

@Bruce:最初に提案されたパッチは、素朴なランダム化のためにO(infty)の最悪のケースのパフォーマンスがありました。しかし、彼らは安全で使いやすいものを得たと思います。私はこのトピックに関して最新のものを見つけられませんでした...私は信じていません。:)
unperson325680

5
ランダムPIDは、私にとってはあいまいさによるセキュリティのように思えます。
ヨハン

それはそれです、主に
...-unperson325680

個々のイニシアチブのAppartは、Linuxはgrsecurityパッチを介してのみ提案していましたが、Linuxカーネルチームは常に実装を拒否し(ここに例を示します)、grsecurityチームでさえ2006年後半にようやく廃止しました
WhiteWinterWolf
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.