본문 바로가기

카테고리 없음

운영체제 - 커널(Kernul)

반응형

커널(Kernul)이란?

 

 

커널은 운영체제(OS)의 가장 핵심적이고 근본적인 부분이다. 컴퓨터 시스템의 모든 하드웨어와 소프트웨어 자원을 관리하고 애플리케이션이 이 자원들을 효율적이고 안전하게 사용할 수 있도록 추상화된 서비스를 제공하는 역할을 한다. 커널이 없으면 단순히 하드웨어 덩어리일 뿐이며 사용자가 직접 하드웨어를 제어해야 하는 불편함을 직면하게 된다.

 

커널은 하드웨어, 프로세스 및 스레드, 메모리, 파일 시스템, 입출력, 보안등을 제공하며 시스템 콜 인터페이스를 제공한다. 시스템 콜은 사용자 애플리케이션이 커널의 기능을 요청할 수 있는 표준화 방법을 제공한다.

 

 

시스템 콜(System Call)

시스템 콜(System Call)이 뭔데?

시스템 콜(SystemCall)은 커널(kernel)이 제공하는 서비스나 기능에 애플리케이션이 접근하기 위한 인터페이스다. 사용자 프로그램이 운영체제에게 작업을 대신해달라고 요청하는 유일한 통로이다.

 

시스템 콜은 크게 두 가지 모드로 작동한다.

 

  • 사용자모드(User Mode) : 우리가 사용하는 일반 애플리케이션(웹 브라우저, 게임, 워드 등)이 실행되는 모드이다. 이 모드에서는 하드웨어 자원(CPU, 메모리, 입출력장치)에 직접 접근하는 것이 제한된다. 그 이유는 시스템의 안정성과 보안을 위해서이다. 만약 어떠한 출처도 없는 프로그램을 받아버렸는데 하드웨어를 제어해버려서 컴퓨터를 조져(?!)버릴 수 있기 때문이다.
  • 커널 모드(Kernel Mode / Privileged Mode) : 운영체제의 커널이 실행되는 모드이다. 이 모드에서는 모든 하드웨어 자원에 대한 접근 권한과 제어권을 가진다. 이 모드는 시스템의 핵심적인 작업을 수행한다.

 

그래서 시스템콜이 왜 필요한가?

 

문제는 일반 사용자 프로그램이 파일 저장, 네트워크 통신, 메모리 할당 등의 작업을 수행해야 할 때이다. 이런 작업들은 하드웨어에 직접 접근해야 하는 경우가 많고, 이는 커널  모드에서만 가능하다. 이럴 때 사용자 프로그램은 커널에게 대신해달라고 요청해야 하는데, 이때 사용하는 것이 시스템 콜이다.

 

시스템 호출 과정

1. 사용자가 프로그램에서 특정한 OS 서비스(파일 열기, 메모리 할당, 프로세스 생성)를 요청하는 시스템 함수를 호출한ㄷ.

2. CPU는 모드를 사용자 모드에서 커널 모드로 전환한다.

3. 커널은 요청된 시스템 호출을 처리한다.

4. 처리 완료 후, CPU는 다시 사용자 모드로 전환되어 사용자 프로그램의 다음 명령어를 실행한다.

 

커널의 종류

커널은 구현 방식과 구조에 따라 여러 종류이다. 각각은 장단점이 있고, 특정 시스템의 요구사항에 맞춰 선택된다.

  • 모놀리식 커널 (Monolithic Kernel)
    • 운영체제의 모든 핵심 서비스(프로세스 관리, 메모리 관리, 파일 시스템, 장치 드라이버 등)가 하나의 큰 모듈로 통합되어 커널 공간에서 실행된다.
    • 장점
      • 모든 서비스가 동일한 주소 공간에 있어 서비스 간 통신이 매우 빠르다.(시스템 호출 오버헤드가 적음)
      • 구현이 비교적 간단하다.
    • 단점
      • 커널의 크기가 매우 커진다.
      • 하나의 모듈에서 오류가 발생하면 전체 시스템이 중단될 수 있다.
      • 새로운 기능을 추가하거나 수정하기 어렵고 커널 전체를 다시 컴파일해야 할 수 있다.
    • Linux, 초기의 Unix, Windows가 해당한다.
  • 마이크로 커널 (Microkernel)
    • 가장 기본적인 서비스(프로세스 통신, 메모리 관리, 스케줄링)만 커널 공간에 두고, 나머지 서비스(파일 시스템, 장치 드라이버, 네트워크 등)는 사용자 공간의 서버 프로세스로 분리하여 실행된다.
    • 장점
      • 커널이 크기가 매우 작고 간결하다.
      • 각 서비스가 독립적인 사용자 프로세스로 실행되므로 안정성이 높다. (한 서버에 오류가 발생해도 전체 시스템에 영향을 주지 않음)
      • 새로운 기능을 추가하거나 수정하기 쉽다.
      • 분산 시스템 환경에 적합핟.
    • 단점
      • 서비스들이 서로 다른 주소 공간에 있으므로 IPC에 시스템 호출 오버헤드가 발생하여 성능이 저하될 수 있다.
      • 구현이 더 복잡하다.
      • Mach (macOS 기반), QNX, Minix
  • 하이브리드 커널 (Hybird Kernel / Modular Kernel)
    • 모놀리식 커널과 마이크로 커널의 장점을 결합한 형태이다. 핵심 서비스는 커널 공간에 포함되지만 모듈화되어 필요에 따라 동적으로 로드/언로드 할 수 있다. 일부 서비스는 사용자 공간에서 실행될 수 있다.
    • 장점
      • 성능과 안정성 사이의 균형을 추구하는 형식
      • 필요한 기능만 커널에 로드하므로 유연성이 높다.
    • 단점
      • 모놀리식이나 마이크로 커널만큼 명확한 구조성이 없다.
    • Windows NT 커널, Linux(최신 버전은 모듈을 동적으로 로드하는 등 하이브리적 특성을 가짐)
  • 엑소커널 (Exo Kernel)
    • 매우 최소한의 기능(자원 할당, 보호)만 커널에 두고, 하드웨어 자원에 대한 낮은 수준의 접근 권한을 사용자 애플리케이션에게 직접적으로 위임한다. 애플리케이션이 자신의 자원 관리 정책을 직접 구현할 수 있도록 한다.
    • 장점
      • 최고의 성능 최적화 가능성이 있다.(애플리케이션이 자신의 필요에 따라 자원을 관리하므로 오히려 최적화가 안될 수도)
      • 매우 유연하다.
    • 단점
      • 애플리케이션 개발이 매우 복잡해진다
      • 범용 운영체제로는 거의 사용되지 않는다.
    • MIT Exokernul

 

커널은 컴퓨터 시스템의 중앙 통제실과 같다. 사용자가 프로그램을 실행, 저장, 웹브라우저 사용등 모든 활동은 커널이 뒤에서 하드웨어와 소통하며 자원을 조정하고 배분하기 때문에 가능하다.

커널의 효율성과 안정성은 전체 시스템의 성능과 신뢰성에 직결된다.