CS study

5. 문맥 교환(Context Switching)이란?

camezii 2022. 8. 2. 12:57

CS☝🏻 문맥 교환(Context Switching)에 대해 설명해라


사용자 입장에서는 여러 프로세스가 동시에 실행되는 것처럼 보이지만, 사실은 CPU가 시간할당량에 따라 각 프로세스를 순차적으로 처리하는 것이다. 처리해야 할 프로세스가 많을 때, CPU는 프로세스의 정보가 담긴 PCB에서 얻은 정보를 바탕으로 프로세스를 처리하는데 이때 프로세스의 상태 정보를 교환하는 작업문맥 교환이라고 한다.

 

문맥교환은 '현재 CPU를 사용 중인 프로세스의 CPU 제어권이 다른 프로세스로 이양되는 과정'을 의미한다.

    1. 실행 중인 프로세스의 CPU 시간할당량이 끝나거나 인터럽트 발생 시, 해당 프로세스 상태(문맥)를 PCB에 저장한다.

    2. 다음에 실행할 프로세스의 문맥을 PCB에서 읽어 레지스터에 적재한다.

 

이와 같이 인터럽트 발생 시에 PCB에 저장해두고, 재개될 때 PCB에서 문맥을 복원한다.

 

위 그림의 프로세스는 다음과 같다.

  1. P1 실행 중에 Interrupt 또는 System Call 발생
  2. P1의 정보를 PCB1에 저장하고, PCB2의 문맥을 복원한 후, P2 실행
  3. 다시 Interrupt 또는 System Call이 발생하면 P2 상태를 PCB2에 저장하고, P1 재개

 

문맥 교환이 일어나는 시점

  • 멀티태스킹: 다수 프로세스가 하나의 CPU 자원을 나눠 사용하는 것
  • 인터럽트 처리
  • 사용자 및 커널 모드 간의 전환: 이때 같은 프로세스 내에서의 전환은 문맥 교환이 아니다

 

✨문맥 교환과 오버헤드

 

오버헤드란 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 및 메모리를 의미한다.

문맥교환 중에는 다른 작업을 할 수 없으므로 오버헤드가 발생하는데 문맥교환이 자주 발생할수록 프로세스를 처리하기 위해 들어가는 시간 및 메모리, 즉, 오버헤드가 증가한다.

 

 

 

 

출처

https://kosaf04pyh.tistory.com/195
https://overcome-the-limits.tistory.com/275?category=973838
https://oizys.tistory.com/14
https://yoongrammer.tistory.com/53