스레드 관련 글 읽다 보면 컨텍스트 스위칭 비용이 어쩌고 하면서 스레드 너무 많이 만들지 말라는 얘기가 자주 나오더라고요. 근데 컨텍스트 스위칭이 정확히 뭘 하는 작업이길래 비싸다고 하는 건지 잘 모르겠어요.
CPU가 여러 프로세스나 스레드를 번갈아 가면서 조금씩 실행하는 거, 그니까 동시에 도는 것처럼 보이게 해 주는 그거 맞죠? 스위칭할 때 지금 하던 거 어디까지 했는지 저장하고 다음 거 불러오고 이런 걸 하는 것 같긴 한데, 그게 얼마나 오래 걸린다고 비싸다고까지 하는 건지 감이 안 와요.
제가 헷갈리는 지점이,
1. 스위칭할 때 구체적으로 뭘 저장하고 뭘 불러오나요? 레지스터 어쩌고 하던데 그게 뭔지
2. 그냥 값 몇 개 저장하는 거면 금방 아닌가요? 왜 그렇게 부담이라는 거예요
3. 캐시가 날아간다는 말도 봤는데 이게 스위칭이랑 무슨 상관인가요
비싸다 비싸다 하는데 정작 뭐가 비싼 건지를 몰라서요. 아시는 분 설명 좀 부탁드려요.