언어/CS
[CS] 컨텍스트 스위칭 (Context Switching)
Geunny
2025. 7. 12. 10:59
반응형
Context Switching
- 개념: 운영체제가 CPU를 사용하는 실행 주체 (프로세스/스레드) 를 바꿀때 이전 주체의 상태(Context)를 저장하고, 새 주체의 상태를 복원하는 과정.
- 한정적인 코어에서 CPU 는 물리적으로 한번에 하나의 주체만 실행가능.
- 운영체제가 일정 시간마다 다른 작업에게 CPU를 할당해 주는 구조.
운영체제 입장에서 Context Switching 과정
- 현재 실행중인 프로세스/스레드 상태(Context)를 PCB/TCB 에 저장
- 스케줄러가 다음 실행할 주체를 선택
- 선택된 주체의 상태를 복원
- CPU에게 새로운 실행 흐름을 넘겨줌
컨텍스트 스위칭 과정
[현재 실행 중인 프로세스 A → 프로세스 B로 전환하는 경우]
1. 인터럽트 or 시스템콜 발생 (예: 타임 슬라이스 종료)
2. 커널 모드 진입 (trap 발생)
3. 현재 실행 중인 프로세스 A의 상태(context)를 저장 (PCB에)
4. 스케줄러가 다음 실행할 프로세스 B를 선택
5. 프로세스 B의 context 정보를 PCB에서 읽어 복원
6. CPU 제어를 B에게 넘김 → 사용자 모드로 복귀
OS 에서 사용되는 개념
- PCB (Process Control Block) : 프로세스의 context 정보 저장용 구조체
- TCB (Thread Control Block) : 스레드의 상태를 저장
- 스케줄러 : 어떤 실행 단위를 다음으로 실행할지 결정
- Time Interrupt 일정 주기마다 컨텍스트 스위칭을 유도 (Preemption 기반)
- Cpu Scheduler 정책 : CFS, Priority, Real-Time
전환트리거 : 운영체제가 현재 실행중인 작업을 중단하고 다른 작업으로 전환하도록 만드는 이벤트 - 컨텍스트 스위칭의 실행 조건
- 타이머 인터럽트
- I/O 대기 발생
- 높은 우선순위 작업 등장
컨텍스트 스위칭시 발생하는 비용
- TLB flush : 프로세스 전환 시 주소 공간이 바뀌어 MMU 캐시(TLB) 무효화
- 캐시 무효화 : CPU 내부 L1/L2 캐시도 무효화 가능 → 성능 저하
- 스케줄러 CPU 사용 : 컨텍스트 저장/복원 자체도 OS CPU 소모
- Lock 경합 : 컨텍스트 스위칭이 많아지면 lock 경쟁 증가 가능성 ↑