본문 바로가기

프로그래밍/C++

커널 (Kernel)

커널(Kernel)
: 컴퓨터를 운영하는 데 있어서 중심이 되는 운영체제 핵심 부분

커널 오브젝트 (Kernel Object)
: 커널에서 관리하는 중요한 정보를 담아둔 데이터 블록
윈도우 OS는 프로세스, 스레드 혹은 파일과 같은 리소스들을 원활히 관리하기 위해 필요한 정보를 저장해야 한다. 이때 데이터를 저장하는 메모리 블록을 가리켜 커널 오브젝트라 한다.

핸들 (Handle)
: 커널 오브젝트에 할당되는 숫자, 프로세스 커널 오브젝트에 존재하는 우선순위 정보를 변경해야할 때 사용한다.

커널 오브젝트의 종속관계
1. 커널 오브젝트는 프로세스에 종속적인 것이 아니라, OS에 종속적인 관계로 커널 오브젝트의 소멸 시점은 OS에 의해서 결정된다.

2. 커널 오브젝트는 프로세스에 종속적인 것이 아니라 OS에 종속적인 관계로 여러 프로세스에 의해서 접근 가능하다.

핸들의 종속 관계
: 핸들은 OS에 종속적이지 않고 프로세스에 종속적이다.

커널 오브젝트는 OS에 종속적인 관계이기 때문에 여러 프로세스에 의해서 접근(공유)이 가능하다.

Process Handle과 Process ID의 차이점
: Process Handle은 프로세스의 커널 오브젝트를 가리키기 위한 것이고, Process ID는 프로세스 자체를  구분짓기 위한 것이다.

IPC (Inter-Process Communication)
: 프로세스 사이의 통신

프로세스는 자신에게 할당된 메모리 공간 이외에는 접근이 불가능하다.

메일 슬롯 원리 (Mail Slot)
: 데이터를 주고 받기 위해서 프로세스가 우체통을 마련하는 것

메일 슬롯은 한쪽 방향으로만 메세지를 전달할 수 있다. Broadcasting 방식의 통신을 지원한다. 즉, 하나의 Sender는 한번의 메세지 전송으로 여러 Receiver에게 동일한 메세지를 동시에 전송하는 것이 가능하다.

커널 오브젝트의 두가지 상태

1. Non-Signaled 상태
  : 프로세스 커널 오브젝트가 실행 중일때

2. Signaled 상태
  : 프로세스가 종료되었을 때

종료된 프로세스는 다시 실행을 재개하지 못한다

'프로그래밍 > C++' 카테고리의 다른 글

동기화 (Synchronization)  (0) 2019.02.21
커널 영역과 유저 영역  (0) 2019.02.20
스레드 (Thread)  (0) 2019.02.19
문자열  (0) 2019.02.12
시스템 프로그래밍  (0) 2019.02.11