OS

운영체제(커널)이란

readyoun 2025. 3. 10. 01:09

컴퓨터를 사용하면서 우리가 당연하게 여기는 운영체제(Operating System, OS)는 사실 컴퓨터의 두뇌라고 할 수 있다. 운영체제와 커널이 무엇이며, 어떤 역할을 하는지 자세히 알아보자.

운영체제란 무엇인가?

운영체제는 컴퓨터 시스템의 핵심 소프트웨어다. 우리가 컴퓨터를 켜고 끌 때까지 끊임없이 작동하면서, 하드웨어 자원을 관리하고 사용자가 컴퓨터와 상호작용할 수 있도록 돕는 중요한 매개체 역할을 한다.

운영체제의 주요 목적은 크게 두 가지로 나눌 수 있다.

  1. 사용자에게 편리하고 효율적인 컴퓨팅 환경 제공
  2. 컴퓨터 하드웨어의 효율적인 관리 및 사용

커널: 운영체제의 핵심


(출처: GeekforGeeks)

운영체제를 이야기할 때 '커널(Kernel)'이라는 용어를 자주 접하게 된다. 커널은 좁은 의미의 운영체제로, 하드웨어를 직접적으로 제어하고 관리하는 핵심 프로그램이다. 전문가들 사이에서는 운영체제와 커널을 동일한 의미로 사용하는 경우가 많다.

커널의 핵심 역할: 자원 관리

커널의 가장 중요한 역할은 '자원 관리(Resource Management)'이다. 여기서 말하는 자원이란:

  • Hardware Units: 하드웨어 장치들(CPU, 하드디스크, 키보드, 마우스, 메인 메모리 등)
  • Internal Data Structures: 커널 내부에서 사용되는 각종 자료구조들

운영체제의 동작 모드

운영체제는 두 가지 모드로 동작한다.

  1. 커널 모드(Kernel Mode): 하드웨어를 직접 제어하고 시스템의 핵심 기능을 수행
  2. 사용자 모드(User Mode): 일반 사용자 프로그램들이 실행되는 영역

운영체제의 4대 핵심 기능

운영체제는 다음 네 가지 주요 모듈로 구성되어 있다.

  1. 프로세스 관리: 프로그램 실행과 자원 할당 관리
  2. 메모리 관리: 주기억장치 RAM(Random Access Memory)의 효율적 할당과 관리
  3. 파일 관리: 데이터의 저장과 접근 관리
  4. 입출력 관리: 다양한 입출력 장치들의 제어

이러한 모듈식 구조는 운영체제의 유지보수와 이식성(Portability)을 높여준다.

커널의 유형과 특징

커널은 그 구조와 특성에 따라 다음과 같이 분류된다.

  1. 모놀리식 커널(Monolithic Kernel)

    • 가장 전통적인 커널 구조
    • 모든 시스템 서비스가 하나의 커널 공간에서 동작
    • 성능이 우수하지만 유지보수가 어려움
    • 예: Linux, Unix
  2. 마이크로 커널(Micro Kernel)

    • 최소한의 기능만 커널에 포함
    • 대부분의 서비스는 사용자 영역에서 실행
    • 안정성과 유연성이 높지만 상대적으로 성능이 낮음
    • 예: QNX, Minix
  3. 하이브리드 커널(Hybrid Kernel)

    • 모놀리식과 마이크로 커널의 장점을 결합
    • 성능과 모듈성의 균형을 추구
    • 예: Windows NT, macOS
  4. 엑소 커널(Exo Kernel)

    • 하드웨어 보호와 자원 관리만 담당
    • 매우 유연하고 사용자 지정이 용이
    • 주로 연구용 목적
  5. 나노 커널(Nano Kernel)

    • 가장 작은 크기의 커널
    • 극도로 제한된 기능만 제공
    • 임베디드 시스템에서 주로 사용

이러한 다양한 커널 구조는 각각의 장단점을 가지고 있으며, 사용 목적과 환경에 따라 적절한 선택이 필요하다.

펌웨어(Firmware)


(출처 - TechTarget )

운영체제를 이해할 때 알아야 할 또 하나의 중요한 개념이 펌웨어이다. 펌웨어는 소프트웨어를 하드웨어화한 것으로, 아래와 같은 역할을 담당한다.

  • ROM에 저장되는 프로그램
  • 어셈블리어로 작성
  • 부트스트랩 로더(Bootstrap Loader) 역할 수행
  • 운영체제 커널을 메모리에 로드하는 역할

하드웨어와 소프트웨어를 이어주는 중요한 다리 역할을 한다.

소프트웨어와 하드웨어의 통신 과정

운영체제가 하드웨어와 어떻게 통신하는지 이해하는 것은 매우 중요하다. 이 과정은 다음과 같이 이루어진다.

  1. 코드 변환 과정

    • 프로그래머가 작성한 고수준 언어 코드는 먼저 컴파일 과정을 거침
    • 컴파일러가 이를 CPU가 이해할 수 있는 기계어로 변환
    • 변환된 기계어는 특정 CPU 아키텍처(예: x86, ARM)에 맞게 최적화됨
  2. 메모리 로딩 과정

    • 컴파일된 프로그램은 디스크에서 RAM으로 로드됨
    • RAM의 각 셀은 전기적 신호를 통해 1과 0을 저장
    • 이 시점에서 프로그램은 '프로세스'가 됨
  3. CPU 실행 사이클

    • CPU는 메모리로부터 명령어를 가져옴(Fetch)
    • 가져온 명령어를 해석하고 실행(Execute)
    • 이 과정을 시스템 클럭에 맞춰 반복
    • 버스(Bus)를 통해 CPU와 메모리 간 데이터 전송

이러한 소프트웨어-하드웨어 간의 정교한 상호작용을 통해 컴퓨터는 우리가 작성한 프로그램의 지시사항을 실제로 수행할 수 있게 된다.


참고 자료