← Blog로 돌아가기

2026년 4월 23일

CS / Theory / OS

[OS] 운영체제의 구조

운영체제가 무엇인지, 어떤 역할을 하는지는 앞선 글에서 살펴봤다. 그런데 운영체제는 내부적으로 어떻게 생겼을까?

우리가 앱을 실행하면 화면에 무언가가 뜬다. 그 단순한 동작 뒤에는 여러 계층이 맞물려 돌아가고 있다. 이 글에서는 운영체제의 내부 구조 — 커널, 시스템콜, 드라이버, 그리고 모드 전환까지 — 를 차근차근 살펴본다.



목차


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



[1] 계층 구조 개요


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

TEXT
[ 사용자 / 애플리케이션 ] ↕ 시스템콜 [ 커널 ] ↕ 드라이버 [ 하드웨어 ]

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

이 계층 구조가 존재하는 이유는 하나다. 안전 때문이다. 모든 프로그램이 하드웨어에 직접 접근할 수 있다면, 하나의 프로그램이 시스템 전체를 망가뜨릴 수 있다. 계층을 나누는 것만으로도 그 위험을 막을 수 있다.



[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

우리가 평소에 쓰는 컴퓨터는 대부분 GUI 환경이다. CLI는 눈에 잘 띄지 않지만, 서버나 개발 환경에서는 지금도 널리 쓰이고 있다. 개발자라면 CLI를 자주 쓰게 된다. ls, cd, grep 같은 명령어들이 모두 CLI 기반이다.



[4] 시스템콜이란


애플리케이션이 커널의 기능을 사용하려면 시스템콜(System Call) 을 호출해야 한다. 시스템콜은 애플리케이션과 커널 사이의 공식 창구다. 은행 창구처럼, 고객(애플리케이션)이 금고(하드웨어)에 직접 들어가는 게 아니라 창구 직원(커널)에게 요청하는 방식이다.

예를 들어 문서를 저장할 때, 앱이 디스크에 직접 접근하는 게 아니라 커널에 "이 데이터를 저장해줘"라고 요청한다. 커널이 빈 공간을 찾아 안전하게 저장해주는 것이다.

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

대표적인 시스템콜

분류예시
파일 관련open(), read(), write(), close()
프로세스 관련fork(), exec(), exit()
메모리 관련mmap(), brk()
네트워크 관련socket(), connect(), send()

평소에 파일을 저장하거나 인터넷에 연결할 때, 내부적으로는 이 시스템콜들이 호출되고 있다.



[5] 드라이버


커널이 하드웨어를 직접 제어하기는 어렵다. 하드웨어의 종류가 너무 다양하기 때문이다.

이 문제를 해결하는 것이 드라이버(Driver) 다. 드라이버는 특정 하드웨어를 커널이 제어할 수 있도록 중간에서 번역하는 역할을 한다. 외국어를 못하는 커널과 하드웨어 사이에서 통역사처럼 일하는 셈이다.

TEXT
[커널] │ 드라이버 [하드웨어: GPU, 프린터, 사운드카드 등]

키보드, 마우스처럼 표준화된 장치는 OS에 기본 드라이버가 포함되어 있다. 반면 그래픽카드나 특수 장치는 제조사마다 동작 방식이 달라 별도 드라이버 설치가 필요하다. Windows에서 새 하드웨어를 꽂았을 때 드라이버를 설치하라는 메시지가 뜨는 이유가 바로 이것이다.



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


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

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

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

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

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


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


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

모놀리식 커널 (Monolithic Kernel)

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

마이크로커널 (Microkernel)

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

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



운영체제는 겉으로 보이지 않지만, 우리가 컴퓨터를 쓰는 모든 순간 이 구조 위에서 동작하고 있다. 앱을 열 때마다 시스템콜이 호출되고, 키보드를 누를 때마다 드라이버가 신호를 전달하고, 그 모든 과정을 커널이 조율한다.

다음 글에서는 운영체제가 관리하는 대상, 컴퓨터 하드웨어의 구조를 살펴볼 예정이다.

댓글

댓글을 불러오는 중...