Context Switch는 CPU가 현재 실행중인 쓰레드에서 다른 쓰레드로 변경하는 과정을 의미한다. 현재 실행중인 쓰레드의 상태정보를 Context라 하고 다른 쓰레드로의 전환을 위해 Context를 변경한다는 의미이다.
Context에는 Program Counter
나 레지스터 값
과 같은 CPU정보를 포함하며 그림으로 나타내면 아래 사진과 같다.
Context Switch를 수행하는데 걸리는 시간은 여러 요인에 영향을 받는다.
Context는 PCB(Process Control Block)라는 자료구조에 저장된다.
Context Switch가 발생하는 상황은 여러 상황이 있는데 보통 Time Slice의 만료
와 인터럽트 발생
으로 인해 발생한다. 인터럽트가 발생하면 원래 진행중이던 작업을 중단하고 인터럽트 처리를 위해 Context Switch를 한다.
또한, 우선순위가 변경되거나 I/O관련 이벤트가 발생했을 때와 같이 특정한 이벤트가 발생했을 때에도 Context Switch가 발생한다.
Time Slice
는 멀티쓰레드의 여러 쓰레드를 동시에 실행할 때에 할당된 시간이다.
프로세스 간의 Context Switch
와 쓰레드 간의 Context Switch
중 어떤 것이 더 오래걸릴까? 즉, 어떤 것이 더 많은 비용을 필요로 할까?
프로세스간의 Context Switch가 더 많은 비용을 필요로 한다. 이유는 Context Switch하는 양과 관련있는데
위와 같은 이유로 쓰레드의 Context Switch
가 더 적은 비용을 요구한다고 할 수 있다.