시스템 프로그래밍

커널 오브젝트와 오브젝트 핸들

은행털이 2024. 10. 18. 13:34

커널 오브젝트

- 커널에 의해 관리되는 리소스 정보를 담고 있는 데이터 블록(프로세스 상태정보 등)

- 프로그래머가 직접적으로 생성하거나 조작할 수 없음

- 프로세스 관리를 위해 운영체제 내부에 저장됨

 

 

핸들

- 접근이 차단된 커널 오브젝트에 접근할 수 있는 참조값, 커널 오브젝트에 할당되는 키값 > 간접적 조작 가능

- 운영체제는 각 프로세스에 대응하는 핸들 테이블을 할당하고, 이 테이블을 통해 커널 오브젝트에 접근(OS에 요청)

 

 

커널 오브젝트와 Usage Count(UC)

- UC : 커널오브젝트를 소멸시키기 위해 근거가되는 값
- 프로세스의 생성과 동시에 UC는 1
- 자식프로세스가 생성되면 UC는 2(생성하며 자식프로세스의 핸들을 얻고, 자식프로세스 자체 참조, 총 2개)
- 자식프로세스 종료시 종료코드를 커널오브젝트에 저장, 자식프로세스가 사라졌으므로 UC는 1

- CloseHandle로 자식 프로세스 핸들을 사옹하지 않겠다 선언하면, 더이상 커널오브젝트를 참조하지 않으므로 UC는 0 = 소멸

 

 

부모 프로세스가 자식 프로세스 핸들을 곧바로 반환하는 이유

- 프로세스 간 독립성 유지

- 비동기적 실행 지원

'시스템 프로그래밍' 카테고리의 다른 글

프로세스 간 통신  (0) 2024.10.18
프로세스의 생성과 소멸  (0) 2024.10.18
컴퓨터 구조 2  (0) 2024.10.18
64비트 기반 프로그래밍  (0) 2024.10.18
아스키코드와 유니코드  (0) 2024.10.18