← Blog로 돌아가기

2026년 4월 23일

CS / Theory / OS

[OS] 3. 운영체제의 구조

목차

[1] 계층 구조 개요
[2] 커널이란
[3] 사용자 인터페이스: GUI와 CLI
[4] 시스템콜이란
[5] 드라이버
[6] 사용자 모드와 커널 모드
[7] 커널의 구조: 모놀리식 vs 마이크로커널



[1] 계층 구조 개요


운영체제는 크게 세 계층으로 나뉜다.

[ 사용자 / 애플리케이션 ]
         ↕  시스템콜
      [ 커널 ]
         ↕  드라이버
      [ 하드웨어 ]
  • 애플리케이션은 커널에 직접 접근할 수 없다.
  • 반드시 시스템콜이라는 창구를 통해 커널에 요청해야 한다.
  • 커널은 드라이버를 통해 하드웨어를 제어한다.

이 계층 구조가 있는 이유는 하나다. 안전 때문이다. 모든 프로그램이 하드웨어에 직접 접근할 수 있다면, 하나의 프로그램이 시스템 전체를 망가뜨릴 수 있다.



[2] 커널이란


커널(Kernel)은 운영체제의 핵심이다. 컴퓨터가 켜져 있는 동안 항상 메모리에 올라와 있으며, 하드웨어 자원을 관리하고 애플리케이션의 요청을 처리한다.

커널이 담당하는 주요 역할은 다음과 같다.

  • 프로세스 관리 — 어떤 프로세스가 CPU를 쓸지 결정하고, 생성·종료를 처리한다.
  • 메모리 관리 — 각 프로세스에 메모리 공간을 할당하고, 서로 침범하지 못하게 보호한다.
  • 파일 시스템 관리 — 파일의 저장, 조회, 삭제를 처리한다.
  • I/O 관리 — 키보드, 마우스, 디스크 등 입출력 장치를 제어한다.

커널은 OS 전체가 아니다. OS에는 커널 외에도 사용자 인터페이스, 라이브러리, 유틸리티 등이 포함된다. 하지만 핵심 중의 핵심은 커널이다.



[3] 사용자 인터페이스: GUI와 CLI


사용자는 커널에 직접 접근하지 않는다. 운영체제가 제공하는 인터페이스를 통해 컴퓨터를 조작한다. 인터페이스 방식은 크게 두 가지다.

GUI (Graphic User Interface)

  • 아이콘, 창, 버튼 등 그래픽 요소로 조작하는 방식
  • 직관적이고 배우기 쉽다
  • 예: Windows 탐색기, macOS Finder

CLI (Command Line Interface)

  • 텍스트 명령어를 직접 입력하는 방식
  • 익숙해지면 GUI보다 빠르고 자동화가 쉽다
  • 예: Linux 터미널, Windows PowerShell

개발자라면 CLI를 자주 쓰게 된다. ls, cd, grep 같은 명령어들이 모두 CLI 기반이다.



[4] 시스템콜이란


애플리케이션이 커널의 기능을 사용하려면 시스템콜(System Call) 을 호출해야 한다. 시스템콜은 애플리케이션과 커널 사이의 공식 창구다.

예를 들어, 파일을 저장하는 프로그램을 만든다고 하자. 프로그램이 직접 디스크에 접근하는 게 아니라, write() 라는 시스템콜을 호출하면 커널이 대신 빈 공간을 찾아 안전하게 저장해준다.

[애플리케이션]
    │
    │  write("data.txt", ...) 호출
    ▼
[시스템콜 인터페이스]
    │
    ▼
[커널] → 디스크에 실제로 저장

대표적인 시스템콜

분류예시
파일 관련open(), read(), write(), close()
프로세스 관련fork(), exec(), exit()
메모리 관련mmap(), brk()
네트워크 관련socket(), connect(), send()
평소에 Python이나 Java로 파일을 읽고 쓸 때, 내부적으로는 이 시스템콜들이 호출되고 있다.


[5] 드라이버


커널이 하드웨어를 직접 제어하기는 어렵다. 하드웨어의 종류가 너무 다양하기 때문이다. 이 문제를 해결하는 것이 드라이버(Driver) 다.

드라이버는 특정 하드웨어를 커널이 제어할 수 있도록 중간에서 번역 역할을 한다.

[커널]
   │
   │  드라이버
   ▼
[하드웨어: GPU, 프린터, 사운드카드 등]
  • 키보드, 마우스처럼 표준화된 장치는 OS에 기본 드라이버가 포함되어 있다.
  • 그래픽카드, 특수 장치처럼 제조사마다 다른 장치는 별도 드라이버 설치가 필요하다.

Windows에서 새 하드웨어를 꽂았을 때 드라이버를 설치하라는 메시지가 뜨는 이유가 바로 이것이다.



[6] 사용자 모드와 커널 모드


CPU는 두 가지 실행 모드를 가진다.

모드설명접근 범위
사용자 모드일반 애플리케이션이 실행되는 모드제한된 자원만 접근 가능
커널 모드커널이 실행되는 모드모든 하드웨어 자원에 접근 가능

애플리케이션이 시스템콜을 호출하면, CPU는 사용자 모드에서 커널 모드로 전환된다. 커널이 작업을 마치면 다시 사용자 모드로 돌아온다.

이 전환 과정이 존재하는 이유는 보안이다. 애플리케이션이 커널 모드로 직접 진입한다면 메모리나 하드웨어를 마음대로 조작할 수 있어 시스템이 위험해진다.

[사용자 모드]  →  시스템콜 호출  →  [커널 모드]
                                        │
                                    작업 처리
                                        │
[사용자 모드]  ←  결과 반환      ←  [커널 모드]


[7] 커널의 구조: 모놀리식 vs 마이크로커널


커널 자체도 어떻게 설계하느냐에 따라 구조가 달라진다. 대표적인 두 가지 방식이 있다.

모놀리식 커널 (Monolithic Kernel)

  • 커널의 모든 기능(프로세스, 메모리, 파일 시스템, 드라이버 등)이 하나의 큰 덩어리로 구성된다.
  • 기능들이 같은 공간에 있어 서로 직접 호출할 수 있어 성능이 빠르다.
  • 단점은 하나가 오류를 일으키면 커널 전체가 영향을 받을 수 있다는 점이다.
  • 예: Linux, Unix

마이크로커널 (Microkernel)

  • 커널에는 최소한의 기능(프로세스 관리, 메모리 관리, 통신)만 남기고, 나머지는 사용자 공간에서 실행한다.
  • 커널이 작아져 안정성과 보안이 높아진다.
  • 단점은 기능들이 분리되어 있어 통신 비용이 들어 성능이 상대적으로 느리다.
  • 예: Mach, QNX

현재 대부분의 범용 OS(Linux, Windows)는 성능상 이점 때문에 모놀리식 커널을 기반으로 한다.

댓글

댓글을 불러오는 중...