컨텍스트 스위칭(Context Switching) 이란 무엇인가?
CPU는 동시에 한 개씩의 스레드만 실행시킬 수 있습니다.
스레드가 여러개가 생성되면 CPU는 각각의 스레드를 시분할하여 각각의 스레드를 번갈아가며
실행하게 되는데, 이때 이전 스레드의 문맥 정보 (레지스터 값, 실행중인 스택 정보 등)을 백업받고
백업받아놓았던 다음 스레드의 문맥정보를 로딩하는 과정을 거치게 됩니다.
이 과정을 Context Switching(문맥 교환이라고 번역하더군요) 이라고 하는데, 이러한 스레드가
많아질 수록 Context Switching 에 많은 부하가 걸리기 때문에 오히려 퍼포먼스는 떨어지게 됩니다.
컨텍스트 스위칭이 자주 일어나면 근데 왜 부하가 발생한다는 건가?
메모리와 레지스터 사이의 데이터 이동도 I/O이다.
즉, 컨텍스트 스위칭 과정에서 I/O가 발생한다. 빈번한 I/O 발생은 overhead를 발생시킨다.
실행되는 process의 수가 많고, 빈번한 컨텍스트 스위칭이 발생한다면, 이는 성능을 떨어뜨린다.
하지만 I/O가 발생할 때, 멍~하게 기다릴 수도 없는 노릇이다.
I/O가 발생할 때, CPU를 게속 사용하려면 컨텍스트 스위칭은 피할 수 없다.
'OS' 카테고리의 다른 글
프로세스의 상태(state) (0) | 2015.08.01 |
---|---|
뮤텍스와 세마포어 차이 (3) | 2015.07.31 |
동기와 비동기 (0) | 2015.07.31 |
프로세스와 스레드 차이 (0) | 2015.07.31 |
데드락 교착상태 (0) | 2015.07.31 |