커널 오브젝트
- 커널에 의해 관리되는 리소스 정보를 담고 있는 데이터 블록(프로세스 상태정보 등)
- 프로그래머가 직접적으로 생성하거나 조작할 수 없음
- 프로세스 관리를 위해 운영체제 내부에 저장됨
핸들
- 접근이 차단된 커널 오브젝트에 접근할 수 있는 참조값, 커널 오브젝트에 할당되는 키값 > 간접적 조작 가능
- 운영체제는 각 프로세스에 대응하는 핸들 테이블을 할당하고, 이 테이블을 통해 커널 오브젝트에 접근(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 |