동일한 PID로 Linux 시스템을 다시 시작할 수 있습니까? [복사]

동일한 PID로 Linux 시스템을 다시 시작할 수 있습니까? [복사]

Linux 시스템을 종료하고 시스템을 다시 시작할 때 이전에 프로그램 프로세스에 사용했던 것과 동일한 PID를 사용합니까? 아니면 이러한 PID가 무작위로 생성된 것입니까? 시스템에 PID로 사용할 정수가 부족하면 어떻게 되나요?

답변1

Linux의 PID는 0부터 파일에 포함된 가장 큰 PID 번호까지 순서대로 생성됩니다 /proc/sys/kernel/pid_max. 역사적으로 최대 PID는 32767이었습니다. 왜냐하면 Linux의 페이지 프레임은 32,768비트, 즉 4KB를 포함하고 사용 중인 PID를 설명하는 비트 벡터를 보유할 수 있기 때문입니다. PID는 순차적으로 번호가 매겨지고 오름차순으로 할당되며 시간이 지남에 따라 재사용됩니다.

경쟁 조건을 방지하기 위해 PID는 즉시 재사용되지 않습니다. 예를 들어, 한 프로세스가 다른 프로세스에 신호를 보내는 상황을 생각해 보세요. 그러나 신호가 수신되기 전에 수신기가 종료되고 PID가 새로 생성된 다른 프로세스에 다시 할당됩니다. 이 경우 신호가 잘못된 프로세스로 전송되므로 Linux는 종료된 프로세스의 PID를 즉시 재사용하지 않습니다.

시스템에 PID가 부족해지면(최대 PID에 도달) Linux는 사용되지 않은 PID를 처음부터 재사용합니다.

관련 정보