컨텍스트 스위칭(Context Switching)
Context Switching이란?
- CPU/코어에서 실행 중이던 프로세스/스레드가 다른 프로세스/스레드로 교체되는 것
- 프로그램 A가 멈추고 B, C가 실행된 후 다시 A가 실행될 때 이전에 멈춘 부분 부터 다시 시작해주도록 하는 메커니즘
Context란?
CPU가 해당 프로세스를 실행하기 위한 정보들
- 이러한 정보들은 프로세스의
PCB (process control block)에 저장된다.
Context Switching의 필요성
- 여러 프로세스와 스레드들을 동시에 실행시키기 위해(그렇게 보이기 위해)
- 여러 프로세스와 스레드들이 공정하게
CPU 시간을 나눠 갖기 위해
- 높은 우선순위의 작업이 빠르게 처리될 수 있게
Context Switching 발생 시점
- 주어진
Time Slice(Time Quantum)를 다 사용했을 때
- 일정 시간 할당량(
Time quantum) 또는 타임슬라이스(Time slice)라고 하는 단위로 여러 프로세스를 번갈아가며 프로세서에 할당한다.
Time Slice(Time Quantum) 동안 프로세스가 번갈아가면서 실행이 되는데, 매우 짧은 시간 동안 번갈아가면서 실행되면서 동시에 실행되는 것처럼 보이게 된다.
I/O 작업을 해야할 때
- 다른 리소스를 기다려야 할 때
- 인터럽트(Interrupt)

출처 :
컨텍스트 스위칭(Context Switching)
Context Switching Overhead
- 여러개의 프로세스나 스레드가 있을때,
CPU가 현재 프로세스나 스레드의 상태를 저장하고 다른 프로세스나 스레드로 전환될 때 발생하는 비용을 읨
- 스위칭 하는 과정에서 CPU 시간과 자원을 소모하므로 성능에 영향을 미친다.
- 프로세스의 컨텍스트 스위칭 오버헤드 보다 스레드의 컨텍스트 스위칭 오버헤드가 상대적으로 작기 때문에, 멀티 프로세스 대신 멀티 스레드로 프로그램 모델을 구성한다.
- 멀티 스레드 모델은 스레드가 여러개이니 컨텍스트 스위칭 오버헤드가 발생하게 되고, 스레드가 많으면 많을 수록 스위칭 횟수도 많아지고 덩달아 오버헤드도 많아져 성능이 저하될 수 있다.
출처
컨텍스트 스위칭(Context Switching)
[OS] Context Switching (컨텍스트 스위칭)
[운영체제] 컨텍스트 스위치(Context Switch)란?
🤔 스레드를 많이 쓸수록 항상 성능이 좋아질까?
운영체제[운영체제] CPU 스케줄링