운영체제는 커널과 인터페이스로 구성되어 있다.
커널(kernal)은 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심 기능을 구현한 프로그램이다. 자동차에 비유하자면 엔진과 같다. 자동차의 성능은 엔진이 좌우하듯이 운영체제의 성능은 커널이 좌우한다.
인터페이스(Interface)는 사용자와 응용 프로그램에 인접하여 커널에 명령을 전달하고 실행 결과를 사용자와 응용 프로그램에 돌려준다.
시스템 호출은 커널이 자신을 보호하기 위해 만든 인터페이스이다. 커널은 컴퓨터 자원을 보호하기 위해 사용자나 응용 프로그램이 자원에 직접 접근하는 것을 차단한다. 따라서 자원을 이용하려면 시스템 호출이라는 인터페이스를 이용하여 접근해야 한다.
응용 프로그램 입장에서 봐보자, 어떤 프로그램은 14를, 어떤 프로그램은 21을 저장하려고 한다고 가정해보자.
- 직접 접근 : 두 프로그램이 직접 데이터를 저장한다. 이 경우에는 서로 저장하는 부분이 겹쳐 데이터가 지워질 수도 있다.
- 시스템 호출을 통한 접근 : 커널이 제공하는 write() 함수를 사용하여 데이터를 저장해 달라고 요청한다. 응용 프로그램은 데이터가 하드디스크의 어느 위치에 어떻게 저장되었는지는 알 수 없다. 만약 자신이 저장한 데이터를 읽고 싶다면 read() 함수로 시스템 호출을 이용하면 된다. 이렇듯 커널을 통해 접근하면 커널이 자원을 관리해주기 때문에 수월하다.

시스템 호출은 커널이 제공하는 시스템 관련 서비스를 모아놓은 것이며 함수 형태로 제공된다.
- 커널이 제공하는 시스템 자원을 사용하기 위한 함수다.
- 응용 프로그램이 하드웨어 자원에 접근하거나 운영체제가 제공하는 서비스를 이용하려면 시스템 호출을 사용해야 한다.
- 운영체제는 커널이 제공하는 서비스를 시스템 호출로 제한하고 다른 방법으로는 커널에 들어오지 못하게 막아 컴퓨터 자원을 보호한다.
- 커널이 제공하는 서비스를 이용하기 위한 인터페이스이며 사용자가 자발적으로 커널 영역에 진입할 수 있는 유일한 수단이다.
커널과 하드웨어 인터페이스를 디아비스 드라이버라고 부른다.

현대의 운영체제에서 커널은 주변장치와 데이터를 주고받는 표준 방식을 정하고 있지만, 성능 향상이나 편리성을 위하여 표준 외의 기능을 수행하는 경우에는 장치 제작자가 디바이스 드라이버를 따로 준비해야 한다.
커널의 가장 중요한 작업은 여러 응용 프로그램을 실행하는 것이다. 실행중인 프로그램은 프로세스라고 하는데, 다양한 종류의 프로세스에 CPU를 배분하고 작업할 수 있는 환경을 만들어 주는 것이 커널의 주요 역할이다.
| 핵심 기능 | 설명 |
|---|---|
| 프로세스 관리 | 프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공한다. |
| 메모리 관리 | 프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공한다. |
| 파일 시스템 관리 | 데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다. |
| 입출력 관리 | 필요한 입력과 출력 서비스를 제공한다. |
| 프로세스 간 통신 관리 | 공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다. |
초창기 운영체제의 구조로, 핵심 기능을 구현하는 모듈이 구분 없이 하나로 구성되어 있다. 프로그램에 비유하자면 main() 함수 안에 다 때려 넣은 것이다.

장점 :
단점 :
단일형 구조 커널이 발전된 형태로, 비슷한 기능을 가진 모듈을 묶어 하나의 계층으로 만들고 계층 간의 통신을 통해 운영체제를 구현하는 방식이다.

장점 :
단점 :
프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공한다. 다른 커널에 비해 운영체제의 많은 부분이 사용자 영역에 구현되어 있다.

장점 :
단점 :
가상머신은 운영체제와 응용 프로그램 사이에서 작동하는 프로그램으로, 응용 프로그램이 모두 동일환 환경에서 작동하는 것처럼 보인다. 대표적인 언어로 Java, 가상 머신으로는 JVM(Java Virtual Machine)이 있다.

장점 :
단점 :