운영체제(OS)는 단순히 ‘백그라운드에서 돌아가는 프로그램’이 아니라 하드웨어와 사용자 프로그램 사이를 조율하는 핵심 관리자입니다.
이번 글에서는 시스템 콜(System Call), 커널 모드 전환, 사용자 모드/커널 모드, 그리고 실제 시스템 콜 호출 사례까지 정리합니다.
1. 응용 프로그램과 OS의 상호작용
응용 프로그램은 직접 하드웨어를 건드릴 수 없습니다.
→ 반드시 운영체제(OS)에 시스템 콜(System Call) 형태로 요청해야 합니다.
- 응용 프로그램들은 파일 생성, 삭제, 디스크 저장 등 다양한 작업을 요구합니다.
- 하지만 직접 하드웨어를 제어할 수 없기 때문에, 시스템 콜을 통해 운영체제에 요청합니다.
- 운영체제는 해당 요청에 맞는 커널 내부 코드(예: 하드디스크 저장 코드, 파일 삭제 코드)를 실행합니다.
- 그 결과가 아래의 하드웨어로 전달되어 실제 작업이 수행됩니다.
즉, 시스템 콜은 프로그램 → 운영체제 → 하드웨어로 이어지는 공식 통로입니다.
2. 시스템 콜이 호출되면 내부에서 무슨 일이 일어날까


시스템 콜이 실행되면 CPU는 사용자 모드 → 커널 모드로 전환하며 OS 코드를 실행합니다.
시스템 콜 호출 시 다음 순서로 진행됩니다.
1️⃣ 소프트웨어 인터럽트 발생
- 시스템 콜 트랩 명령이 실행되면 CPU에 인터럽트가 전달됩니다.
2️⃣ CPU가 커널 모드로 전환
- 사용자 모드에서는 제한된 명령만 수행 가능하지만 커널 모드에서는 모든 명령 실행이 가능합니다.
3️⃣ 운영체제 코드 실행
- 파일 삭제, 디스크 저장, 디렉터리 생성 같은 실제 작업 수행
4️⃣다시 사용자 모드로 복귀
- 작업이 끝나면 원래 프로그램의 코드 실행이 재개됩니다.
3. 시스템 콜 처리 과정 메모리 관점
시스템 콜은 마치 인터럽트처럼 커널영역으로 점프하여 실행된 뒤 다시 사용자 영역으로 되돌아옵니다.
1️⃣ 사용자 영역에서 응용 프로그램 실행
- 코드가 CPU에서 일반 사용자 모드로 실행됨.
2️⃣ 응용 프로그램이 시스템 콜 호출
- 파일 생성, 네트워크 보내기 등 OS 기능이 필요할 때 호출.
3️⃣ CPU → 커널 영역으로 전환
- 운영체제 전용 메모리 영역으로 점프
4️⃣ 운영체제 코드 실행
- 커널 내부 코드가 실제 기능 수행.
5️⃣ 시스템 콜 리턴 후 사용자 영역으로 복귀
- 다시 사용자 프로그램의 다음 줄부터 실행 재개.
4. 사용자 모드 VS 커널 모드
CPU는 두 가지 모드로 동작합니다:
- 사용자 모드(User Mode)
- 커널 모드(Kernel Mode)
1️⃣ 🟦 사용자 모드 (User Mode)
- 응용 프로그램이 실행되는 영역
- OS 서비스를 직접 제공받을 수 없음
- 메모리, 하드웨어 접근은 제한됨
- 보호된 명령(예: 디스크 접근)은 실행 불가
2️⃣ 🟥 커널 모드 (Kernel Mode)
- 운영체제 코드가 실행되는 모드
- 하드웨어 접근 가능
- 모든 명령 실행 가능
- 시스템 콜 실행 시 CPU는 자동으로 커널 모드로 전환됨
Dual Mode는 보안 + 안전성 확보를 위한 필수 구조입니다.
5. hello world도 시스템 콜을 600번 넘게 호출한다
아주 간단한 Python 프로그램도 실행 과정에서 수백 번의 시스템 콜을 호출합니다.
- stat, openat, read, fstat 등 수많은 시스템 콜이 호출됨
- 총 600회 이상 호출
- 단순한 "hello world" 출력조차도 내부적으로 파일 로딩, 라이브러리 접근 등 OS 기능을 활용하기 때문
즉, “아무것도 안 하는 앱조차 시스템 콜 덩어리”라는 사실이 드러납니다.
6. ls 명령어도 프로그램이기 때문에 시스템 콜을 쓴다
우리가 자주 쓰는 ls 명령어도 내부적으로는 **프로그램(program)**이며, 실행 과정에서 많은 시스템 콜을 호출합니다.
- openat, close, read, write, stat 등 다양한 시스템 콜 발생
- 총 호출 횟수: 162번
리눅스 명령어도 결국 프로그램이며, OS 서비스를 받아야만 동작한다는 점을 보여줍니다.
정리하면
| 개념 | 핵심 내용 |
| 시스템 콜 | 사용자 프로그램이 운영체제 서비스를 요청하는 유일한 통로 |
| 커널 모드 | 하드웨어 접근 가능, 운영체제가 실행되는 모드 |
| 사용자 모드 | 안전한 실행 환경, 제한된 명령만 가능 |
| 시스템 콜 호출 흐름 | 사용자 프로그램 → 소프트웨어 인터럽트 → 커널 모드 전환 → OS 가능 수행 → 사용자 모드 복 |
운영체제를 “큰 그림”으로 이해하면
프로세스, 파일 시스템, 메모리 관리, 스케줄링 같은 후속 개념도 훨씬 쉽게 연결됩니다.
'컴퓨터 과학' 카테고리의 다른 글
| [운영체제] 프로세스와 스레드 - 커널영역 (0) | 2025.11.25 |
|---|---|
| [운영체제] 프로세스와 스레드 - 사용자 영역 (0) | 2025.11.25 |
| [컴퓨터 구조] 보조기억장치와 입출력장치 - RAID (0) | 2025.11.24 |
| [컴퓨터 구조] 메모리 - 캐시 메모리2 (0) | 2025.11.24 |
| [컴퓨터 구조] 메모리 - 캐시 메모리 (0) | 2025.11.24 |