Windows에서 프로세스 식별자 (일명 PID)가 어떻게 생성되는지 알고 싶습니다. 다른 컴퓨터에서 고유 한가요? 예를 들어 현재 내 Firefox 프로그램에 할당 된 5856 ID를 고려하십시오. 다른 컴퓨터에서 동일한 실행 이미지가 동일합니까?Windows에서 커널 모드로 PID (Process Indentifier)가 생성되는 방법은 무엇입니까?
답변
프로세스 식별자는 다른 시스템에서 고유하지 않습니다. 그것들은 나중의 프로세스를 위해 같은 머신에서 재사용 될 수 있으며 일반적으로 같은 실행 파일을 두 번 호출 할 때 동일하지는 않습니다.
생성 방법에 신경 쓰지 않아도됩니다. 프로세스 식별자가 단일 실행 프로세스를 고유하게 식별한다는 것만 확인할 수 있습니다. 즉, 프로세스 식별자가 단일 실행 프로세스를 고유하게 식별한다는 것입니다. 한 번.
PID 생성은 주로 Microsoft에서 공식적으로 문서화하지 않는 비밀입니다. PID 생성은 문서화 된 후에 구현에 집중해야하기 때문에 대부분 비밀입니다. 그러나 항상 4의 배수입니다. 그러나 이것은 당신이 의지해야하는 행동이 아닙니다. 그들은 고유하지 않으며 재사용 할 수 있습니다.
레이몬드 첸 (Raymond Chen)은 그의 blog에서 이것을 언급합니다.
프로세스, 스레드 및 커널 핸들 ID는 공통 루틴에서 가져옵니다. 기술적으로 이것은 DWORD입니다. 내가 65,536 이상을 마지막으로 본 것을 기억하지 못합니다. 그것들은 재사용 될 수 있으며, 카운터 기반 메커니즘 일뿐입니다.
Windows *에서 한 번 6 자리 PID와 같은 프로세스를 * 본 적이 있습니다. 하지만 그건 드문 일입니다. –
프로세스는 커널에서 객체로 유지되며, 따라서 HANDLE을 통해 시스템의 다른 모든 객체 (즉, 이벤트, 뮤텍스, 세마포어, 타이머 등)와 동일한 방식으로 사용자 모드로 내보내집니다.
따라서 프로세스 ID는 실제로 글로벌 핸들 테이블 (구현 세부 사항으로 PspCidTable)에서 관리되는 개체를 처리하는 데 단지 도움이됩니다. 흥미로운 점은 스레드도 객체로 유지되며이 테이블에도 삽입된다는 것입니다. 스레드 ID는 실제로 스레드 객체에 대한 처리입니다.
-scott
- 1. Windows에서 높은 PID 강제로
- 2. Windows에서 커널 수준으로 실행되는 프로세스를 만드는 방법은 무엇입니까?
- 3. VC++에서 커널 모드에서 사용자 모드로 정보를 전달하는 방법은 무엇입니까?
- 4. 왜 syscall을 커널 모드로 전환해야합니까?
- 5. x86 W7에서 커널 모드로 실행
- 6. Windows에서 커널 개체와 이벤트 개체의 차이점은 무엇입니까?
- 7. Windows에서 원격 커널 개체에 액세스
- 8. MYSQL에서 PID 파일을 얻는 방법
- 9. 리눅스 커널 모듈에서 정보를 표시하기 위해 PCB를 반복하는 방법은 무엇입니까?
- 10. 커널 리눅스에서 곱셈을하는 방법은 무엇입니까?
- 11. WCF 클라이언트에서 생성되는 '지정된'속성을 방지하는 방법은 무엇입니까?
- 12. 경고가 생성되는 이유는 무엇입니까?
- 13. Windows에서 Java의 bash 스크립트를 생성하는 방법은 무엇입니까?
- 14. Erlang의 PID 목록
- 15. Windows에서 Python과 os.fork()의 동등성은 무엇입니까?
- 16. mmap on/proc/pid/mem
- 17. 결정 - PID
- 18. Convert.ToDateTime이 생성되는 형식 변경
- 19. Visio Process Simulator 란 무엇입니까?
- 20. Process :: detach와 Process :: Wait는 상호 배타적입니까? (Ruby)?
- 21. CPU 사용자 모드에서 커널 모드로 전환 : 정확히 무엇을합니까? 어떻게 전환됩니까?
- 22. 커널 작업간에 데이터를 공유하는 방법은 무엇입니까? (커널/커널 태스크가있는 게임 엔진)
- 23. Windows에서 scintilla를 컴파일하는 방법은 무엇입니까?
- 24. Windows에서 화면을 잠그는 방법은 무엇입니까?
- 25. Windows에서 모듈을 작성하는 방법은 무엇입니까?
- 26. Windows에서 psql을 완료하는 방법은 무엇입니까?
- 27. Windows에서 Webkit을 실행하는 방법은 무엇입니까?
- 28. Windows에서 방화벽을 검색하는 방법은 무엇입니까?
- 29. MATLAB에서 스펙트럼 커널 함수를 구현하는 방법은 무엇입니까?
- 30. 커널 모드에서 Windows 캡션을 얻는 방법은 무엇입니까?
글쎄, 그것이 무엇을 기반으로 만들어 졌는지 아십니까? –
아니요, 문서화되어 있지 않으며 Windows 버전이나 서비스 팩 또는 업데이트간에 또는 시간이나 달의 위상에 따라 변경 될 수 있습니다. :) – villintehaspam
그것은 매우 유익했다, 특별히 "달의 위상"섹션 : –