컨텍스트 스위칭(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
Posted by slender ankles
,