커널 오브젝트의 종속 관계
"커널 오브젝트는 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가 두 번째, 네 번째 멤버에 채워진다.
07.1 프로세스간 통신(IPC)의 의미 (0) | 2020.04.18 |
---|---|
06.3 커널 오브젝트와 Usage Count (0) | 2020.04.05 |
06.1 커널 오브젝트에 대한 이해 (0) | 2020.04.05 |
05.3 프로세스의 생성 (CreateProcess) (0) | 2020.04.05 |
05.2 프로세스의 스케줄링과 상태 변화, 컨텍스트 스위칭 (0) | 2020.04.05 |
댓글 영역