운영체제

7. Context Switching(문맥 교환)

ggomjiu 2025. 1. 23. 03:35

Context Switching

: CPU가 이전의 프로세스 상태를 PCB에 보관하고, 또 다른 프로세스의 정보를 PCB에서 읽어 레지스터에 적재하는 과정

- idel : 유후상태

- excuting : 실행 중인 상태

  1. process p1에서 interrupt나 System call을 만나면 PCB1에 프로세스의 정보가 저장됨
  2. process p2의 정보를 가지고 오고, 상태를 변경하여 CPU에 할당
  3. process p2의 일이 interrupt나 System call을 만나면 PCB2에 프로세스의 정보가 저장됨
  4. process p1의 정보를 가지고 오고, 상태를 변경하여 CPU에 할당

 

Context Switching이 발생하는 원인

- 선점형 스케줄링의 방식으로 진행이 되기 때문

- 선점형 스케줄링은 CPU에 우선 순위가 높은 프로세스가 할당되면 -> 기존에 실행되고 있는 프로세스를 중지하고 우선 순위가 높은 프로세스를 진행함

- 중지되는 프로세스의 정보를 저장하고, 우선 순위가 높은 프로세스를 실행하는 방식

 

Context Switching의 문제점

- Context Switching이 잦으면 오버헤드 비용이 발생하여 성능이 떨어짐

- 오버헤드(Overhead) : 사용된 시간과 사용된 메모리 양

- 실행할 프로세스의 정보를 PCB에서 가지고 올 동안 CPU에 할당된 프로세스가 없어서 아무 일도 하지 못함

-> 이러한 상황이 잦으면 성능 저하로 이어짐

 

오버헤드 해결

-> 최근에는 효율적인 문맥 교환을 위해 쓰레드를 이용함

- 단일 프로세스에 여러 쓰레드를 생성하여 쓰레드에서 Context Switching을 진행함

- 쓰레드의 경우, 메모리 공간을 공유하고 있어서 Stack 영역만 변경하면 됨

 

 

 

 

 

 

 

 

 

 

Reference

https://junghyungil.tistory.com/105