커널이란
커널이란, 운영체제의 핵심 부분을 의미한다. 우리가 운영체제라고 부르는 것의 가장 중심에 있는 프로그램이 바로 커널이다. 커널은 하드웨어와 소프트에어 사이를 연결하는 다리 역할을 한다. 즉, 사용자가 프로그램을 실행하거나 명령을 내리면, 커널이 이를 받아 실제 하드웨어가 동작할 수 있도록 관리하고 조정한다.
쉽게 말해, 커널은 컴퓨터의 심장과 같은 존재다. 컴퓨터가 부팅될 때 가장 먼저 실행되며, 시스템이 꺼질 때 까지 계속해서 CPU, 메모리, 저장장치 등의 자원을 효율적으로 조율한다.
커널의 주요 기능
커널이 담당하는 일은 다음과 같다.
- 프로세스 관리
- 프로그램 실행을 관리하고, 여러 프로그램이 동시에 실행 될 때 자원을 할당한다.
- 메모리 관리
- 프로그램이 사용할 메모리를 할당하고, 불필요한 메모리는 회수한다.
- 파일 시스템 관리
- 파일의 생성, 삭제, 읽기, 쓰기 같은 작업을 관리한다.
- 장치 관리
- 키보드, 마우스, 프린터, 하드디스크 같은 하드웨어 장치와 소통한다.
- 시스템 호출 인터페이스 제공
- 사용자 프로그램이 커널 기능을 사용할 수 있도록 인터페이스를 제공한다.
커널은 왜 중요한가?
커널은 운영체제의 핵심 부분을 의미한다고 언급했다. 커널이 없다면 프로그램은 하드웨어에 직접 접근해야 한다. 하지만 그렇게 되면 프로그램마다 하드웨어를 관리하는 방식이 달라지고, 충돌이나 오류가 끊임없이 발생할 수 있다. 커널이 중간에 존재함으로써,
- 프로그램은 복잡한 하드웨어 제어를 몰라도 되고,
- 하드웨어도 통일된 방식으로 관리할 수 있다.
즉, 커널은 안정성과 효율성을 동시에 확보하는데 필수적인 역할을 한다는 것이다.
커널의 종류
커널의 역할은 모두 같지만, 구성 방식에 따라 종류가 다른다. 크게 보면, 모놀리식 커널, 마이크로 커널, 하이브리드 커널이 있다.
모놀리식 커널
모놀리식 커널은 모든 기능이 하나의 거대한 프로그램 안에 통합되어 있는 형태다. 프로세스 관리, 메모리 관리, 파일 시스템 관리, 장치 드라이버 등 모든 핵심 기능이 하나의 덩어리로 동작한다.
모놀리식 커널은 고속 처리가 가능하다는 장점을 갖고 있지만, 한 프로그램 안에 통합되어 있기에 버그나 오류 발생 시 전체 시스템에 영향을 받기 쉽다는 단점을 보인다.
모놀리식 커널의 예로는 Linux, Unix가 있다.
마이크로 커널
마이크로 커널은 이름 그대로, 커널을 최소한의 기능만 남겨두고 나머지 기능들은 외부로 분리한 구조를 의미한다. 커널 안에는 프로세스 관리, 메모리 관리 같은 핵심 기능만 있고, 파일 시스템, 드라이브 등은 별도의 사용자 공간에서 동작한다.
마이크로 커널은 안전성과 보안성이 높다는 장점을 갖고 있지만, 통신 비용이 늘어 속도가 느리다는 단점을 보인다.
마이크로 커널은 Minix, QNIX, macOS가 있다.
하이브리드 커널
하이브리더 커널은 모놀리식 커널과 마이크로 커널의 장점을 섞은 형태다. 기본적으로 마이크로커널처럼 모듈화 되어 있지만, 성능 향상을 위해 일부 기능은 커널 안에 직접 넣기도 한다. 즉, 필요에 따라 유연하게 구성하는 방식이다.
하이브리드 커널은 안전성과 성능 모두 어느 정도 확보할 수 있다는 장점은 있지만, 구조가 복잡하고 관리가 어렵다는 단점 또한 가지고 있다.
Window, macOS 등이 이에 해당한다.
참고자료
※ 이 글은 『이것이 컴퓨터 과학이다』 책을 기반으로, 다양한 자료를 참고해 작성했습니다.
- Operating System Concepts』, Abraham Silberschatz