운영체제는 여러 프로세스를 동시에 실행하는 것처럼 보이게 만들기 위해 CPU 시간을 분배합니다. 이때 핵심 역할을 하는 것이 **타이머 인터럽트(timer interrupt)**와 **문맥 교환(context switching)**입니다. 이번 글에서는 이 두 메커니즘이 어떻게 동작하는지 단계별로 정리했습니다.
1. CPU는 프로세스에게 일정 시간씩 나누어 준다

운영체제는 여러 프로세스가 동시에 실행되고 있는 것처럼 보이지만, 실제로는 CPU가 매우 짧은 시간 단위로 각 프로세스에게 번갈아가며 실행 시간을 제공하고 있습니다.
1️⃣ 타이머 인터럽트(timer interrupt)
- CPU 시간을 너무 오래 독점하지 못하도록 주기적으로 발생
- “시간이 끝났다!”라는 신호를 CPU에 전달
- 이 신호가 오면 운영체제는 현재 프로세스를 중단시키고 다음 프로세스를 실행시킬지를 결정함
예시 흐름:
- 프로세스 A 실행
- ⏱ 일정 시간이 지나면 타이머 인터럽트 발생
- → CPU는 프로세스 A 대신 프로세스 B를 실행
2. 타이머 인터럽트가 오면 CPU는 차례를 양보한다

1️⃣ 상황
- 프로세스 A가 CPU를 할당받아 실행 중
- 타이머 인터럽트 발생
- CPU를 프로세스 B에게 넘겨줘야 하는 상황
2️⃣ 이때 필요한 과정: 중간 정보 저장(백업)
운영체제는 프로세스 A를 나중에 이어서 실행해야 하므로 다음 정보를 저장합니다.
백업되는 정보(문맥, context):
- 프로그램 카운터(어디까지 실행했는지)
- 레지스터 값
- 메모리 관련 정보
- 입출력 장치 상태
이 모든 정보는 PCB(Process Control Block) 에 저장됩니다.
이후:
- 프로세스 B의 PCB에서 문맥(context)을 읽어와 CPU에 복구
- CPU가 프로세스 B 실행 시작
3. 문맥 교환(Context Switch)란?
문맥 교환은 다음 두 단계로 이루어집니다.
1️⃣ 기존 프로세스의 문맥을 PCB에 저장(백업)
CPU에 있던 프로세스 A의 레지스터, 프로그램 카운터 등을 PCB에 기록.
2️⃣ 새 프로세스의 문맥을 PCB로부터 복원
프로세스 B의 PCB에서 레지스터, 프로그램 카운터 정보를 가져와 CPU에 로드.
시각적 흐름
왼쪽(CPU) : 프로세스 A 실행
↓
타이머 인터럽트 발생 → 문맥 교환
↓
오른쪽(CPU) : 프로세스 B 실행 시작
운영체제는 이렇게 매우 빠르게 프로세스를 전환하여 멀티태스킹을 구현합니다.
4. 문맥 교환 전체 흐름 정리

아래는 프로세스 A ↔ B 사이에서 문맥 교환이 반복되는 전체 과정입니다.
🔹 단계별 상세 흐름
- 프로세스 A 실행 중
- ⏱ 타이머 인터럽트 발생
- → 프로세스 A의 문맥을 PCB에 저장
- → 프로세스 B의 문맥을 PCB에서 꺼내 CPU에 복구
- 프로세스 B 실행 시작
- 다시 타이머 인터럽트 발생
- → 프로세스 B의 문맥 저장
- → 프로세스 A의 문맥 복구
- 프로세스 A 재실행
이 과정이 수천, 수만 번 반복되며 CPU는 여러 프로그램을 거의 동시에 실행하는 것처럼 보이게 됩니다.
정리하면
| 개념 | 설명 |
| 타이머 인터럽트 | 프로세스가 CPU를 독점하지 못하도록 일정 시간마다 발생 |
| 문맨(Context) | 프로세스를 다시 실행하기 위해 필요한 모든 실행 정보 |
| PCB | 문맥을 저장하는 프로세스의 신분증 같은 구조 |
| 문맥 교환 | 기존 프로세스 정보 백업 → 새 프로세스 정보 복구 |
타이머 인터럽트 + 문맥 교환은 현대 멀티태스킹 운영체제의 핵심 메커니즘입니다.
'컴퓨터 과학' 카테고리의 다른 글
| [운영체제] 프로세스와 스레드 - 멀티 프로세스와 멀티 스레드 (0) | 2025.11.27 |
|---|---|
| [운영체제] 프로세스와 스레드 - 프로세스의 상태 (0) | 2025.11.25 |
| [운영체제] 프로세스와 스레드 - 커널영역 (0) | 2025.11.25 |
| [운영체제] 프로세스와 스레드 - 사용자 영역 (0) | 2025.11.25 |
| [운영체제] 시스템 콜 (0) | 2025.11.25 |