OS: Kernel

Snack 남관식·2023년 5월 5일
0

Operating System

목록 보기
2/5
post-thumbnail

Kernel

  • 인터페이스와 함께 운영체제의 한 구성으로, 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심 기능을 구현한 프로그램

커널 개념

  • 커널은 운영체제의 핵심 부분으로, 하드웨어와 소프트웨어 사이의 중개자 역할을 합니다.
  • 프로그램이 하드웨어를 직접적으로 접근할 수 없기 때문에 커널을 통해 접근합니다.

커널과 인터페이스

  • 운영체제는 커널과 인터페이스로 분리되어 있어, 같은 커널에 다른 종류의 인터페이스를 붙일 수 있다.
  • 같은 커널이라도 다른 인터페이스가 장착되면 사용자에게는 다른 운영체제처럼 보인다.
  • 크게 유닉스 계열 커널과 윈도우 계열 커널로 나뉘는데, 유닉스 커널은 빠르고 안정적으로 작동하는 운영체제인 반면, 문자 기반 사용자 인터페이스인 쉘(sh)을 사용한다.

시스템 호출과 디바이스 드라이버

  • 커널은 사용자나 응용 프로그램이 컴퓨터 자원에 직접 접근하는 것을 차단한다.
  • 컴퓨터 자원을 이용하려면 시스템 호출(System Call)이라는 커널의 인터페이스를 이용하여 접근해야 한다.

  • 디바이스 드라이버(Device Driver)는 운영체제와 하드웨어 사이에서 통신을 가능하게 하는 인터페이스다.
  • 주변장치와 데이터를 주고받는 표준 방식을 따르는 주변장치는 커널이 제공하는 드라이버를 이용하고, 그렇지 않다면 장치 제작자의 디바이스 드라이버를 따로 설치해야 한다.

커널의 역할

기능설명
프로세스 관리프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공한다.
메모리 관리프로세스에 작업 공간을 배치하고 실제 메모리보다 큰 가상공간을 제공한다.
파일 시스템 관리데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다.
입출력 관리필요한 입력과 출력 서비스를 제공한다.
프로세스 간 통신 관리공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다.

커널의 종류

단일형 구조 커널(Monolithic Architecture)

  • 초창기 운영체제의 구조로, 커널의 핵심 기능을 구현하는 모듈이 구분없이 하나로 구성되어 있다.
  • 모듈이 거의 분리되지 않아 모듈 간의 동신 비용이 줄어 효율적인 운영이 가능하다.
  • 모든 모듈이 하나로 묶여 버그나 오류를 처리하기 어렵다.
  • 시스템의 상호 의존성이 높기 때문에 기능상의 작은 결함이 시스템 전체로 확대될 수 있다.
  • 수정이 어려워 다양한 환경의 시스템에 적용하기 어렵다.
  • 현대의 운영체제는 매우 크고 복잡하여 완전한 단일형 구조의 운영체제를 구현하기가 어렵다.
  • 대표적으로 MS-DOS, VMS, 초기의 유닉스가 있다.

계층형 구조 커널(Layered Architecture)

  • 단일형 구조 커널이 발전된 형태로, 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층 간의 통신을 통해 운영체제를 구현하는 방식이다.
  • 윈도우를 비롯해 오늘날 대부분의 운영체제 구조이다.
  • 비슷한 기능을 모아 모듈화했기 때문에 단일형 구조보다 버그나 오류를 쉽게 처리할 수 있다.
  • 오류가 발생했을 때 전체 커널을 고치는 것이 아니라 해당 계층만 따로 수정하면 되기 때문에 디버깅이 쉽다.

마이크로 구조 커널(Micro Architecture)

  • 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 운영체제의 핵심 기능만을 커널 내부에 두고, 나머지 기능은 사용자 영역에 두는 방식이다.
  • 각 모듈은 세분화되어 존재하고 독립적으로 작동하기 때문에 하나의 모듈이 실패하더라도 전체 운영체제가 멈추지 않는다.
  • 커널이 이식하기 쉽고 가벼워서 CPU용량이 작은 시스템에도 적용할 수 있다.
  • 대표적으로 애플의 OS X와 iOS가 있다.

가상머신

  • 가상머신(Virtual Machine)은 운영체제와 응용 프로그램 사이에서 작동하는 프로그램으로, 하나의 컴퓨터에서 여러 개의 운영체제를 동시에 실행할 수 있게 하여 호환성을 높인다.
  • 호스트 컴퓨터(실제 컴퓨터)와 게스트 운영체제(가상머신에서 실행되는 운영체제) 사이에서 인터페이스를 제공한다.
  • 하나의 호스트 머신 위에 여러 개의 운영체제가 실행되기 때문에 성능이 저하되는 단점이 있다.

profile
iOS Developer | Product Designer @snacknam

0개의 댓글