프로세스 식별자

Process identifier

컴퓨팅에서 프로세스 식별자(프로세스 ID 또는 PID)는 Unix, macOSWindows와 같은 대부분운영 체제 커널에서 활성 프로세스를 고유하게 식별하기 위해 사용되는 숫자입니다.이 숫자는 다양한 함수 호출의 매개 변수로 사용될 수 있으며, 프로세스의 우선순위를 조정하거나 완전히 중단하는 등 프로세스를 조작할 수 있습니다.

Unix와 같은

Unix와 같은 운영체제에서는 새로운 프로세스가 생성됩니다.fork() 시스템 콜을 실행합니다.PID는 부모 프로세스로 반환되어 후속 함수 호출에서 자식 프로세스를 참조할 수 있습니다.예를 들어, 부모는 자녀가 다음 명령을 사용하여 종료될 때까지 기다릴 수 있습니다.waitpid()기능을 수행하거나 프로세스를 종료합니다.kill().

특별히 구별되는 프로세스 ID에는 두 가지 태스크가 있습니다.스왑퍼 또는 스케드는 프로세스 ID가 0이고 페이징을 담당하며 실제로는 일반 사용자 모드프로세스가 아닌 커널의 일부입니다.프로세스 ID 1은 보통 시스템의 시작과 셧다운을 주로 담당하는 초기 프로세스입니다.원래 프로세스 ID 1은 어떤 기술적인 방법으로도 init을 위해 특별히 예약되어 있지 않았습니다.커널에 의해 최초로 기동된 프로세스이기 때문에 자연스럽게 이 ID를 가지고 있었을 뿐입니다.보다 최근의 유닉스 시스템은 일반적으로 '프로세스'로 보이는 추가 커널 컴포넌트를 가지고 있으며, 이 경우 PID 1은 오래된 시스템과의 일관성을 유지하기 위해 init 프로세스를 위해 적극적으로 예약되어 있다.

프로세스 ID는 보통 0부터 시작하여 시스템마다 다른 최대값까지 순차적으로 할당됩니다.이 제한에 도달하면 할당이 300에서 재시작되고 다시 증가합니다.macOSHP-UX에서는 할당이 100에서 다시 시작됩니다.단, 이 패스 이후 패스에서는 프로세스에 할당된 PID는 모두 건너뜁니다.일부에서는 시스템 정보를 추출하거나 프로세스 간에 메시지를 은밀히 전달할 수 있다는 점에서 잠재적인 보안 취약성으로 간주합니다.이와 같이, 특히 시큐러티를 염려하는 실장에서는,[1] 다른 PID 할당 방법을 선택할 수 있습니다.MPE/iX와 같은 일부 시스템에서는 사용 가능한 최소 PID가 사용되며, 때로는 메모리 내의 프로세스 정보 커널 페이지 수를 최소화하기 위해 사용됩니다.

현재 프로세스 ID는getpid()시스템 콜 또는 변수로서$포탄에부모 프로세스의 프로세스 ID는getppid()시스템 콜을 실행합니다.

Linux 에서는 최대 프로세스 ID가 의사 파일에 의해 지정됩니다./proc/sys/kernel/pid_max를 클릭합니다.[2]

Pid 파일

moc 음악 플레이어나 MySQL 데몬 등 일부 프로세스에서는 문서화된 파일 위치에 PID를 기록하고 다른 프로세스에서 PID를 검색할 수 있도록 합니다.

Microsoft Windows

Windows 계열의 운영체제에서는 현재 프로세스 ID를 취득할 수 있습니다.GetCurrentProcessId()Windows [3]API의 기능 및 기타 프로세스의 ID를 사용합니다.GetProcessId()내부적으로는 프로세스 ID는 클라이언트 ID라고 불리며 스레드 ID와 동일한 네임스페이스에서 할당되므로 이 두 가지는 중복되지 않습니다.[4]시스템 유휴 프로세스에는 프로세스 ID 0이 지정됩니다.시스템 프로세스에는 Windows 2000에서는 프로세스 ID 8이 부여되고 Windows XP 및 Windows Server [5]2003에서는 프로세스 ID 4가 부여됩니다.Windows NT 패밀리 운영체제에서는 프로세스 식별자와 스레드 식별자는 모두 4의 배수이지만 [6]사양에는 포함되지 않습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ comp.unix.aix Frequently Asked Questions, retrieved 2008-07-21
  2. ^ "proc - process information pseudo-filesystem", Linux Programmer's Manual, retrieved 2009-12-28
  3. ^ "GetCurrentProcessId Function", Windows Dev Center, Microsoft, 5 December 2018
  4. ^ "GetProcessId function", Windows Dev Center, Microsoft, 5 December 2018
  5. ^ Russinovich, Mark; David A. Solomon (2005), "Chapter 2: System Architecture", Microsoft Windows Internals (4th ed.), Microsoft Press, p. 76, ISBN 0-7356-1917-4
  6. ^ Chen, Raymond (2008-02-28), "Why are process and thread IDs multiples of four?", The Old New Thing, Microsoft