컨텍스트 스위칭 (Context Switching)
: 프로세스 실행 중에 다른 프로세스를 실행하기 위해 실행 중인 프로세스의 상태를 저장하고, 다른 프로세스의 상태값으로 교체하는 작업
- 컨텍스트 스위칭이 일어날 때, PCB의 내용이 변경됨 (PCB에 상태 저장)
→ 실행 중인 프로세스의 작업 내용을 PCB에 저장하고, 실행될 기존 프로세스의 PCB 내용대로 CPU가 다시 세팅됨 - PCB에 저장되는 값들
- 프로세스 상태
- 다음 실행할 명령어의 주소 (프로그램 카운터)
- 레지스터 정보
- 메모리 관련 정보 등
- 컨텍스트 스위칭이 발생하는 상황
- CPU 점유 시간이 다 됐을 때
- 입출력 요청이 있을 때
- 다른 종류의 인터럽트가 발생했을 때
프로세스 2개가 컨텍스트 스위칭 하는 과정
- 프로세스 A가 실행 중인데 CPU 점유 시간을 초과함
- 운영체제가 “A가 너무 오래 씀!” 판단 → 인터럽트 발생
- 프로세스 A는 실행을 멈춤
- 프로세스 A의 현재 CPU의 레지스터 값 등을 PCB A에 저장 (A가 나중에 이어서 실행되도록)
- PCB B를 참조해서 CPU를 프로세스 B 상태로 재세팅 & 실행
- 프로그램 카운터 덕분에 → 바로 B의 명령어 실행 가능
- 프로세스 B 실행, CPU 점유 시간 점유시간 끝 → 다시 인터럽트 발생
- 프로세스 B의 현재 상태를 PCB B에 저장
- 다시 PCB A에서 프로세스 A의 상태를 복구해서 프로세스 A 실행