Skip to content

05. 운영체제 핵심

커널, 모드 분리, I/O 제어, 접근 통제 -- 운영체제가 컴퓨터를 지배하는 원리를 근본부터 이해한다.


학습 목표

  1. 컴퓨터 시스템이 하드웨어와 소프트웨어로 구성되는 계층 구조를 설명할 수 있다.
  2. 커널의 3대 역할(I/O 제어, 자원 관리, 접근 통제)을 구분하고 각각의 의미를 설명할 수 있다.
  3. 유저 모드와 커널 모드의 분리 이유와 동작 방식을 설명할 수 있다.
  4. Physical과 Logical(Virtual)의 차이를 이해하고, "Virtual"이라는 단어가 의미하는 본질을 파악할 수 있다.
  5. 디바이스 파일이 왜 필요한지, 어떤 역할을 하는지 설명할 수 있다.
  6. printf("Hello World")가 모니터에 출력되기까지의 전체 경로를 단계별로 설명할 수 있다.
  7. 안티바이러스 소프트웨어의 실시간 감시 원리를 커널 I/O 필터 관점에서 설명할 수 있다.

1. 전체 구조 -- 컴퓨터 시스템을 한 장으로 보기

컴퓨터는 하드웨어소프트웨어라는 두 축으로 구성된다. 소프트웨어는 다시 **시스템 소프트웨어(운영체제)**와 **응용 프로그램(어플리케이션)**으로 나뉜다. 여기서 핵심 질문이 있다: "운영체제는 왜 필요한가?" 답은 간단하다. 어플리케이션 때문이다. 어플리케이션이 하드웨어를 직접 다루기에는 너무 복잡하고 위험하다. 운영체제는 그 사이에서 번역가이자 관리자 역할을 한다.

비유하자면, 하드웨어는 **땅과 건물(물리적 인프라)**이고, 운영체제는 건물 관리 회사이며, 어플리케이션은 그 건물에 입주한 각종 가게와 사무실이다. 가게 주인(어플리케이션)이 전기 배선을 직접 만질 필요 없이, 관리 회사(운영체제)에 요청하면 알아서 처리해 준다.

이 계층 구조를 반드시 기억해야 한다. 하드웨어 -> 운영체제(커널) -> 응용 프로그램. 아래에서 위로 올라갈수록 사용자와 가까워지고, 아래로 내려갈수록 기계와 가까워진다.


2. 커널(Kernel) -- 운영체제의 핵심 엔진

운영체제라는 소프트웨어의 가장 핵심 부분을 **커널(Kernel)**이라 부른다. 커널이 아닌 부분(GUI 쉘, 시스템 유틸리티 등)은 부가적인 것이고, 운영체제의 본질은 커널이다.

커널을 비유로 이해하기

커널은 국가의 헌법과 같다. 컴퓨터라는 나라에서 근본적인 규칙을 정하는 존재다. 헌법이 국가의 자원 배분, 국민의 권리, 외교(입출력) 등 모든 근본 원칙을 규정하듯, 커널도 컴퓨터의 모든 근본 동작을 규정하고 통제한다.

커널의 3대 역할

커널이 하는 일은 크게 세 가지로 나뉜다.

역할설명비유
I/O 제어정보의 입력(Input)과 출력(Output)을 관리국가의 외교부: 외부와의 소통 담당
자원 관리CPU, 메모리 등 전산 자원을 프로세스에 배분국가의 기획재정부: 예산(자원) 배분 담당
접근 통제누가 어떤 자원에 접근할 수 있는지 권한 통제국가의 법원/경찰: 규칙 위반 감시

이 세 가지가 왜 중요한가? 어플리케이션 개발자는 하드웨어를 직접 만질 필요가 없다. 커널이 다 해주기 때문이다. 개발자는 "파일에 써 줘", "메모리 좀 줘", "이 자원에 접근해도 되나?"만 물어보면 된다.


3. 유저 모드 vs 커널 모드 -- 인간계와 신계의 분리

이것은 운영체제에서 가장 중요한 개념 중 하나다.

두 세계의 분리

컴퓨터 안에는 두 개의 완전히 분리된 세계가 존재한다.

