컴퓨터 과학

[운영체제] 프로세스와 스레드 - 문맥교환

Data Jun 2025. 11. 25. 22:40

운영체제는 여러 프로세스를 동시에 실행하는 것처럼 보이게 만들기 위해 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 사이에서 문맥 교환이 반복되는 전체 과정입니다.

🔹 단계별 상세 흐름

  1. 프로세스 A 실행 중
  2. 타이머 인터럽트 발생
  3. → 프로세스 A의 문맥을 PCB에 저장
  4. → 프로세스 B의 문맥을 PCB에서 꺼내 CPU에 복구
  5. 프로세스 B 실행 시작
  6. 다시 타이머 인터럽트 발생
  7. → 프로세스 B의 문맥 저장
  8. → 프로세스 A의 문맥 복구
  9. 프로세스 A 재실행

이 과정이 수천, 수만 번 반복되며 CPU는 여러 프로그램을 거의 동시에 실행하는 것처럼 보이게 됩니다.

 

정리하면

개념 설명
타이머 인터럽트 프로세스가 CPU를 독점하지 못하도록 일정 시간마다 발생
문맨(Context) 프로세스를 다시 실행하기 위해 필요한 모든 실행 정보
PCB 문맥을 저장하는 프로세스의 신분증 같은 구조
문맥 교환 기존 프로세스 정보 백업 → 새 프로세스 정보 복구

타이머 인터럽트 + 문맥 교환은 현대 멀티태스킹 운영체제의 핵심 메커니즘입니다.