이것을 참고했습니다.
커널 오브젝트 : 커널에 의해 관리되는 리소스 정보를 담고있는 데이터 블록
운영체제에 의해 생성 및 소멸되는 것을 리소스라고 합니다.
우리가 파일을 생성, 소멸 시키는 것도 리소스입니다.
하지만 운영체제에 의해 생성, 소멸되는 리소스가 있는데 이것이 커널 오브젝트입니다.
파일 뿐만아니라 핸들, 쓰레드 등등 os가 자동으로 생성해주는 경우에도 커널 오브젝트가 생기게 됩니다.
우리가 어떤 파일을 생성 소멸 시킬 경우 리소스에 대한 요구사항이 있습니다.
이 요구사항을 들어주는 것이 커널입니다.
요구사항을 들어주기 위해서는 리소스를 컨트롤할 수 있는 정보들(접근정보, 파일을 어디까지 읽었는지에 대한 정보)을 가지고 있어야 하는데 이런 정보를 담은 데이터 블록을 커널 오브젝트라 부릅니다.
만약에 시스템 함수를 써서 우선순위를 높이려면 프로세스를 구분하기 위해 커널 어브젝트 정보를
전달 해주어야 합니다.
근데 직접 접근은 할 수 없고 , 핸들을 통해 접근해야 합니다.
즉 핸들은 커널 오브젝트를 구분하기 위해 매긴 번호라고 할 수 있습니다.
※커널 오브젝트와 핸들의 종속관계

A 생성하면 A커널 오브젝트 생성 UC(usage count)증가

A(부모)에 B(자식)을 생성 A에서 B커널 오브젝트에 접근할 수 있는 핸들 생성,
B 생성하면 B커널 오브젝트 생성 UC 2
만약에 B를 삭제를 해도 A가 B커널 오브젝트를 가리키고 있어서 UC가 1이다.
즉, 프로세스 B를 삭제하더라도 B커널 오브젝트가 없어지는 것이 아니라 UC가 0이여야지(A가
B커널 오브젝트를 참조하지 않을 때) 비로소 커널 오브젝트가 사라진다고 볼 수 있다.
'비트교육 > system_programming' 카테고리의 다른 글
| 환경변수 나타내기 (0) | 2020.09.10 |
|---|---|
| error 나타내주기 (0) | 2020.09.10 |