구분유저 모드 (User Mode)커널 모드 (Kernel Mode)
별칭인간계신계 (아스가르드)
실행 주체일반 응용 프로그램운영체제, 디바이스 드라이버, 보안 소프트웨어
하드웨어 접근불가 (직접 접근 차단)가능 (하드웨어 직접 제어)
보호 수준제한적 권한최고 권한
비유일반 시민이 사는 세상신들의 영역 (인간 출입 금지)

왜 분리하는가? 만약 일반 프로그램이 하드웨어를 마음대로 건드릴 수 있다면? 버그가 있는 게임 하나가 메모리를 엉뚱하게 건드려서 운영체제 전체를 먹통으로 만들 수 있다. 이것을 막기 위해 CPU 자체가 하드웨어 수준에서 두 모드를 분리한다.

커널 모드에서 작동하는 것들

  • 운영체제 커널 자체: 당연히 커널 모드에서 실행된다
  • 디바이스 드라이버: 하드웨어를 직접 제어해야 하므로 커널 모드 필수
  • 일부 보안 소프트웨어: 키보드 보안 프로그램, 안티바이러스 실시간 감시 엔진 등

위 다이어그램에서 핵심은 유저 모드에서 커널 모드로 넘어가는 유일한 통로가 "시스템 콜(System Call)"이라는 점이다. 일반 프로그램은 시스템 콜이라는 공식 창구를 통해서만 커널에 요청할 수 있다. 뒷문은 없다.

비유하자면, 일반 시민(유저 모드 프로그램)이 정부(커널)에 민원을 넣으려면 반드시 **민원 접수 창구(시스템 콜)**를 통해야 하는 것과 같다. 직접 장관실(하드웨어)에 쳐들어갈 수 없다.


4. Physical vs Logical (Virtual) -- IT의 근본 구분법

IT 전반에 걸쳐 반복적으로 등장하는 핵심 구분이 있다.

구분Physical (물리적)Logical / Virtual (논리적/가상)
의미실제 하드웨어로 존재하는 것소프트웨어로 구현된 것
만질 수 있는가?가능 (진짜 물건)불가 (코드로 존재)
예시Physical Memory (RAM 칩)Virtual Memory (OS가 관리하는 가상 메모리)
예시Physical Server (실제 서버 컴퓨터)Virtual Machine (소프트웨어로 만든 가상 컴퓨터)
예시Physical Network (실제 케이블)Virtual Network (소프트웨어 정의 네트워크)

핵심 공식: Virtual = Logical = 소프트웨어로 구현된 것

이 공식을 머릿속에 넣어 두면, IT에서 "Virtual"이라는 단어를 만날 때마다 즉시 해석할 수 있다.

  • Virtual Memory: 소프트웨어적으로 구현된 메모리 관리 체계. 실제 RAM보다 더 큰 메모리가 있는 것처럼 프로세스에게 보여 준다.
  • Virtual Machine: 소프트웨어로 만든 가짜 컴퓨터. 하드웨어 1대 위에 여러 대의 가상 컴퓨터를 올릴 수 있다.
  • VPN (Virtual Private Network): 소프트웨어적으로 구현된 사설 네트워크.

비유하자면, Physical은 진짜 종이 책이고, Virtual은 전자책이다. 전자책은 물리적 실체가 없지만 책의 기능(읽기)을 소프트웨어로 똑같이 구현한다.

이 개념은 운영체제뿐 아니라 네트워크, 클라우드, 보안 등 IT의 모든 분야에서 등장한다.


5. 플랫폼(Platform)

플랫폼이란 다른 것들이 작동할 수 있게 인프라가 되어 주는 것을 말한다.

컴퓨터 분야에서 플랫폼은 보통 하드웨어(CPU) + 운영체제를 합쳐서 부른다. 응용 프로그램은 이 플랫폼 위에서 실행된다.

"64비트 플랫폼"의 의미:

  • CPU가 64비트 아키텍처
  • 운영체제도 64비트 버전
  • 이 조합 위에서 64비트 응용 프로그램이 돌아감

비유하자면, 플랫폼은 건물의 기초 공사다. 기초(하드웨어 + 운영체제)가 튼튼하게 깔려 있어야 그 위에 각종 가게(응용 프로그램)가 입점하여 영업할 수 있다. 기초가 나무 구조(32비트)인지 철근 콘크리트 구조(64비트)인지에 따라 올릴 수 있는 건물의 규모가 달라진다.


