사용자 모드 vs 커널 모드¶
1. 운영체제란?¶
하드웨어(CPU, 메모리, 디스크)를 관리하고, 앱들이 하드웨어를 쓸 수 있게 중간에서 다리 역할을 하는 소프트웨어.
앱 (카카오톡, 크롬, 게임)
↓
운영체제 (Windows, macOS, Linux)
↓
하드웨어 (CPU, 메모리, 디스크)
앱이 하드웨어를 직접 건드리면 다른 앱의 메모리를 침범하거나 시스템 전체가 망가질 수 있다. 그래서 운영체제가 중간에서 하드웨어를 통제한다.
2. 커널이란?¶
운영체제의 핵심 부분. 하드웨어를 직접 제어하는 코드 덩어리.
운영체제 전체 = 커널 + 그 외 도구들
커널 = 운영체제의 심장
커널이 담당하는 일: - CPU 관리 (어떤 앱이 CPU를 쓸지 결정) - 메모리 관리 (앱마다 메모리 영역 나눠줌) - 디스크 관리 (파일 읽기/쓰기) - 네트워크 관리
3. 사용자 모드 vs 커널 모드¶
CPU가 동작하는 두 가지 권한 수준. 하드웨어를 안전하게 보호하기 위해 나눠놓은 것.
| 구분 | 사용자 모드 | 커널 모드 |
|---|---|---|
| 권한 | 제한된 권한 | 모든 권한 |
| 하드웨어 접근 | 직접 불가 | 직접 가능 |
| 동작 주체 | 일반 앱 | 운영체제(커널) |
| 오류 발생 시 | 해당 앱만 종료 | 시스템 전체 영향 |
왜 나눠놨나?
앱이 하드웨어에 직접 접근할 수 있으면: - 악성 앱이 다른 앱의 메모리를 침범할 수 있음 - 한 앱이 CPU를 독점해서 시스템 전체가 멈출 수 있음 - 시스템 전체가 한 번에 망가질 수 있음
앱은 무조건 사용자 모드에서만 동작한다. 앱 자체는 절대로 커널 모드로 직접 전환할 수 없다.
4. 시스템 콜 (System Call)¶

앱이 커널에게 하드웨어 접근을 요청하는 창구.
앱이 파일 읽기, 네트워크 요청, 화면 출력 등 하드웨어가 필요한 작업을 할 때 직접 할 수 없으므로 커널에 요청한다. 이 요청 방식이 시스템 콜이다.
[파일 읽기 과정]
앱 (사용자 모드)
→ 시스템 콜로 커널에 "파일 읽어줘" 요청
→ 커널 모드로 전환
→ 커널이 파일 읽어서 결과 반환
→ 다시 사용자 모드로 복귀
→ 앱이 결과 받아서 처리
모드 전환이 일어날 때마다 비용(시간)이 발생한다. 이것이 나중에 성능 최적화와 연결된다.
5. 면접 빈출 질문 & 답변 포인트¶
Q. 사용자 모드와 커널 모드를 왜 나눠놨나요?
앱이 하드웨어에 직접 접근하면 악성 앱이 다른 앱의 메모리를 침범하거나, 한 앱이 CPU를 독점해 시스템 전체가 멈출 수 있다. 이를 방지하기 위해 하드웨어 접근 권한을 커널에만 부여하고, 앱은 사용자 모드에서만 동작하도록 제한한다.
Q. 시스템 콜이란?
앱(사용자 모드)이 하드웨어 접근이 필요할 때 커널에 요청하는 인터페이스. 시스템 콜이 호출되면 사용자 모드에서 커널 모드로 전환되고, 처리 완료 후 다시 사용자 모드로 복귀한다.
Q. 사용자 모드에서 오류가 나면 어떻게 되나요?
해당 앱만 종료되고 시스템 전체에는 영향이 없다. 반면 커널 모드에서 오류가 나면 시스템 전체가 영향을 받는다. (윈도우의 블루스크린이 커널 오류의 대표적인 예)
6. 실무 맥락¶
- 백엔드 서버에서 파일 읽기, DB 접근, 네트워크 통신 등 모든 I/O 작업은 내부적으로 시스템 콜을 통해 커널에 요청한다.
- 시스템 콜은 모드 전환 비용이 발생하기 때문에, I/O 작업이 많은 서버에서는 이 비용이 성능에 영향을 준다.
- 6일차에 시스템 콜을 더 깊이 배운다.
7. 심화 추론 문제¶
Q. 크롬이 강제 종료됐을 때 다른 앱들은 왜 정상 동작하나?
앱은 사용자 모드에서 동작하며, 운영체제가 앱마다 독립된 메모리 영역을 할당한다. 크롬의 오류는 크롬의 사용자 모드 영역에서만 발생하므로 다른 앱에 영향을 주지 않는다. (메모리 구조는 추후 학습)
Q. 백엔드 서버가 DB에서 데이터를 읽어올 때 어떤 일이 일어나나?
백엔드 서버(사용자 모드) → DB에 요청 → DB(사용자 모드)가 시스템 콜로 커널에 파일 읽기 요청 → 커널(커널 모드)이 디스크에서 데이터 읽어옴 → DB → 백엔드 서버로 전달
Q. 윈도우 블루스크린이 뜨는 이유는?
커널 모드에서 오류가 발생한 것. 커널 오류는 시스템 전체에 영향을 주기 때문에 앱 하나만 종료되는 사용자 모드 오류와 달리 시스템 전체가 멈춘다.