크게 커널과 유틸리티, 두가지로 분류할 수 있다.
핵심이라는 뜻의 영단어 Kernel에서 따왔다. OS의 핵심부분이며 메모리에 상주한다.
커널은 가장 빈번하게 사용되는 시스템 관리와 같은 기능들을 담당하며,
드라이버를 이용하여 CPU와 GPU와 같은 하드웨어를 제어하고, 여러 응용 프로그램들이
갖가지 다른 하드웨어 위에서 돌아가도록 호환성을 보장하기 위해 API를 제공한다.
메모리에 항상 올라와있지 않는 비상주 프로그램이다.
UI등의 서비스 프로그램을 담당한다.
하드웨어 위에 커널, 커널 위에 쉘과 어플리케이션이 실행된다.
사용자는 기본적으로 쉘을 통해 어플리케이션을 실행한다.
단일구조 운영체제
모든 기능이 하나의 커널에 존재. 커널 내 모듈간 직접통신을 하므로 효율적 자원관리와 사용이 가능하다.
하지만 커널이 거대화되므로 버그와 추가기능 구현에 유지보수가 어렵고, 한 모듈의 문제가 전체 시스템에 영향을 준다.
계층구조 운영체제
모듈화로 각 기능을 떼어 계층간 검증 및 수정이 용이하다. 설계및 구현이 단순화된다.
단점으로는 단일구조 대비 성능이 저하된다. 원하는 기능 수행을 위해 여러 계층을 거쳐야 한다.
마이크로 커널 구조
필수 기능만 포함하여 커널의 크기를 최소화한다.
기타 기능은 사용자 영역에서 수행한다.
커널이 사용하는 메모리 영역. OS는 커널공간을 통해 하드웨어와 상호작용 하며 프로세스와 시스템 자원을 관리한다.
커널 공간은 프로세스의 주소공간과 분리되어 있으며, 접근권한이 매우 제한적이다.
프로세스가 사용하는 메모리 영역. 사용자 프로그램의 코드,데이터,스택,힙이 저장된다. 커널공간과 분리되어 있으며, 일반적으로 사용자는 이 영역만 사용할 수 있다.
여러 프로세스가 공유하는 라이브러리 코드가 저장되는 영역.
이 영역에 저장된 라이브러리는 여러 프로세스가 동시에 사용할 수 있으므로 메모리 공간을 절약할 수 있다.