![同じPIDでLinuxシステムを再起動できますか? [コピー]](https://linux33.com/image/201172/%E5%90%8C%E3%81%98PID%E3%81%A7Linux%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%92%E5%86%8D%E8%B5%B7%E5%8B%95%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
Linuxシステムをシャットダウンしてシステムを再起動するときに、以前にプログラムプロセスで使用したのと同じPIDを使用しますか?それとも、これらのPIDはランダムに生成されたのですか?システムにPIDとして使用する整数が足りない場合はどうなりますか?
答え1
LinuxのPIDは、ゼロからファイルに含まれる最大のPID番号まで順番に生成されます/proc/sys/kernel/pid_max
。歴史的に、最大PIDは32767でした。なぜなら、Linuxのページフレームは32,768ビット、つまり4KBを含み、使用中のPIDを記述するビットベクトルを保持できるからです。 PID は順番に番号が付けられ、昇順に割り当てられ、時間の経過とともに再利用されます。
競合状態を防ぐために、PIDは直ちに再利用されません。たとえば、あるプロセスが別のプロセスにシグナルを送信する状況を考えてみましょう。ただし、信号が受信される前に受信機が終了し、PIDが新しく作成された他のプロセスに再割り当てされます。この場合、シグナルは誤ったプロセスに送信されるため、Linuxは終了したプロセスのPIDをすぐに再利用しません。
システムにPIDが不足すると(最大PIDに達すると)、Linuxは未使用のPIDを最初から再利用します。