---
title: "사용자 모드와 커널 모드: CPU가 운영체제의 경계를 지키는 법"
author: "Lee"
published_at: "2026-10-07T06:35:00.585Z"
updated_at: "2026-09-30T09:07:53.553Z"
tags: ["컴퓨터공학","운영체제"]
canonical_url: "https://ariser.io/@writer_a1cd615ab19e/%EC%82%AC%EC%9A%A9%EC%9E%90-%EB%AA%A8%EB%93%9C%EC%99%80-%EC%BB%A4%EB%84%90-%EB%AA%A8%EB%93%9C-cpu%EA%B0%80-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EC%9D%98-%EA%B2%BD%EA%B3%84%EB%A5%BC-%EC%A7%80%ED%82%A4%EB%8A%94-%EB%B2%95"
ai_assisted: false
---

# 사용자 모드와 커널 모드: CPU가 운영체제의 경계를 지키는 법

[원문](https://ariser.io/@writer_a1cd615ab19e/%EC%82%AC%EC%9A%A9%EC%9E%90-%EB%AA%A8%EB%93%9C%EC%99%80-%EC%BB%A4%EB%84%90-%EB%AA%A8%EB%93%9C-cpu%EA%B0%80-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EC%9D%98-%EA%B2%BD%EA%B3%84%EB%A5%BC-%EC%A7%80%ED%82%A4%EB%8A%94-%EB%B2%95)

프로그램이 잘못된 명령 하나로 다른 프로그램의 메모리나 디스크 설정을 마음대로 바꿀 수 있다면 여러 응용 프로그램을 안전하게 함께 실행하기 어렵다. CPU의 특권 모드는 이런 문제를 막는 하드웨어 장치다. 사용자 모드에서는 제한된 권한으로 응용 코드를 실행하고, 커널 모드에서는 운영체제가 자원 관리에 필요한 특권 작업을 수행한다.

![같은 CPU가 사용자 모드에서 시스템 호출 입구를 거쳐 커널 모드로 이동한 뒤 같은 응용 프로그램으로 돌아오는 그림](/api/v1/media/997237fc-3ba2-4f4a-864c-4a5fca11f957)

*모드 전환은 특권 수준의 변경이며 실행 작업의 변경과 구분된다.*

## 권한은 실행 상태에 붙는다

사용자 모드와 커널 모드는 별도의 CPU를 뜻하지 않는다. 같은 CPU의 현재 특권 수준이 달라지는 것이다. 어떤 명령을 실행할 수 있는지, 어떤 메모리 영역에 접근할 수 있는지가 이 수준과 보호 설정에 따라 달라진다. 실제 아키텍처에는 둘보다 많은 수준이 있을 수 있으며, 운영체제가 그중 일부를 이용해 사용자와 커널의 경계를 구성한다.

장치 설정, 주소 변환 설정, 인터럽트 제어처럼 시스템 전체에 영향을 주는 동작은 특권이 필요할 수 있다. 사용자 프로그램이 이를 직접 시도하면 예외가 발생한다. [OSTEP의 제한된 직접 실행 장](https://pages.cs.wisc.edu/~remzi/OSTEP/cpu-mechanisms.pdf)은 평소 프로그램을 CPU에서 직접 실행하면서도 위험한 작업은 통제하는 원리를 설명한다.

## 커널로 들어가는 입구는 통제된다

파일을 읽는 프로그램은 정해진 시스템 호출 경로로 서비스를 요청한다. CPU는 규정된 진입점으로 이동하며 필요한 실행 상태를 보존한다. 커널은 요청 번호, 인수, 권한을 확인하고 서비스를 수행한다. 끝나면 적절한 복귀 절차로 사용자 모드 실행을 재개한다. 사용자 코드가 임의의 커널 내부 위치로 뛰어들어 권한을 얻는 방식으로 설계되지 않는다.

예를 들어 편집기가 문서를 저장하려고 쓰기 요청을 보낸다고 하자. 커널 모드에서 작업을 처리한다고 해서 편집기에 없는 파일 권한이 생기지는 않는다. 실행 특권은 커널이 검사를 수행할 능력이고, 파일 접근 권한은 요청자를 허용할지 판단하는 규칙이다. 이 두 종류의 권한을 섞으면 관리자 계정과 커널 모드를 같은 개념으로 오해하기 쉽다.

## 모드가 바뀌어도 작업은 같을 수 있다

모드 전환은 CPU 특권 수준의 변경이고 문맥 교환은 실행하는 작업의 변경이다. 시스템 호출에 들어갔다가 곧바로 같은 스레드로 돌아오면 모드는 바뀌어도 다른 작업으로 전환하지 않을 수 있다. 반대로 커널이 입출력 대기를 처리하면서 다른 스레드를 실행하면 모드 전환과 문맥 교환이 한 경로에서 함께 나타날 수 있다.

인터럽트나 예외도 커널의 처리 코드를 실행하는 계기가 된다. 운영체제는 돌아갈 위치와 상태를 정확히 보존해야 한다. 잘못된 복귀 상태나 권한 설정은 전체 보호 구조를 해칠 수 있다. 그래서 특권 진입·복귀 경로는 일반적인 함수 호출보다 엄격한 규약을 따르며, CPU와 커널이 함께 책임진다.

커널 모드 코드는 높은 권한을 가지므로 작은 결함의 영향도 클 수 있다. 그렇다고 모든 운영체제 서비스가 반드시 커널 안에 있어야 하는 것은 아니다. 일부 서비스를 사용자 공간에 두면 보호 경계를 이용해 장애를 격리할 수 있고, 그 대신 통신과 전환 비용이 추가될 수 있다. 설계는 기능 배치와 보호 범위를 함께 선택한다.

이 개념을 이해하면 시스템 호출 비용, 드라이버 오류, 메모리 접근 위반을 서로 연결해 설명할 수 있다. 프로그램이 권한을 가진 것처럼 보이는 상황에서도 현재 CPU 모드, 요청자의 자원 권한, 실제 실행 작업을 따로 보면 정확하다. 운영체제의 경계는 소프트웨어의 약속에만 의존하지 않고 하드웨어 실행 규칙으로 유지된다.

### 참고 자료

- [OSTEP — Mechanism: Limited Direct Execution](https://pages.cs.wisc.edu/~remzi/OSTEP/cpu-mechanisms.pdf)
