커널 (운영체제)
커널은 운영체제의 핵심적인 부분으로, 컴퓨터 하드웨어와 응용 프로그램 사이의 인터페이스 역할을 수행한다. 운영체제의 가장 기본적인 계층에 위치하며, 시스템의 모든 자원(CPU, 메모리, 입출력 장치 등)을 관리하고 응용 프로그램이 이러한 자원에 접근할 수 있도록 서비스를 제공한다. 커널은 운영체제의 다른 부분과 분리되어 보호 모드에서 실행되며, 시스템의 안정성과 보안을 유지하는 데 중요한 역할을 한다.
주요 기능
- 프로세스 관리: 프로세스 생성, 실행, 종료, 스케줄링 등을 담당하여 CPU 시간을 효율적으로 할당하고 다중 프로그래밍 환경을 지원한다.
- 메모리 관리: 메모리 할당 및 해제, 가상 메모리 관리, 페이지 교체 등을 수행하여 메모리 자원을 효율적으로 사용하고 프로세스 간의 메모리 충돌을 방지한다.
- 입출력 관리: 하드웨어 장치 드라이버를 통해 입출력 작업을 관리하고, 응용 프로그램이 하드웨어 장치에 접근할 수 있도록 인터페이스를 제공한다.
- 파일 시스템 관리: 파일 및 디렉터리 생성, 삭제, 읽기, 쓰기 등의 작업을 관리하고, 데이터 저장 및 접근 방식을 제공한다.
- 보안 관리: 사용자 인증, 권한 관리, 시스템 자원 보호 등을 통해 시스템의 보안을 유지한다.
커널의 종류
- 단일형 커널 (Monolithic Kernel): 커널의 모든 서비스가 하나의 주소 공간에서 실행되는 구조이다. 성능이 빠르지만, 커널의 크기가 크고 안정성이 낮아질 수 있다.
- 마이크로 커널 (Microkernel): 커널의 핵심 기능만 유지하고, 나머지 서비스는 사용자 공간에서 실행되는 구조이다. 커널의 크기가 작고 안정성이 높지만, 프로세스 간 통신 오버헤드가 발생하여 성능이 저하될 수 있다.
- 하이브리드 커널 (Hybrid Kernel): 단일형 커널과 마이크로 커널의 장점을 결합한 구조이다. 대부분의 운영체제에서 사용되며, 성능과 안정성 사이의 균형을 유지한다.
- 나노 커널 (Nanokernel): 마이크로 커널보다 더 작고 기본적인 기능만 제공하는 커널이다.
예시
리눅스, 윈도우 NT, macOS 등의 운영체제는 커널을 기반으로 구축되어 있다. 리눅스 커널은 모놀리식 커널에 가까운 구조를 가지며, 윈도우 NT 커널은 하이브리드 커널 구조를 가진다.