상세 컨텐츠

본문 제목

06.2 커널 오브젝트와 핸들의 종속 관계

Programming/Windows System

by RACC8N 2020. 4. 5. 18:57

본문

커널 오브젝트의 종속 관계

 

"커널 오브젝트는 Windows 운영체제에 종속적이다."

 

커널 오브젝트는 프로세스에 종속적인 것이 아니라 운영체제에 종속적인 관계로

> 커널 오브젝트의 소멸시점은 운영체제에 의해서 결정된다.

> 여러 프로세스에 의해서 접근 가능하다. (함수 호출을 통한 간접 접근)

 

핸들의 종속 관계

핸들(핸들 테이블)은 운영체제에 종속적이지 않고 프로세스에 종속적이다.

 

커널 오브젝트의 공유 예제

A 프로세스가 B 프로세스를 생성한다. 그러자 B 프로세스는 자신의 우선 순위를 높인다.

> 잠시 후 열받은 A프로세스는 B 프로세스의 우선순위를 원래대로 돌려 놓는다.

> SetPriority(pi.hProcess, NORMAL_PRIORITY_CLASS)

 

두 개의 프로세스가 하나의 커널 오브젝트(B 프로세스)에 순서대로 접근하였다.

 

PROCESS_INTFORMATION 구조체 

hProcess 프로세스의 핸들
hThread 쓰레드의 핸들
dwProcessId 프로세스의 ID
dwThreadId 쓰레드의 ID

운영체제는 프로세스를 생성할 때마다 프로세스들을 구분짓기 위한 ID(식별자)를 할당한다. 

 

"프로세스 핸들은 프로세스의 커널 오브젝트를 가리키기(구분짓기)위한 것이고,

 프로세스 ID는 커널 오브젝트가 아니라 프로세스 자체를 구분짓기 위한 것이다."

 

※ CreateProcess 함수를 통해서 프로세스를 생성하면 쓰레드라는 시스템 리소스도 더불어 생성되며, 이 쓰레드의 핸들과 ID가 두 번째, 네 번째 멤버에 채워진다.

 

 

관련글 더보기

댓글 영역