6. 디바이스 드라이버 (Device Driver)

하드웨어 장치를 움직이기 위한 전용 커널 모드 소프트웨어를 디바이스 드라이버라 한다.

모든 하드웨어 장치에는 각각 전용 드라이버가 있다.

하드웨어 장치전용 드라이버
비디오 카드 (GPU)비디오 카드 드라이버 (NVIDIA, AMD 드라이버 등)
프린터프린터 드라이버
네트워크 카드네트워크 드라이버
사운드 카드오디오 드라이버
USB 장치USB 드라이버

비유하자면, 디바이스 드라이버는 각 기계 전문 기사다. 비디오 카드에는 비디오 카드 전문 기사가, 프린터에는 프린터 전문 기사가 붙어 있다. 커널이 "모니터에 이거 보여 줘"라고 지시하면, 비디오 카드 전문 기사(드라이버)가 비디오 카드를 조작하여 실제로 화면에 표시한다.

드라이버가 없으면? 하드웨어가 있어도 쓸 수 없다. 새 프린터를 샀는데 드라이버를 설치하지 않으면 인쇄가 안 되는 것이 바로 이 이유다.


7. 디바이스 파일 -- 신계와 인간계의 인터페이스

이것은 운영체제를 이해하는 데 매우 중요한 개념이다.

문제 상황

유저 모드의 프로세스가 커널의 기능에 접근하고 싶다. 하지만 유저 모드에서 커널 모드로 직접 넘어갈 수 없다. 그러면 **어떤 매개체(인터페이스)**가 필요하다.

해결: 디바이스 파일

이 매개체가 바로 **디바이스 파일(Device File)**이다. 커널이 제공하는 기능들이 유저 모드에서는 "파일"이라는 형태로 보인다.

비유하자면 이렇다. 기독교 신학에서 인간(유저 모드)이 신(커널 모드)에게 기도하려면 예수님이라는 매개체를 통해야 한다고 가르친다. 마찬가지로, 프로세스(인간)가 커널(신)에 접근하려면 디바이스 파일이라는 매개체를 통해야 한다.

프로세스가 파일에 할 수 있는 3가지

유저 모드에서 프로세스가 파일(디바이스 파일 포함)에 대해 할 수 있는 동작은 딱 세 가지다.

동작의미예시
Read파일로부터 데이터를 읽어 온다키보드 입력 읽기, 파일 내용 읽기
Write파일에 데이터를 써 넣는다모니터에 출력하기, 파일에 저장하기
Execute파일을 실행한다프로그램 실행하기

"유저 모드에서는 모든 것이 파일이다" -- 이것은 특히 Unix/Linux 세계의 근본 철학이다. 키보드도 파일, 모니터도 파일, 프린터도 파일. 전부 파일 형태로 추상화되어 있기 때문에, 프로세스는 Read/Write/Execute라는 통일된 방식으로 모든 장치와 소통할 수 있다.


8. Hello World 출력의 전체 경로

프로그래밍을 배울 때 가장 처음 해보는 것이 printf("Hello World")다. 이 간단한 한 줄이 모니터에 글자를 보여 주기까지, 실제로는 유저 모드에서 커널 모드를 거쳐 하드웨어까지 긴 여정을 거친다.

단계별 설명:

  1. 프로그램에서 printf 호출: 개발자가 작성한 코드에서 printf("Hello World")가 실행된다.
  2. 디바이스 파일에 Write: printf는 내부적으로 표준 출력(stdout)이라는 디바이스 파일에 "Hello World" 문자열을 Write 한다.
  3. 시스템 콜 처리: Write 요청이 시스템 콜을 통해 커널로 전달된다. 유저 모드에서 커널 모드로 전환되는 순간이다.
  4. 그래픽 엔진 처리: 커널의 그래픽 서브시스템이 "Hello World"라는 문자열을 화면에 그릴 수 있는 픽셀 데이터로 변환한다.
  5. 비디오 카드 드라이버: 변환된 데이터를 비디오 카드가 이해할 수 있는 하드웨어 명령으로 번역한다.
  6. 비디오 카드: 명령을 받아 영상 신호를 생성한다.
  7. 케이블 전송: HDMI나 DisplayPort 케이블을 통해 영상 신호가 전송된다.
  8. 모니터 출력: 모니터가 영상 신호를 받아 화면에 "Hello World"를 표시한다.

