"프로세스 핸들은 커널 오브젝트를 가리키기 위한것이고 프로세스 ID는 프로세스 자체를 구분짓기 위한것이다"
프로세스를 만들면 쓰레드라는 시스템 리소스도 더불어 생성된다
커널오브젝트는 프로세스가 아닌 운영체제에 종속적이다.
커널 오브젝트의 소멸시기는 운영체제에 의해서 결정된다
프로세스가 소멸된다고 해서 커널 오브젝트가 소멸된다고 말할 수 없다
커널 오브젝트의 소멸시기를 결정하는 기준은 무엇일까?
BOOL CloseHandle(HANDLE hObject);
CloseHandle 핸들을 반환한다
이 함수가 호출되면 프로세스 및 커널 오브젝트가 소멸될까?
운영체제는 커널오브젝트 소멸시점을 어떻게 결정짓는가?
자식 프로세스의 종료코드는 자식 프로세스의 커널 오브젝트에 저장된다
자식 프로세스가 종료될때 커널 오브젝트도 동시에 소멸된다면 부모 프로세스는 종료 코드를 얻을 수 없게 된다
커널오브젝트를 참조하는 대상이 하나도 없을때 소멸시키는것이 가장 이상적이고, 이것이 Windows 가 커널 오브젝트 소멸기시를 결정하는 방식이다
Windows 는 이러한 정책을 기반으로 커널 오브젝트 소멸시기를 결정짓기 위해 Usage Count(참조 횟수)라는것을 관리한다. Usage Count 가 0이 되는 순간 해당 커널 오브젝트는 소멸된다
커널 오브젝트에 접근 가능한 대상이 늘어날 때마다 UsageCount가 하나씩 증가한다
부모프로세스에서 자식프로세스 생성하면 UsageCount 는 2가된다