본문 바로가기

정보

context switching이란?

context switching이란?


멀티 프로세서 환경에서 cpu 가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어 할 때 기존 프로세스의 상태 또는 레지스터의 값을 저장하고, cpu가 다음 프로세스를 실행하도록 새로운 프로세스의 상태 또는 레지스터의 값을 교체하는 작업을 context switching이라고 한다. 


ps.인터럽트란? 운영 체제에서 컴퓨터에 예기치 않은 일이 발생하더라도 작동이 중단되지 않고 계속적으로 업무 처리를 할 수 있도록 해 주는 기능.


추가적으로 쓰레드 입장에서의 context switching은 다음과 같다.


쓰레드는 O/S에서의 기본적인 스케줄링 단위이다. 그리고 이러한 쓰레드를 O/S는 여러 개를 관리하면서 우리에게

멀티 태스킹을 가능하게 해준다. 하지만 앞서 일반적인 CPU는 한번에 한가지 명령만을 계산할 수 있다고 하였다.

단지 여러 쓰레드의 순차적인 관리를 통해 거의 동시에 진행하게끔 한다고 하였는데, 이러한 관리를 위해서 쓰레드를  

O/S에서 관리할 수 있는 기본적인 정보가 있어야 한다.

쓰레드는 레지스터(Register Set), 커널 스택(Kernel Stack), 사용자 스택 등의 여러 정보를 갖고 있는데, 이러한 정보들을

Context라고 한다. Context들은 쓰레드가 작업을 진행하는 동안 작업에 대한 정보를 보관하고 있으며, 다른 쓰레드로

작업 순서가 넘어갈 때 저장된다.

O/S는 쓰레드 하나의 작업을 진행하기 위해 그 쓰레드의 Context를 읽어오며, 다시 다른 쓰레드로 작업을 변경할 때

이전 쓰레드의 Context를 저장하고 다시 진행할 쓰레드의 Context를 읽어오는 작업을 반복하게된다.

이처럼 한 쓰레드에서 다른 쓰레드로 작업을 넘기는 과정을 Context Switching이라고 한다.


우리의 응용 프로그램 차원에서 보면, Context Switching이라는 작업은 아주 미묘하고 작은 단위이다. 그 속도 또한

무시해도 될 만큼 빠르기 때문에 우리는 그다지 신경을 쓰지 않아도 프로그램은 아주 잘 동작할 것이다.
 
하지만, 이렇게 처리해야 할 쓰레드의 개수가 매우 많다면 어떻게 될까? Windows O/S를 사용할 때 많은 프로그램들을

띄워놓고 작업하면 속도가 상당히 떨어짐을 느낄 수 있는데, 이 것은 작업해야 할 쓰레드가 많아짐에 따라 Context  

Switching이 매우 빈번하게 발생하며, 다시 차례가 돌아오기까지의 시간이 더 소비되기 때문이다.

즉 context switching이 많다는 것은 cpu를 더 많이 사용한다는 뜻이다. 또한 context switching 때문에 성능이 저하될수도 있다.


(컨텍스트 스위칭이 많아서 해당 웹서버의 성능이 좋지 않다는것은 편파적인 생각 이다. 성능을 저하할수있는 하나의 요소이기 때문이다.)



context switching overhead(오버헤드) 란 말이 종종 등장하곤한다.


그렇다면 이말이 무슨 뜻일까?


일단 오버헤드가 무슨뜻인지 부터 알아보자. 


오버헤드(overhead)는 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등을 말한다.

예를 들어 A라는 처리를 단순하게 실행한다면 10초 걸리는데, 안전성을 고려하고 부가적인 B라는 처리를 추가한 결과 처리시간이 15초 걸렸다면, 오버헤드는 5초가 된다. 또한 이 처리 B를 개선해 B'라는 처리를 한 결과, 처리시간이 12초가 되었다면, 이 경우 오버헤드가 3초 단축되었다고 말한다.

-위키백과-



즉 컨텍스트 스위칭 오버헤드는 컨텍스트 스위칭이 걸린 시간과 메모리를 뜻한다.



'정보' 카테고리의 다른 글

acid란?  (0) 2018.09.30
프레임워크를 사용하는 이유  (0) 2018.08.27
Event-MPM, Event-Driven 의 차이 (Apache인가 Nginx 인가?)  (0) 2018.08.11
Thread pool 이란?  (0) 2018.08.11
tengine 웹서버 설치하기  (0) 2018.08.06