UNIX의 프로세스는 어떻게 번호가 매겨 집니까?


17

ps -aPID가 후속 숫자가 아니고 때로는 그 숫자 사이에 큰 간격이 있기 때문에 프로세스 테이블 ( ) 에서 PID의 번호 매기기를 볼 때 어떤 패턴도 찾을 수 없습니다 . 짧은 시간 동안 실행되는 프로세스가있을 수 있고 PID를 예약하기 때문입니까? 프로세스 번호 매기기가 재설정 된 후 범위가 있습니까?

Mac OS X을 사용하고 있지만 대답은 일반적으로 UNIX에 적용되어야한다고 생각합니다.

답변:


18

둘 다 그렇습니다.

많은 프로세스가 수명이 짧습니다. PID를 받고 실행하고 완료하면 PID가 프로세스 테이블에서 사라집니다.

프로세스는 때때로 1 초 동안 만 산다!

프로그램이 시작될 때 종종 시스템을 점검하고 환경을 초기화하는 과정에서 수많은 명령을 실행합니다.

최대 PID 수는 시스템에 따라 다르며 때로는 구성 할 수도 있습니다. 기본적으로 많은 수의 프로세스가 필요하다는 것을 알고 있다면 수를 늘려야 할 수도 있지만 새로운 운영 체제에서는 최대 수는 일반적으로 대부분의 모든 워크로드에 대해 충분히 큽니다.

PID는 프로세스 테이블의 항목이며 프로세스 테이블이 차지하는 메모리가 많을수록 더 많이 사용됩니다.

이 관련 질문을 살펴보십시오 : /server/279178/what-is-the-range-of-a-pid-on-linux-and-solaris

또한 이와 관련된 "사용자 당 최대 프로세스 수"는 악의적 인 사용자가 의도적으로 전체 프로세스 테이블을 호기하기 위해 많은 프로세스를 생성하는 것을 방지하기위한 수단입니다.


7

보안 향상을 위해 새로운 프로세스에 임의의 PID를 할당하도록 일부 최신 커널을 구성 할 수도 있습니다. 최소한 Linux와 FreeBSD는 sysctl 설정으로 할 수 있으며 OpenBSD는 항상 그렇게합니다. 이 경우 번호 매기기 스키마에 대해 덜 말할 수 있습니다.


이에 대한 성능 비용이 무엇인지 알고 있습니까?
Bruce Ediger

@Bruce : 최초의 제안 된 패치는 순진한 무작위 화로 인해 최악의 O (infty) 성능을 나타 냈습니다. 그러나 나는 그들이 안전하고 유용한 것을 얻었습니다. 주제에 관한 최신 정보를 찾지 못했습니다. :)
unperson325680

5
임의의 PID는 나에게 불명확 한 보안처럼 들립니다.
Johan

그게 대부분입니다.
unperson325680

개별 이니셔티브에서 나온 리눅스는 grsecurity 패치 를 통해서만 제안했지만 , Linux 커널 팀은 항상 구현을 거부했으며 ( 예 : 여기 ) grsecurity 팀은 결국 2006 년 말에이를 중단했습니다 .
WhiteWinterWolf 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.