IT's 우

[OS] 커널(kernel) 본문

CS/OS

[OS] 커널(kernel)

디우 2023. 8. 18. 13:53
728x90

커널(kernel)

컴퓨터 자원을 관리하는 운영체제의 핵심 부분

 

커널의 정의


커널은 운영체제 중 항상 메모리에 올라가 있는 운영체제의 핵심 부분으로 하드웨어와 응용 프로그램 사이에서 인터페이스를 제공하는 역할을 하며 컴퓨터 자원들을 관리하는 역할을 한다.

 

커널은 컴퓨터를 켰을 때, 가장 먼저 메인 메모리에 올라가는 프로그램으로 컴퓨터를 끌 때까지 내려가지 않는다. 커널은 메모리에 항상 머무른다.

 

 

즉, 커널은 인터페이스로써 응용 프로그램 수행에 필요한 여러 가지 서비스를 제공하고, 여러 가지 하드웨어(CPU, 메모리) 등의 리소스를 관리하는 역할을 한다.

 

커널은 항상 컴퓨터 자원을 바라보고 있으므로 사용자와의 상호작용은 지원하지 않는다. 따라서 사용자와의 직접적인 상호작용을 위해 프로그램을 제공하게 되는데, 대표적으로 쉘(Shell)이라는 명령어 해석기 등이 있다.

 

 

커널의 기능


커널의 가장 큰 목표는 컴퓨터의 물리적(하드웨어) 자원과 추상화 자원을 관리하는 것이다.

 

👉 추상화란?
물리적으로 하나뿐인 하드웨어를 여러 사용자들이 번갈아 사용할 수 있도록 마치 여러 개처럼 보이게 하는 기술.
즉, 커널이 관리함에 따라 각 사용자들을 하나의 하드웨어를 독점하는 것처럼 느낄 수 있도록 하는 기술
  1. 메모리 관리
    • 메모리가 어디에서 무엇을 저장하는 데 얼마나 사용되는지를 추적
  2. 프로세스 관리
    • 어느 프로세스가 중앙 처리 장치(CPU)를 언제 얼마나 오랫동안 사용할지를 결정
  3. 장치 드라이버
    • 하드웨어와 프로세스 사이에서 중재자 / 인터프리터의 역할을 수행
  4. 시스템 호출 및 보안
    • 프로세스의 서비스 요청을 수신

 

 

인터페이스로써의 커널


커널은 다양한 자원을 관리하는데 이는 사용자가 물리적인 하드웨어에 접근하고 사용할 수 있도록 매개하기 위해서이다. 즉, 인터페이스로써 사용자가 컴퓨터만의 언어와 규칙으로 하드웨어와 통신할 수 있도록 도와주는 역할을 한다.

 

 

Kernel Space

커널 구성요소들이 존재하는 공간.

 

Kernel Space 위에서는 사용자로 여겨지는 User Space가 있으며 여기에는 Task, Process들이 존재한다.

 

User Spcae와 Kernel Space 사이에 System Call Interface가 있다. User Space의 Task 또는 Process들이 커널이 관리하는 자원에 접근해야 할 필요가 있을 때 System Call Interface를 통해 Kernel Space의 자원관리자에게 요청이 전달되는 방식이다.

→ 커널은 사용자 요청에 맞는 하드웨어에게 명령을 전달하고 작업을 수행하는 역할을 한다.

 

즉, 커널은 사용자가 System Call을 통해 컴퓨터 자원을 사용할 수 있게 해주는 자원 관리자라고 할 수 있다.

 

 

커널과 운영체제의 차이점


커널: 운영체제의 핵심 구성요소,

운영체제: 커널 + 애플리케이션 + 유틸리티

  • 커널 공간, 사용자 공간으로 나뉜다.

 

 

커널의 유형


 

 

모놀로식 커널


우리가 개념적으로 알고 있는 커널

애플리케이션을 제외한 모든 System 서비스들(VFS, IPC, File System) 등을 커널이 직접 관리하는 방식

각 서비스들을 커널 내부의 여러 계층에서 관리된다.

모놀리식 커널은 사용자가 운영체제 서비스들을 System Call을 통해 사용할 수 있게 해 준다.

단점

모놀리식 커널은 커널이 많은 것을 관리하기 때문에 커널의 크기가 크고, 하나의 오류가 전체 시스템에 영향을 끼칠 수 있는 단점이 있다.

장점

커널 내부에서 서비스들이 서로 시스템 자원을 공유하며 효율적으로 관리할 수 있고, 내부 서비스를 직접 커널이 수행하기에 빠른 처리속도를 가지는 장점이 있다.

초기 모놀리식 커널은 단일 모듈이었기에 내부 서비스의 추가, 수정에 있어서 커널 전체를 다시 컴파일 및 로딩이 필요했다. 다만 최신 모놀리식 커널은 여러 개의 모듈로 구성되어 있어서 커널의 추가, 수정이 수월해졌다.

대표적인 모놀리식 커널에는 Unix, Embedded Linux, OSEK, WinMobile 등이 있다.

 

마이크로 커널


마이크로 커널은 기존의 모놀리식 커널에서 핵심 서비스(Process Management, Memory Management, Network Management 등)만을 남겨두고 나머지는 제외하여 가볍게 만든 커널이다. 기존의 모놀리식 커널이 가지고 있던 시스템 서비들(VFS, IPC, Device Driver 등)을 마이크로 커널에서는 개별적인 서버의 형태로 존재한다.

단점

마이크로 커널은 최소화하고 핵심적인 서비스들만 모아놓고 서버를 추가하는 방식의 구조여서 프로세스 간 통신을 통해 대부분의 서비스가 수행된다. 따라서 메시지 전송에 따른 컨텍스트 스위칭이 많이 발생하고, 시스템 복잡도가 증가될수록 시스템 부하, 오버헤드가 증가한다.

장점

서버를 추가하는 방식이기에 커널을 변경하지 않고 간단히 기능을 추가, 수정할 수 있고, 프로세스가 각각의 서버영역에서 수행되기 때문에 하나의 서비스가 다운되어도 다른 서비스에까지도 영향을 끼치지 않는 장점이 있다.

가벼운 성질 때문에 임베디드 시스템 등에 사용된다. 대표적인 마이크로 커널에는 MacOS, Winodws NT 등이 있다.


출처

https://minkwon4.tistory.com/295

https://hongong.hanbit.co.kr/운영체제란-커널의-개념-응용-프로그램-실행을-위한/

https://www.redhat.com/ko/topics/linux/what-is-the-linux-kernel

 

728x90
반응형

'CS > OS' 카테고리의 다른 글

[OS] 프로세스와 스레드  (0) 2023.08.24