All'alba vincerò

At dawn, I will win!

CS

컨텍스트 스위칭 (Context Switching)

나디아 Nadia 2025. 4. 24. 16:52

 

컨텍스트 스위칭 (Context Switching)

: 프로세스 실행 중에 다른 프로세스를 실행하기 위해 실행 중인 프로세스의 상태를 저장하고, 다른 프로세스의 상태값으로 교체하는 작업

  • 컨텍스트 스위칭이 일어날 때, PCB의 내용이 변경됨 (PCB에 상태 저장)
    실행 중인 프로세스의 작업 내용을 PCB에 저장하고, 실행될 기존 프로세스의 PCB 내용대로 CPU가 다시 세팅

  • PCB에 저장되는 값들
    • 프로세스 상태
    • 다음 실행할 명령어의 주소 (프로그램 카운터)
    • 레지스터 정보
    • 메모리 관련 정보 등
  • 컨텍스트 스위칭이 발생하는 상황
    • CPU 점유 시간이 다 됐을 때
    • 입출력 요청이 있을 때
    • 다른 종류의 인터럽트가 발생했을 때

 

 

 

프로세스 2개가 컨텍스트 스위칭 하는 과정

https://velog.io/@kimunche/%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8-%EC%8A%A4%EC%9C%84%EC%B9%ADcontext-switching

 

 

  1. 프로세스 A가 실행 중인데 CPU 점유 시간을 초과함
  2. 운영체제가 “A가 너무 오래 씀!” 판단 → 인터럽트 발생
  3. 프로세스 A는 실행을 멈춤
  4. 프로세스 A의 현재 CPU의 레지스터 값 등을 PCB A에 저장 (A가 나중에 이어서 실행되도록)
  5. PCB B를 참조해서 CPU를 프로세스 B 상태로 재세팅 & 실행
    • 프로그램 카운터 덕분에 → 바로 B의 명령어 실행 가능
  6. 프로세스 B 실행, CPU 점유 시간 점유시간 끝 → 다시 인터럽트 발생
  7. 프로세스 B의 현재 상태를 PCB B에 저장
  8. 다시 PCB A에서 프로세스 A의 상태를 복구해서 프로세스 A 실행