Kernel
- 인터페이스와 함께 운영체제의 한 구성으로, 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심 기능을 구현한 프로그램
커널 개념
- 커널은 운영체제의 핵심 부분으로, 하드웨어와 소프트웨어 사이의 중개자 역할을 합니다.
- 프로그램이 하드웨어를 직접적으로 접근할 수 없기 때문에 커널을 통해 접근합니다.
커널과 인터페이스
- 운영체제는 커널과 인터페이스로 분리되어 있어, 같은 커널에 다른 종류의 인터페이스를 붙일 수 있다.
- 같은 커널이라도 다른 인터페이스가 장착되면 사용자에게는 다른 운영체제처럼 보인다.
- 크게 유닉스 계열 커널과 윈도우 계열 커널로 나뉘는데, 유닉스 커널은 빠르고 안정적으로 작동하는 운영체제인 반면, 문자 기반 사용자 인터페이스인 쉘(sh)을 사용한다.
시스템 호출과 디바이스 드라이버
- 커널은 사용자나 응용 프로그램이 컴퓨터 자원에 직접 접근하는 것을 차단한다.
- 컴퓨터 자원을 이용하려면 시스템 호출(System Call)이라는 커널의 인터페이스를 이용하여 접근해야 한다.
- 디바이스 드라이버(Device Driver)는 운영체제와 하드웨어 사이에서 통신을 가능하게 하는 인터페이스다.
- 주변장치와 데이터를 주고받는 표준 방식을 따르는 주변장치는 커널이 제공하는 드라이버를 이용하고, 그렇지 않다면 장치 제작자의 디바이스 드라이버를 따로 설치해야 한다.
커널의 역할
기능 | 설명 |
---|
프로세스 관리 | 프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공한다. |
메모리 관리 | 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공한다. |
파일 시스템 관리 | 데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다. |
입출력 관리 | 필요한 입력과 출력 서비스를 제공한다. |
프로세스 간 통신 관리 | 공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다. |
커널의 종류
단일형 구조 커널(Monolithic Architecture)
- 초창기 운영체제의 구조로, 커널의 핵심 기능을 구현하는 모듈이 구분없이 하나로 구성되어 있다.
- 모듈이 거의 분리되지 않아 모듈 간의 동신 비용이 줄어 효율적인 운영이 가능하다.
- 모든 모듈이 하나로 묶여 버그나 오류를 처리하기 어렵다.
- 시스템의 상호 의존성이 높기 때문에 기능상의 작은 결함이 시스템 전체로 확대될 수 있다.
- 수정이 어려워 다양한 환경의 시스템에 적용하기 어렵다.
- 현대의 운영체제는 매우 크고 복잡하여 완전한 단일형 구조의 운영체제를 구현하기가 어렵다.
- 대표적으로 MS-DOS, VMS, 초기의 유닉스가 있다.
계층형 구조 커널(Layered Architecture)
- 단일형 구조 커널이 발전된 형태로, 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층 간의 통신을 통해 운영체제를 구현하는 방식이다.
- 윈도우를 비롯해 오늘날 대부분의 운영체제 구조이다.
- 비슷한 기능을 모아 모듈화했기 때문에 단일형 구조보다 버그나 오류를 쉽게 처리할 수 있다.
- 오류가 발생했을 때 전체 커널을 고치는 것이 아니라 해당 계층만 따로 수정하면 되기 때문에 디버깅이 쉽다.
마이크로 구조 커널(Micro Architecture)
- 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 운영체제의 핵심 기능만을 커널 내부에 두고, 나머지 기능은 사용자 영역에 두는 방식이다.
- 각 모듈은 세분화되어 존재하고 독립적으로 작동하기 때문에 하나의 모듈이 실패하더라도 전체 운영체제가 멈추지 않는다.
- 커널이 이식하기 쉽고 가벼워서 CPU용량이 작은 시스템에도 적용할 수 있다.
- 대표적으로 애플의 OS X와 iOS가 있다.
가상머신
- 가상머신(Virtual Machine)은 운영체제와 응용 프로그램 사이에서 작동하는 프로그램으로, 하나의 컴퓨터에서 여러 개의 운영체제를 동시에 실행할 수 있게 하여 호환성을 높인다.
- 호스트 컴퓨터(실제 컴퓨터)와 게스트 운영체제(가상머신에서 실행되는 운영체제) 사이에서 인터페이스를 제공한다.
- 하나의 호스트 머신 위에 여러 개의 운영체제가 실행되기 때문에 성능이 저하되는 단점이 있다.