개발자는 이 모든 과정을 알 필요 없이 printf 한 줄만 쓰면 된다. 이것이 운영체제가 존재하는 이유다. 복잡한 하드웨어 제어를 개발자 대신 처리해 주는 것이다.


9. 접근 통제 (Access Control)

커널의 3대 역할 중 하나인 접근 통제를 더 자세히 살펴보자.

파일 접근 권한

운영체제는 모든 파일(디바이스 파일 포함)에 대해 접근 권한을 부여한다. 프로세스는 운영체제가 허락한 파일에 대해서만 Read, Write, Execute를 할 수 있다.

예를 들어:

  • 일반 사용자의 프로세스는 시스템 설정 파일에 Write 할 수 없다 (읽기만 가능)
  • 관리자(root) 권한의 프로세스만 시스템 파일을 수정할 수 있다
  • 다른 사용자의 비공개 파일에는 Read조차 불가능하다

동시 접근 제어

여러 프로세스가 동시에 같은 자원에 접근하려 할 때도 접근 통제가 작동한다. 운영체제는 한 번에 하나의 프로세스만 특정 자원을 사용할 수 있게 하고, 나머지 프로세스는 대기(Wait) 상태로 만든다.

비유하자면, 도서관에서 참고서가 1권뿐인 상황과 같다. 여러 학생이 같은 참고서를 빌리려 하면, 먼저 빌린 학생이 반납해야 다음 학생이 대출할 수 있다. 운영체제가 바로 이 도서관 사서 역할을 한다.


10. 안티바이러스의 작동 원리

안티바이러스 소프트웨어의 "실시간 감시" 기능이 어떻게 작동하는지, 지금까지 배운 개념으로 정확히 이해할 수 있다.

원리

  1. 안티바이러스는 커널에 I/O 필터(실시간 감시 엔진)를 삽입한다. (커널 모드에서 동작)
  2. 어떤 프로세스가 파일을 열거나 실행하는 등 I/O 요청이 발생하면, 이 필터가 요청을 가로챈다.
  3. 가로챈 파일을 **바이러스 정의 데이터베이스(시그니처 DB)**와 대조하여 검사한다.
  4. 안전하면 통과시키고, 악성 코드로 판정되면 차단한다.

왜 안티바이러스가 커널 모드에서 동작해야 하는가? 유저 모드에서 동작하면 모든 I/O를 가로챌 수가 없다. 커널의 I/O 경로에 직접 필터를 끼워 넣어야 하므로 반드시 커널 모드 권한이 필요하다.

왜 안티바이러스를 설치하면 컴퓨터가 느려지는가? 모든 파일 I/O마다 검사 과정이 추가되기 때문이다. 파일을 열 때마다 바이러스 DB와 대조하는 작업이 끼어들어 원래보다 시간이 더 걸린다.


11. 가상화 (Virtualization) 개념 소개

앞서 배운 Virtual = Logical = 소프트웨어적이라는 공식을 가상화 기술에 적용해 보자.

가상화란?

하드웨어를 소프트웨어로 구현하는 기술이다. 물리적 컴퓨터 1대 위에 소프트웨어로 가짜 컴퓨터를 여러 대 만들어 각각 독립된 운영체제를 실행할 수 있게 한다.

가상화가 왜 중요한가?

  • 하드웨어 1대로 여러 서버를 운영할 수 있어 비용 절감
  • 서버를 소프트웨어적으로 만들기 때문에 빠른 배포와 복제 가능
  • 이것이 클라우드 컴퓨팅의 기반 기술이다 (AWS, Azure, GCP 등이 모두 가상화 위에 구축됨)

비유하자면, 물리 서버는 큰 아파트 건물 1동이고, 가상 머신은 **그 안의 각 세대(호)**다. 건물 1동(물리 서버 1대)을 지어 놓으면, 여러 세대(가상 머신)로 나누어 각각 다른 가족(운영체제와 어플리케이션)이 독립적으로 생활할 수 있다.


