← 질문 목록
#234깊이 0
컨텍스트 스위칭은 왜 비용이 발생하는가?
현재 실행 중인 프로세스의 상태를 저장하고 다음 프로세스의 상태를 복원하는 과정에서 CPU 시간이 소모되기 때문이다.
실행 프로세스→PCB 저장
CPU 레지스터 값을 기록한다
PCB 로드→다음 프로세스
저장된 값을 레지스터에 복구한다
이 동안 CPU는 실제 연산을 하지 않고 상태만 옮긴다. 페이지 테이블을 가리키는 레지스터를 바꾸면 TLB도 손봐야 한다. 다만 CPU가 주소 공간에 꼬리표를 달 수 있으면 통째로 비우지는 않는다.
CPU 캐시는 전환했다고 지워지지 않는다. 다음 작업이 자기 데이터를 올리면서 앞 작업의 것을 밀어낼 뿐이다. 그래서 돌아왔을 때 캐시 미스가 몰리고 제 속도를 되찾는 데 시간이 걸린다.
이 비용이 쌓이면 CPU가 일보다 전환에 더 오래 매달린다. 실제로 돌 준비가 된 스레드가 코어 수보다 훨씬 많고 한 번에 하는 일이 짧을 때 벌어진다.