context switching이란?
멀티 프로세서 환경에서 cpu 가 어떤 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선 순위의 프로세스가 실행되어 할 때 기존 프로세스의 상태 또는 레지스터의 값을 저장하고, cpu가 다음 프로세스를 실행하도록 새로운 프로세스의 상태 또는 레지스터의 값을 교체하는 작업을 context switching이라고 한다.
ps.인터럽트란? 운영 체제에서 컴퓨터에 예기치 않은 일이 발생하더라도 작동이 중단되지 않고 계속적으로 업무 처리를 할 수 있도록 해 주는 기능.
추가적으로 쓰레드 입장에서의 context switching은 다음과 같다.
이처럼 한 쓰레드에서 다른 쓰레드로 작업을 넘기는 과정을 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 |