OS and Kernel

OS

다음과 같은 3가지 목적을 가진다.

  • 사용자가 컴퓨터 하드웨어에서 편리하고 효율적으로 프로그램을 실행할 수 있는 환경 제공

  • 요청된 임무를 수행하기 위해 컴퓨터 별도의 자원 할당

  • 사용자의 프로그램 실행을 감독하고 작동과 입출력 장치 컨트롤 관리

운영체제는 컴퓨터가 부팅될 때 메모리 내 커널 영역이라는 공간에 따로 적재되어 실행된다. 커널 영역을 제외한 나머지가 사용자 영역으로, 사용자가 이용하는 응용 프로그램이 적재된다.

Kernel

자원에 접근하고 조작하는 것, 프로그램을 올바르고 안전하게 실행하는 기능을 담당하는 부분이다. 커널에 사용자의 명령을 전달하고 실행결과를 사용자에게 알려주려면 인터페이스가 필요하다.

  • GUI(Graphical User Interface): 스마트폰이나 윈도우 화면처럼 그래픽을 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스

  • CLI(Command Line Interface): 명령어를 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스

운영체제는 사용자가 실행하는 응용 프로그램이 하드웨어에 직접 접근하는 것을 이중모드로 방지해 자원을 보호한다.

이중모드

이중모드는 사용자모드(1)과 커널모드(0)으로 나뉜다.

사용자 모드

일반적인 응용프로그램은 사용자 모드로 실행된다. 커널 영역의 코드를 실행할 수 없으며 하드웨어 자원에 접근할 수 없다.

커널 모드

커널 영역의 코드를 실행할 수 있으며 하드웨어 자원에 접근할 수 있다.

시스템 호출

사용자 모드로 실행되는 프로그램은 시스템 호출을 통해 커널 모드로 전환하여 운영체제 서비스를 제공받을 수 있다. 일종의 인터럽트이며, 사용자 모드에서 시스템 호출을 통해 커널모드로 전환되고 접근이 끝나면 다시 사용자 모드로 복귀한다. 응용 프로그램이 실행될 때 빈번하게 시스템 호출을 발생시키고 사용자 모드와 커널 모드를 오가며 실행된다. 커널에 대해 더 자세히 알아보자. 커널은 Monolithic Kernel, Layerd, Micro Kernel, Module, Hybrid와 같이 다양한 구조를 가진다.

커널 구조

Monolithic Kernel

전통적인 운영체제 설계 방법이다. 커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성되어있다.

장점

  • 모듈이 분리되지 않아 모듈 간 통신 비용이 줄고 효율적인 운영이 가능하다.

  • 빠르다.

단점

  • 한 모듈에 장애가 생기면 전체에 영향을 끼친다.

  • 수정이 어려워 이식성이 떨어진다.

  • 커널의 기능을 확장하면 크기가 방대해져 관리가 어려워진다.

Layerd Kernel

비슷한 기능을 수행하는 요소가 그룹화, 계층화 된 형태이다. 가장 아래쪽 레이어(0)은 하드웨어, 가장 높은쪽 레이어(N)는 사용자 인터페이스이다. 각 계층은 자신의 하위 계층만 사용 가능하다.

장점

  • Monolithic 구조보다 모듈화가 잘 되어있다.

  • 시스템 검증과 오류 수정이 용이하다.

  • 시스템 설계나 구현이 단순해진다.

단점

  • Monolithic 구조보다 성능이 낮다.

  • 추가적인 시스템 호출이 필요하다.

Micro Kernel

프로세스 관리, 메모리 관리, CPU 스케줄링, 프로세스 간 통신(IPC)과 같은 기본적인 기능만을 커널 영역에서 제공하고 이 외의 다른 기능은 사용자 영역에 구현함으로써 커널의 크기를 줄인 구조이다.

장점

  • 각 모듈이 독립적으로 작동해 한 모듈에 장애가 생겨도 전체에 영향을 주지 않는다.

  • 이식성이 뛰어나다.

단점

  • 모듈 간 프로세스 통신(IPC)가 발생하여 느리며 메세지 전달 방식을 사용해 오버헤드가 발생할 수 있다.

  • 시스템의 자원을 효율적으로 사용하기 어렵다.

Module Kernel(LKM:Lodable Kernel Module)

커널에 핵심 기능 세트가 있고 추가 서비스를 모듈 형태로 동적으로 추가할 수 있는 구조이다.

장점

  • 전체 시스템을 수정하지 않고도 새로운 모듈을 추가할 수 있다.

  • 엄격한 계층 구조 없이 서로 상호작용할 수 있어 유연하다.

  • Micro 구조처럼 통신이 필요 없어 효율적이다.

단점

  • 동적으로 로드되는 모듈을 제대로 관리하지 않으면 보안 취약점이 발생할 수 있다.

  • 커널 관리 복잡도가 증가한다.

  • 동적 동작이 제대로 구현되지 않으면 한번에 구현되는 Monolithic보다 비효율적이며 리소스 소비가 증가할 수 있다.

Hybrid

Monolithic + Micro 구조이다. 데스크톱이나 모바일 디바이스처럼 복잡하거나 다양한 컴퓨팅 환경에서 요구사항과 작업이 크게 달라질 수 있는 환경에서 널리 사용된다. 예시로는 Mac OS, iOS, Android가 있다.

Last updated