핵심 암기 포인트

번호포인트상세
1커널의 3대 역할I/O 제어, 자원 관리, 접근 통제
2유저 모드 vs 커널 모드유저 모드 = 인간계, 커널 모드 = 신계. 완전 분리되어 있으며 시스템 콜로만 통신
3Virtual의 본질Virtual = Logical = 소프트웨어적으로 구현된 것
4디바이스 파일유저 모드 프로세스가 커널 기능에 접근하기 위한 파일 형태의 인터페이스
5파일 3대 연산프로세스가 파일에 하는 3가지: Read, Write, Execute
6OS의 접근 통제운영체제가 파일에 대한 접근 권한을 부여하고 통제함. 동시 접근도 제어
7안티바이러스 원리커널의 I/O 필터 + 바이러스 시그니처 DB = 실시간 감시
8플랫폼하드웨어(CPU) + 운영체제를 합쳐서 부르는 말
9디바이스 드라이버하드웨어 장치를 제어하는 전용 커널 모드 소프트웨어

확인 질문

Q1. 커널의 3대 역할은 무엇인가? 각각의 역할을 한 문장으로 설명하라.

정답 보기
  1. I/O 제어: 정보의 입력과 출력을 관리하는 것 (키보드 입력, 모니터 출력 등)
  2. 자원 관리: CPU 시간, 메모리 등 전산 자원을 프로세스에 배분하는 것
  3. 접근 통제: 누가 어떤 자원에 접근할 수 있는지 권한을 검증하고 통제하는 것

Q2. 유저 모드와 커널 모드의 차이는 무엇이며, 왜 분리되어 있는가?

정답 보기
  • 유저 모드: 일반 응용 프로그램이 실행되는 영역. 하드웨어에 직접 접근할 수 없다.
  • 커널 모드: 운영체제 커널, 디바이스 드라이버 등이 실행되는 영역. 하드웨어를 직접 제어할 수 있다.
  • 분리 이유: 일반 프로그램의 버그나 악의적 코드가 하드웨어를 함부로 건드려 시스템 전체를 망가뜨리는 것을 방지하기 위함. CPU가 하드웨어 수준에서 두 모드를 분리한다.

Q3. 디바이스 파일이란 무엇이고, 왜 필요한가?

정답 보기
  • 디바이스 파일: 커널이 제공하는 기능을 유저 모드에서 "파일" 형태로 접근할 수 있게 해주는 인터페이스.
  • 필요한 이유: 유저 모드의 프로세스는 커널 모드에 직접 접근할 수 없기 때문에, 매개체(인터페이스)가 필요하다. 디바이스 파일이 그 매개체 역할을 하여, 프로세스가 Read/Write/Execute라는 통일된 방식으로 모든 커널 기능에 접근할 수 있게 해 준다.

Q4. printf("Hello World")가 모니터에 출력되기까지의 경로를 단계별로 설명하라.

정답 보기
  1. 프로그램에서 printf("Hello World") 실행
  2. 표준 출력(stdout) 디바이스 파일에 "Hello World"를 Write
  3. 시스템 콜을 통해 커널로 전달 (유저 모드 -> 커널 모드 전환)
  4. 커널의 그래픽 엔진이 문자열을 화면 데이터로 변환
  5. 비디오 카드 드라이버가 하드웨어 명령으로 번역
  6. 비디오 카드가 영상 신호 생성
  7. HDMI/DP 케이블을 통해 모니터로 전송
  8. 모니터에 "Hello World" 표시

Q5. 안티바이러스 소프트웨어의 실시간 감시 원리를 설명하라. 왜 커널 모드에서 동작해야 하는가?

정답 보기
  • 원리: 안티바이러스는 커널에 I/O 필터(실시간 감시 엔진)를 삽입한다. 파일 열기 등 I/O 요청이 발생하면 필터가 가로채서 바이러스 시그니처 DB와 대조한다. 안전하면 통과, 악성 코드면 차단한다.
  • 커널 모드 필수 이유: 유저 모드에서는 모든 I/O를 가로챌 수 없다. 커널의 I/O 경로에 직접 필터를 삽입해야 모든 파일 접근을 감시할 수 있으므로, 반드시 커널 모드 권한이 필요하다.