현재 진행하고 있는 Task(Process, Thread)의 상태를 저장하고 다음 진행할 Task의 상태 값을 읽어 적용하는 과정
보통 인터럽트가 발생하거나, 실행 중인 CPU 사용 허가 시간을 모두 소모하거나, 입출력을 위해 대기해야 하는 경우에 Context Switching이 발생한다.
프로세스가
Ready → Running
,Running → Ready
,Running → Waiting
처럼 상태 변경 시 발생!
💡 Context Switching이 왜 필요할까?
컴퓨터가 매번 하나의 Task만 처리할 수 있다면 해당 Task가 끝날 때까지 다음 Task는 무조건 기다려야하고 반응 속도가 느려진다. 그래서CPU가 Task를 바꿔 가며 실행하기 위해 Context Switching이 필요하게 되었다. Context Switching를 사용하면 멀티 프로세싱, 멀티 스레딩을 통해 빠른 속도로 응답할 수 있다.
Context
프로그래밍에서 Context는 (동작, 작업들의 집합)을 (정의, 관리, 실행)하도록 하는 (최소한의 상태, 재료, 속성)을 포함하는 (객체, 구조체, 정보)이다.
Process의 경우 현재 프로세스가 중단 되었을 때, 중단된 시점부터 다시 프로세스를 실행하기 위한 정보를 Context라고 부른다. 이러한 Process의 Context 정보는 PCB(Proccess Control Block)이라는 구조체에 저장된다.
Context Switching 과정
Process Context Switching vs Thread Context Switching