문제

나는 다소 어리석은 질문입니다. 일련의 프로세스가 생성 된 일련의 프로세스가 있다면 ... 반드시 어떤 종류의 상속이 아니라 프로세스의 PID는 연속적이거나 무작위 PID가되어야합니까?

도움이 되었습니까?

해결책

이것은 운영 체제에 의해 결정됩니다.

일반적으로, 이들은 일반적으로 OS에 의해 순차적으로 할당됩니다. 그러나이 동작은 대부분의 운영 체제 사양에 따라 프로세스 ID 할당이 결정 론적이지 않다고 명시하기 때문에 결정을 내릴 수있는 것은 아닙니다 (예 : 무작위 일 수 있으며 향후 버전에서 변경 될 수 있음).

다른 팁

Linux에서 PID는 일반적으로 시스템 전체에서 순차적으로 할당되지만 주기적으로 감싸고 다른 관련없는 프로세스로 인한 '갭'이있을 수 있습니다. 극단적 인 경우, 당신은이 랩을 유발할만큼 충분히 '갭'을 가질 수 있습니다. 따라서 특정 주문을 가정하지 마십시오. 대신 부모 또는 자식 과정을 명시 적으로 추적하십시오.

시스템이 수행하는 작업을 테스트하는 방법은 다음과 같습니다.

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

"PS"명령의 PID는 연속 프로세스이거나 다른 발신자가 합리적으로 스폰 될 수있을 것으로 예상 할 수있는 것처럼 연속적으로 가깝습니다.

Windows의 Cygwin 터미널은 무작위로 할당되며 웹 호스트는 순차적으로 할당됩니다 (아마도 다른 사용자 나 서버가 실행하는 프로세스에 대한 간격이있을 때).

일부는 순차적 PID 할당이 다중 사용자 시스템 사용자간에 정보가 유출 될 수 있기 때문에 약간의 가능한 보안 문제로 간주합니다.

AIX에서는 종종 더 큰 (예 : 7 자리) PID를 보게 될 것이며 반드시 반 순응으로 반드시 할당되지는 않지만 (테스트했을 때 2의 증분으로 자전거를 타는 것처럼 보였지만, 기계에 다른 사용자가 있었으므로 가능합니다. 의미가 크지는 않습니다).

AIX 5.3 머신에 새로운 로그인 :

$ ps
     PID    TTY  TIME CMD
 1060910 pts/27  0:00 -ksh
 1155224 pts/27  0:00 ps
$

플랫폼에 의존하지만 PID에 대한 특정 순서에 의존해서는 안됩니다.

Windows에서 PID는 일반적으로 증가하는 숫자로 할당되지만 프로세스가 종료됨에 따라 PID를 재활용 할 수 있으며 최신 프로세스가 이전 프로세스보다 PID가 낮은 경우를 볼 수 있습니다. 또한 PID는 TID와 동일한 네임 스페이스에서 나옵니다. 따라서 새로운 프로세스를 시작함에 따라 PID가 4 명 증가하지 않을 것입니다.

당신의 관점에서 그들은 무작위가 될 것입니다. 시스템은 해당 숫자를 관리하고 프로세스가 생성 될 때 할당합니다. 현재 내 시스템에있는 PID를 간단히 살펴보면 모두 4로 나눌 수 있음을 보여줍니다.

PID를 알게 될 어린이를 만들면 PID는 OS 스케줄러에 따라 다르 므로이 물건에 신경 쓰지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top