middlefitting

[OS] Context Switch란 무엇인가 본문

OS

[OS] Context Switch란 무엇인가

middlefitting 2023. 1. 25. 22:47

Context Swtich 란?

Context Switch (문맥 교환) 은 운영체제에서 아주 중요한 개념입니다.

 

문맥교환이란 CPU가 사용자 프로그램에서 다른 사용자 프로그램으로 넘어가는 것을 말합니다.

 

현대적인 운영체제에서 CPU는 사용자 프로그램이 번갈아가면서 사용하는 자원이기 때문에 문맥 교환은 당연히 일어날 것입니다.

 

CPU는 굉장히 빠른 자원이기 때문에 여러 사용자 프로그램이 번갈아가면서 사용합니다.

 

Timer 만료, I/O, 시스템 콜 등 다양한 Interrupt가 걸리게 되면 CPU는 운영체제로 넘어가게 되고, 운영체제는 가장 CPU 우선권이 있는

 

사용자 프로그램에게 CPU를 넘겨주게 됩니다. 

 

 

 

Context Switch 에 필요한 작업

문맥 교환을 위해서는 교환 이전 시점을 알아야 합니다.

 

따라서 해당 레지스터 저장 값을 해당 사용자 프로그램에 해당하는 PCB에 저장하게 됩니다.

 

운영체제는 문맥 교환을 통해 새로 CPU를 얻게 될 프로세스가 이전까지 수행했던 instruction 이후를 실행할 수 있도록

 

프로세스 문맥을 찾아서 하드웨어에 복원하고, 사용자 프로그램에게 CPU를 넘겨주게 됩니다.

 

 

 

Context Switch는 언제 일어나는가

문맥 교환이 일어나는 상황은 여러 상황이 존재하겠지만, 공통적인 것은 시스템 콜이나, Interrupt 가 일어나야 한다는 것입니다.

 

일단 운영체제로 CPU가 넘어가고 이후에 CPU가 기존 사용자 프로그램이 아닌

 

다른 사용자 프로그램으로 넘어가게 되면 문맥 교환이 일어나는 것입니다.

 

즉 CPU가 운영체제로 넘어갔다고 해서 문맥 교환이 일어난 것은 아닙니다.

 

CPU가 운영체제로 넘어가고, 다른 사용자 프로그램으로 CPU가 넘어갔을때, 그것을 Context Switch 라고 하는 것입니다.

 

예시는 다음과 같습니다.

  • 커널 모드로 들어왔다가 운영체제가 처리하고 다시 원래 프로세스로 돌아가는 경우 != Context switch
  • 시스템 콜이 들어온 이후 운영체제가 CPU 를 다른 프로세스에 넘김 == Context switch

문맥 교환이 일어났느냐 일어나지 않느냐에 따라 오버헤드는 차이가 발생하게 됩니다.

 

원래 프로세스로 돌아가게 된다면 Context swithch에 비해 약간의 저장만 필요하게 되기 때문입니다.

 

 

 

참고문헌

KOWS 운영체제 - 반효경 교수님 - Process 1

http://www.kocw.net/home/search/kemView.do?kemId=1046323