-
CPU 코어에서 실행중이던
프로세스/스레드
가 다른프로세스/스레드
로 교체되는 것이다. -
오늘날의 프로세스는 하나 이상의 스레드를 가지고 있다. 스레드는 CPU 코어에서 실행되는 단위이기 때문이다.
- 어떤 프로세스에서 실행되던 스레드가 다른 프로세스의 스레드로 교체되는 것을 말한다.
프로세스/스레드
의 상태
- 여러
프로세스/스레드
를 동시에 실행시키기 위해서 컨텍스트 스위칭은 필요하다.
- 주어진
Time Slice(Quantum)
를 다 사용했거나,I/O 작업
을 해야하거나,다른 리소스
를 기다려야 하거나,인터럽트
가 걸렸다던지 기타 등등의 이유가 있다.
- 아주 짧은 시간동안
프로세스/스레드
가 번갈아가면서 실행한다. - 여러 프로그램이 동시에 실행된 것 같은 느낌을 준다.
OS 커널(Kernel)
에 의해 실행되며,OS 커널(Kernel)
은 각종 리소스를 관리/감독하는 역할을 한다.OS 커널(Kernel)
은 처음부터 끝까지 총괄한다.- 누가 트리거 시키는가? 발생시키는가? 헷갈리면 안된다.
- 커널 모드에서 실행한다.
- CPU 레지스터 상태를 교체한다.
레지스터?
각종 명령어들을 수행하기 위한 데이터를 저장하는 존재
- 커널 모드에서 실행한다.
- CPU 레지스터 상태를 교체한다.
레지스터?
각종 명령어들을 수행하기 위한 데이터를 저장하는 존재
- 프로세스 컨텍스트 스위칭은
가상(Virtual) 메모리 주소
관련 처리를 추가로 실행한다.
같은 프로세스에서 발생하는 스레드 간의 컨텍스트 스위칭
서로 다른 프로세스 간에 발생하는 컨텍스트 스위칭
- 초록색 빗금친 영역에서 메모리와 관련된 처리가 일어난다.
- 서로 다른 프로세스는 독립적인 메모리를 가지고 있기 때문이다.
- 같은 프로세스의 스레드들은 같은 메모리 공간을 공유하기 때문에
메모리 주소 관련 처리를 하지 않는다.
따라서 스레드 컨텍스트 스위칭이 더 빠르다.
- 캐시(Cache) 오염(Pollution)
- 서로 다른 데이터들이기 때문에 캐시에 있는 데이터가 오염이된다.
- 순수한(Pure) 오버헤드(Overhead)
- CPU를 잡아먹는 간접비용이다.
- CPU는 아무 작업을 하지 않기 때문에 낭비가 된다.
- 그래서
컨텍스트 스위칭이 많이 일어나는 것은 좋은 것이 아니다.