컨텍스트 스위칭에 대해서 알아보자.
CPU 사용을 A 라는 프로세스에서 B 라는 다른 프로세스에 넘겨주는 과정을 말한다.
: 현재 진행하고 있는 Task(Process, Thread)의 상태를 저장하고 다음 진행할 Task의 상태 값을 읽어 적용하는 과정
어떤 프로세스에게 CPU 사용을 넘겨줄지에 대해서는 CPU Scheduling에 의해 결정된다.
"멀티 프로그래밍"의 이점을 살리기 위해서다.
- 컴퓨터가 매번 하나의 Task만 처리할 수 있다면?
- 해당 Task가 끝날 때 까지 다음 Task는 기다려야 한다.
- 또한, 반응속도가 매우 느리고 사용하기 불편하다.
- 다양한 사람들이 동시에 사용하는 것처럼 하기 위해서는?
- 멀티테스킹을 통해 빠른 반응속도로 응답할 수 있다.
- 빠른 속도로 Task를 바꿔가며 실행하기 때문에 사람의 눈으론 실시간 처럼 보이게 된다.
- CPU가 Task를 바꿔가며 실행하기 위해 Context Switching이 필요하게 되었다.
프로세스 간의 Context switching 시 PCB 값 전체를 바꿔야 한다.
하지만, Thread는 data, heap, code 영역을 공유하고 있기 때문에 stack 과 PC register의 값이 들어있는 TCB만 바꾸면 되기 때문에 Cost가 낮은 것이다.