시스템 프로그래밍

6-1. 커널 오브젝트에 대한 이해

CalebHong 2022. 5. 13. 12:00
SMALL

커널 오브젝트

* 커널 오브젝트(Kernel Object)

 - 커널(kernel)에 의해 관리되는 리소스 정보를 담고 있는 데이터 블록

 - OS(운영체제)의 핵심 or 알맹이는 커널에 해당됨

 - 리소스는 OS에 의해 생성/소멸되는 데이터를 말함

Kernel Object   Resource
파이프 커널 오브젝트 ←─→ 파이프
프로세스 커널 오브젝트 ←─→ 프로세스
쓰레드 커널 오브젝트 ←─→ 쓰레드

 - 예를 들어 파일에 대한 접근 정보는 OS가 가지고 있어서 사용자가 파일 접근에 대해 관리하게 됨

 - 파일을 생성하거나 오픈하게 되면 이에 대한 커널 오브젝트가 생성이 됨(커널 오브젝트 없이 관리되지 않음)

 - 프로세스 커널 오브젝트에 프로세스에 대한 상태, 우선순위 등에 대한 정보를 담고 있음

 - 따라서 커널 오브젝트마다 각기 다른 정보를 가지고 있음

 

* 프로세스 기반 커널 오브젝트

커널 오브젝트와 핸들의 관계

Handle   Kernel Object   Resource
파이프 핸들 ←─→ 파이프 커널 오브젝트 ←─→ 파이프
프로세스 핸들 ←─→ 프로세스 커널 오브젝트 ←─→ 프로세스
쓰레드 핸들 ←─→ 쓰레드 커널 오브젝트 ←─→ 쓰레드

 - 운영체제에 의해서 커널 오브젝트가 관리 됨

 - 만약 프로세스의 우선순위를 높여주고 싶으면 직접적으로 접근이 불가

 - 커널 오브젝트에 직접적 접근할 수 없게 되어 있어서 간접적으로 핸들로써 접근할 수 있음

 - 커널 오브젝트 마다 핸들이 할당되어 있기 때문에 핸들 정보를 통해 커널 오브젝트에 접근이 가능

 

 * 호출한 프로세스의 핸들 정보를 가져오는 함수: GetCurrentProcess()

 - 핸들에 접근하여 프로세스의 우선순위를 높이는 함수 예

SetPriorityClass( GetCurrentProcess(), HIGH_PRIORITY_CLASS);

 

cf) Sleep 함수를 통해 프로세스의 상태를 변경하게 되면 인자값의 시간(ns) Blocked 상태가 됨

    그러나 우선순위에 밀리게 되면 Blocked 상태가 아닌 Ready 상태가 됨

    또한 우선순위에 밀리게 되면 모든 함수를 완료한 뒤에 넘기는 것이 아니라 중간에도 넘어갈 수 있음

    (우선순위를 넘기는 기준은 함수 단위가 아님)

반응형