← 질문 목록
#4깊이 0

컨텍스트 스위칭 비용은 구체적으로 어디서 발생하는가?

운영체제심화동시성

레지스터 교체 자체보다 캐시가 무너지는 비용이 크다. 눈에 보이는 저장·복원은 일부일 뿐이다.

구분무엇이 일어나나크기
직접 비용레지스터·PC를 PCB에 저장하고 복원, 커널 모드 전환수 마이크로초
간접 비용쌓아둔 캐시가 밀려나고 TLB도 다시 채워질 수 있다이쪽이 본체

직접 비용은 명확하다. 실행 중이던 스레드의 레지스터와 프로그램 카운터를 PCB에 저장하고 다음 스레드의 것을 복원한다. 커널 모드 전환도 함께 일어난다. 이건 수 마이크로초 수준이다.

간접 비용이 본체다. 전환할 때 캐시를 통째로 비우는 것은 아니다. 새 작업이 데이터를 올리면서 앞 작업의 것이 밀려난다. 그래서 다시 실행될 때 캐시 미스가 연달아 난다.

TLB도 비슷하다. 프로세스가 바뀌면 주소 변환이 달라져 비워야 한다. 다만 CPU가 주소 공간에 꼬리표를 달 수 있으면 전부 비우지는 않는다.

그래서 스레드를 늘린다고 처리량이 비례해 늘지 않는다. 코어 수를 넘어서면 실행이 아니라 전환에 시간을 쓰기 시작한다. 커넥션 풀 크기를 코어 수 기준으로 잡는 근거가 여기 있다.

CPU 바운드 작업은 코어 수에 맞추고 I/O 바운드는 더 늘려도 되는 이유도 같다. 대기 중인 스레드는 CPU를 점유하지 않기 때문이다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

컨텍스트 스위칭 비용은 구체적으로 어디서 발생하는가?
컨텍스트 스위칭 비용은 구체적으로 어디서 발생하는가? · CS 길라잡이