반응형

리눅스 커널과 관련하여 본격적인 글을 쓰기 전에 커널에 관하여 간략하게 소개하는 시간을 갖고자 합니다. 사람들은 흔히 운영체제와 커널을 같은 개념으로 말하고는 하는데 어떤의미에서는 같기도 하고 틀리기도 합니다.

 

운영체제를 한 문장으로 정의하기는 매우 어렵지만 기술적인 관점에서 이야기 하자면 기본적인 사용과 관리를 담당하는 시스템의 일부분이라고 볼 수 있습니다. 여기에 커널, 디바이스 드라이버, 부트로더, 쉘 등이 포함이 되고 웹 브라우저 같은 어플리케이션은 포함이 되지 않습니다.

 

운영체제라는 큰 카테고리안에 커널이 포함이 되지만, 실제로 커널 소스코드를 다운 받게 되면 커널 소스코드안에 커널, 디바이스 드라이버, 파일시스템, 부트코드 등 대부분의 코드를 포함하고 있습니다. 다시 말해 커널을 운영체제라고도 볼 수 있는 셈입니다.

 

어찌보면 운영체제와 커널을 꼭 구분해야 되는게 의미없는 논쟁일 수 도 있겠습니다.

 

운영체제에서 가장 핵심적인 역활을 하는 부분은 커널입니다. 커널은 운영체제의 가장 안쪽에 위치해서 모든 핵심적인 역활을 수행하고 시스템의 다른 모든 부분의 기본적인 서비스를 제공하며 하드웨어를 관리하고 시스템의 자원을 분배하게 됩니다.

 

커널의 주된 구성요소로는

 

1. 인터럽트 서비스 요청을 처리하는 인터럽트 핸들러

2. 프로세서(CPU) 실행 시간을 여러 프로세스에 분배하는 스케줄러

3. 프로세스 주소공간을 관리하는 메모리 관리 시스템

4. 네트워크나 프로세스간 통신을 처리하는 시스템 서비스 등등등 을 말할 수 있습니다.

 

또한 보호 메모리 관리장치가 있는 최근 시스템에서 커널은 일반적인 사용자 애플리케이션과 다른 시스템 상태를 갖고 있습니다. 다른 상태란, 보호메모리 공간사용, 제약없는 하드웨어 접근이 가능하다는 의미로 이같은 시스템 상태와 메모리 공간을 커널 공간 (Kernel Space)라고 부릅니다. 이와 반대되는 사용자 어플리케이션은 사용자 공간(User Space)에서 실행이 됩니다. 사용자 공간은 특정 시스템 함수와 제한된 장비의 가용 자원만이 사용가능합니다.

반응형

+ Recent posts