설명은 하단에...
커널 : 운영체제의 핵심적인 부분
커널 오브젝트 : "커널 리소스의 정보를 담고 있는 데이터 블록"
-1. 해당 리소스(ex 프로세스) 의 상태 정보를 알려주기 위한 오브젝트
- 2. 프로세스 or 파일 등을 생성하면 생성과 동시에 이것들을 구분 짖는 어떤 정보들이 생성되는데 이러한 정보들을 말한다
핸들은 단지 핸들 테이블에 등록되어 있는 번호일뿐 실질적으로 프로세스의 커널 오브젝트에 직접 접근 할 수 없고 핸들 테이블 에서
해당 프로세스에 등록되어 있는 핸들과 매치가 되는 대상과 연결되게 되도록 되어 있다
각 프로세스는 각 프로세스 내에서의 고유 핸들이 있다 ( A ,B 프로세스에서는 A 에도 같은 번호의 프로세스 값은 있을 수 있지만 서로 같은
커널 오브젝트를 가르키고 있진 않을 수 있다 )
또한 각 프로세스는 자식 프로세스를 생성할때마다 자신의 핸들테이블에 생성된 자식 프로세스로 접근 할 수 있는 핸들 값을 리턴 받아
자신의 핸들 테이블에 저장해 놓고 자식 프로세스의 커널오브젝트 정보에 접근 할 수 있는 연결자를 가지고 있는데
연결된 개수만큼 해당 커널 오브젝트에는 usage count 가 올라가 있음으로 부모에서 자식 프로세스를 생성한다면 UC 는 2 가 되며
부모에서 자식을 닫으면 UC 는 1 이 되어 아직 살아 있게 된다, 즉 이것은 자식과 부모 관계를 끊는 결과를 가져오며 프로세스 종료는
UC=0 이 되야 종료 됨으로 자식 프로세스에서 UC 를 0 으로 낮춰야 (죽어야 최종적으로 죽어야 ) 자식 프로세스가 종료 된다
'운영체제 & 병렬처리 > Multithread' 카테고리의 다른 글
프로세스 환경변수(자식 프로세스에서 부모의 핸들값으로부터 등록된 값 가져오기) (0) | 2012.11.01 |
---|---|
IPC(inter-process communication) 프로세스간의 통신 (0) | 2012.11.01 |
멤버 함수를 쓰레드 함수로 만들기 (0) | 2012.10.31 |
CreateThread() 와 _beginthreadex() 함수의 차이 (0) | 2012.10.31 |
쓰레드와 프로세스 (0) | 2012.10.31 |