운영체제
7. Context Switching(문맥 교환)
ggomjiu
2025. 1. 23. 03:35
Context Switching
: CPU가 이전의 프로세스 상태를 PCB에 보관하고, 또 다른 프로세스의 정보를 PCB에서 읽어 레지스터에 적재하는 과정
- idel : 유후상태
- excuting : 실행 중인 상태
- process p1에서 interrupt나 System call을 만나면 PCB1에 프로세스의 정보가 저장됨
- process p2의 정보를 가지고 오고, 상태를 변경하여 CPU에 할당
- process p2의 일이 interrupt나 System call을 만나면 PCB2에 프로세스의 정보가 저장됨
- process p1의 정보를 가지고 오고, 상태를 변경하여 CPU에 할당
Context Switching이 발생하는 원인
- 선점형 스케줄링의 방식으로 진행이 되기 때문
- 선점형 스케줄링은 CPU에 우선 순위가 높은 프로세스가 할당되면 -> 기존에 실행되고 있는 프로세스를 중지하고 우선 순위가 높은 프로세스를 진행함
- 중지되는 프로세스의 정보를 저장하고, 우선 순위가 높은 프로세스를 실행하는 방식
Context Switching의 문제점
- Context Switching이 잦으면 오버헤드 비용이 발생하여 성능이 떨어짐
- 오버헤드(Overhead) : 사용된 시간과 사용된 메모리 양
- 실행할 프로세스의 정보를 PCB에서 가지고 올 동안 CPU에 할당된 프로세스가 없어서 아무 일도 하지 못함
-> 이러한 상황이 잦으면 성능 저하로 이어짐
오버헤드 해결
-> 최근에는 효율적인 문맥 교환을 위해 쓰레드를 이용함
- 단일 프로세스에 여러 쓰레드를 생성하여 쓰레드에서 Context Switching을 진행함
- 쓰레드의 경우, 메모리 공간을 공유하고 있어서 Stack 영역만 변경하면 됨
Reference