etc/흥미로운 것

[Thread] 스레드 컨텍스트 스위칭

hojak99 2017. 3. 17. 20:09
스레드 컨텍스트 스위칭이란 무엇일까?


우선 우리는 컨텍스트 스위칭이란 것부터 알아야 한다. 그래야 스레드에서의 컨텍스트 스위칭을 더 쉽게 이해할 수 있을 것 같은 내 생각 때문이다. 이 스레드 컨텍스트 스위칭에 대해 이해한 내 생각을 이야기 해보겠다. 틀릴 수도 있다. 믿지 말자. 참고만하자




컨텍스트 스위칭: 한 프로세스가 CPU를 사용 중일 때 다른 프로세스가 CPU를 사용하기 위해, 이전의 프로세스의 상태를 보관하고 새로운 프로세스 상태를 CPU에 적재하는 것을 말한다. 컨텍스트 스위칭이 발생할 때마다 오버헤드가 발생해 작업을 수행할 수 없다.



그렇다면 스레드 컨텍스트 스위칭은 무엇일까? 어쨌든 같다.



스레드 컨텍스트 스위칭: OS는 스레드 하나의 작업을 진행하기 위해 해당 스레드의 Context를 읽어오고, 다시 다른 스레드로 작업을 변경할 때, 이전 스레드의 Context를 저장하고 작업을 진행할 스레드의 Context를 읽어오는 작업을 말한다. 즉 한 마디로 말해서 한 스레드에서 다른 스레드로 작업을 넘기는 과정이라고 할 수 있다.


여기서 Context는 정보를 나타내는데 레지스터, 커널 스택, 사용자 스택 등의 여러 정보를 말한다.




스레드 컨텍스트 스위칭의 예로, 윈도우에서 많은 프로그램을 실행시킬 시에 느려지게 되는데 바로 작업해야 할 스레드가 많아졌기 때문에 컨텍스트 스위칭이 매우 빈번하게 발생했기 때문이다.


반응형