작성
·
214
0
컨텍스트 스위칭에서 질문드립니다.
1. 컨텍스트 스위칭은 쓰레드간에 일어나는것이고 컨텍스트 스위칭이 일어나기전 진행하던 모든작업들이 프로세스 제어블록에 저장되어 다음것을 실행시키는것으로 아는데 다른책을 통해 공부할땐 프로세스간의 컨텍스트 스위치은 무겁고 쓰레드간의 컨텍스트 스위칭은 스택만을 별도로 메모리를 가지기에 가볍다. 라고 공부를 했는데 이 이야기는 한 프로세스내의 한쓰레드에서 다른 쓰레드의 컨텍스트 스위칭 비용은 가볍고, 다른 프로세스의 쓰레드로 컨텍스트 스위칭은 무겁다고 보면 될까요?
2. 커널모드 동기화기법인 강의에서나온 랜덤메타,갑질메타를 사용하게되면 결국 한번은 커널모드로 들어가야하기에 기존에 실행중이던 유저모드의 프로세스의 쓰레드는 대기상태로 돌아가 스케쥴러에 의해 다시 선택받길 기다리는 상태이기에 느리다.가 맞는걸까요?
답변 1
2
1.
다른 프로세간의 Context-Switching이 더 무거운 것은 맞지만,
그렇다고 동일 프로세스의 다수 쓰레드의 Context-Switching이 가벼운 수준은 아닙니다.
게임처럼 CPU 성능을 100% 활용해야 하는 입장에서는 이 또한 방해물입니다.
2.
네 그렇습니다.
따라서 MMO처럼 항상 CPU 점유율이 높은 상황에서는 스핀락이 좋은 선택이 될 수 있습니다.