728x90

 

프로세스, 커널 오브젝트, 핸들의 관계

- 프로세스가 생길 때 커널 오브젝트와 핸들 테이블이 생성

    -> 핸들 테이블 : 커널 오브젝트에 접근할 수 있는 핸들과 그 대상이 기록된 테이블

    -> 핸들 값은 프로세스의 영역안에서만 중복이 아니면 됨

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

- UC(Usage Count) : 프로세스에 접근 가능한 사용자 수

    -> 프로세스 A의 UC = 2 / 프로세스 B의 UC = 2 / 파일 커널 오브젝트의 UC = 1

    -> 프로세스 B가 프로세스 A에 의해 생성 될 때 프로세스 B의 핸들 값이 프로세스 A에게 반환이 됨

    -> 즉 부모 프로세스에 자식 프로세스의 핸들 값이 반환이 됨

    -> 프로세스 A는 프로세스 B로 접근할 수 있는 핸들 값을 얻음

    -> 프로세스 A도 다른 프로세스에 의해서 생성되었기 때문에 2가 됨

    -> 파일 오브젝트는 생성한 프로세스 B에서만 접근이 가능하기 때문에 1이 됨

- 프로세스 B 소멸 시 프로세스 B의 핸들 테이블은 사라지지만 프로세스 B 커널 오브젝트는 사라지지 않음

    -> 프로세스 B 커널 오브젝트의 참조 대상이 하나 사라진 것이 되기 때문에 UC는 1이 됨

    -> 프로세스 A 가 더 이상 프로세스 B 커널 오브젝트를 참조하지 않을 때 UC가 0이 되는 순간 사라짐

    -> 파일 커널 오브젝트는 소멸이 되지만 생성한 파일 자체는 사라지지 않음

    -> 커널 오브젝트는 운영체제에 종속적이고 커널 오브젝트의 소멸시점은 운영체제에 의해서 결정

 

 

728x90

+ Recent posts