Skip to Content
공부운영체제프로세스Context Switching

Context Switching

Context Switching이란

Context Switching은 CPU가 현재 실행 중인 프로세스(또는 스레드)를 중단하고 다른 프로세스로 전환하는 과정이다. 운영체제는 이 메커니즘을 통해 여러 프로세스가 동시에 실행되는 것처럼 보이게 하는 멀티태스킹을 구현한다.

Context Switching이 발생하면 현재 프로세스의 실행 상태를 저장하고, 다음에 실행할 프로세스의 상태를 복원하여 중단된 지점부터 계속 실행할 수 있게 한다.

Context Switching이 발생하는 시점

운영체제는 다음과 같은 상황에서 Context Switching을 수행한다:

1. 시간 할당량 초과 (Time Slice Expiration)

프로세스에게 할당된 CPU 시간이 끝나면 스케줄러가 다른 프로세스에게 CPU를 할당한다. 이는 선점형 스케줄링에서 발생한다.

2. I/O 요청 (I/O Request)

프로세스가 파일 읽기, 네트워크 통신 등 I/O 작업을 요청하면, CPU를 양보하고 Waiting 상태로 전환된다. 운영체제는 CPU를 다른 프로세스에게 할당한다.

3. 인터럽트 (Interrupt)

하드웨어 인터럽트(타이머, I/O 완료 등)나 소프트웨어 인터럽트(시스템 콜)가 발생하면 현재 프로세스를 중단하고 인터럽트 핸들러를 실행한다.

4. 우선순위 높은 프로세스 도착

더 높은 우선순위를 가진 프로세스가 Ready 상태가 되면, 현재 실행 중인 프로세스를 선점하고 CPU를 할당받을 수 있다.

5. 프로세스 생성 및 종료

새로운 프로세스가 생성되거나 현재 프로세스가 종료될 때도 Context Switching이 발생할 수 있다.

Context Switching 과정

Context Switching 과정

단계별 상세 설명

1단계: 현재 프로세스 중단

  • 인터럽트, 시스템 콜, 또는 시간 할당량 초과로 프로세스 A가 중단된다

2단계: Context 저장

  • 프로세스 A의 CPU 레지스터 값, 프로그램 카운터, 스택 포인터 등 현재 상태를 PCB에 저장한다
  • 프로세스 A의 상태를 Running에서 Ready 또는 Waiting으로 변경한다

3단계: 다음 프로세스 선택

  • 스케줄러는 스케줄링 알고리즘에 따라 다음에 CPU를 할당할 프로세스를 결정한다.
  • 이 과정에서 디스패처(Dispatcher)가 실행되어 선택된 프로세스에 실제로 CPU 제어권을 넘겨준다.

4단계: Context 복원

  • 프로세스 B의 PCB에서 저장된 상태 정보를 읽어온다
  • 프로세스 B의 CPU 레지스터 값, 프로그램 카운터, 스택 포인터 등을 복원한다
  • 프로세스 B의 상태를 Ready에서 Running으로 변경한다

5단계: 프로세스 재개

  • 프로세스 B가 이전에 중단되었던 지점부터 실행을 계속한다

Context Switching 오버헤드

Context Switching은 오버헤드를 발생시킨다. 이 시간 동안 CPU는 실제 작업을 수행하지 못하고 프로세스 전환 작업만 수행한다.

오버헤드의 원인

  1. Context 저장 및 복원 시간: 수십~수백 개의 레지스터 값을 메모리에 저장하고 읽어오는 시간이 소요된다
  2. 캐시 지역성 저하: 프로세스 전환 시 CPU 캐시가 무효화될 수 있어 캐시 미스가 증가, 메모리 접근 시간이 늘어난다
  3. 스케줄링 오버헤드: 다음 프로세스를 선택하는 스케줄링 알고리즘 실행 시간이 추가된다

Context Switching 빈도와 성능

Context Switching이 너무 자주 발생하면:

  • CPU가 실제 작업보다 프로세스 전환에 더 많은 시간을 소비한다
  • 컨텍스트 스위칭 오버헤드로 인해 시스템 전체 성능이 저하된다

Context Switching이 너무 드물게 발생하면:

  • 응답 시간이 길어져 사용자 경험이 나빠진다
  • 멀티태스킹 효과가 감소한다

운영체제는 이 둘의 균형을 맞춰야 한다.

프로세스 vs 스레드의 Context Switching

프로세스 Context Switching

특징:

  • 메모리 공간이 완전히 분리되어 있어 메모리 관리 정보(페이지 테이블)도 전환해야 한다
  • PCB에 저장해야 할 정보가 많다

스레드 Context Switching

특징:

  • 같은 프로세스 내 스레드 간 전환은 메모리 공간을 공유하므로 페이지 테이블 전환이 불필요하다
  • 스택과 레지스터만 전환하면 되므로 저장할 정보가 적다

비교

구분프로세스 Context Switching스레드 Context Switching
메모리 전환필요 (페이지 테이블 전환)불필요 (공유 메모리)
오버헤드작음
속도느림빠름

이것이 멀티스레드멀티프로세스보다 Context Switching 측면에서 효율적인 이유다.

Last updated on