프로세스, 커널 오브젝트, 핸들의 관계
- 프로세스가 생길 때 커널 오브젝트와 핸들 테이블이 생성
-> 핸들 테이블 : 커널 오브젝트에 접근할 수 있는 핸들과 그 대상이 기록된 테이블
-> 핸들 값은 프로세스의 영역안에서만 중복이 아니면 됨
-> 핸들(테이블)은 운영체제에 종속적이지 않고 프로세스에 종속적
- 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이 되는 순간 사라짐
-> 파일 커널 오브젝트는 소멸이 되지만 생성한 파일 자체는 사라지지 않음
-> 커널 오브젝트는 운영체제에 종속적이고 커널 오브젝트의 소멸시점은 운영체제에 의해서 결정
'Programming > System Programming' 카테고리의 다른 글
윈도우즈 시스템 프로그래밍 - 6. 커널 오브젝트와 오브젝트 핸들(4) (0) | 2020.07.16 |
---|---|
윈도우즈 시스템 프로그래밍 - 6. 커널 오브젝트와 오브젝트 핸들(3) (0) | 2020.07.16 |
윈도우즈 시스템 프로그래밍 - 6. 커널 오브젝트와 오브젝트 핸들(1) (0) | 2020.07.16 |
윈도우즈 시스템 프로그래밍 - 5. 프로세스의 생성과 소멸(2) (0) | 2020.07.15 |
윈도우즈 시스템 프로그래밍 - 5. 프로세스의 생성과 소멸(1) (0) | 2020.07.15 |