Context Switch

June Lee·2021년 3월 29일
0

운영체제

목록 보기
11/25
post-custom-banner

Process Context

CPU time slice burst 혹은 Interrupt로 인해서 CPU가 프로세스를 떠날 때에는 context를 저장한 후 떠나야 이후 덜 마친 작업을 이어서 할 수 있다.

이때, text, data, heap, stack과 같은 user-level context는 메모리에서 유지되기 때문에 따로 저장해줄 필요가 없다.

그러나, system-level context(CPU 레지스터 속 내용 - ex. PC(Program Counter), 다음 수행할 instruction의 주소를 갖고 있는 것)의 경우 반드시 저장되어야한다.

Context Switch

컨텍스트 스위치란 돌고 있던 프로세스가 중단되었을 때 CPU 레지스터의 내용을 저장하고 다른 프로세스로 넘어가는 것을 말한다.

cf) 컨텍스트 스위치의 location
한 프로세스가 중단되고 다른 프로세스로 넘어가는 컨텍스 스위치는 항상 커널 속에서만 일어난다.
이때 중단에는 2가지가 있다.
1.blocked - I/O를 하기 위해 스스로 CPU를 내어놓음
2.ready - time slice burst(혹은 interrupt)로 인해 CPU를 강제로 내어놓음

컨텍스트 스위치는 함수를 call했을 때 이 함수를 수행하고 이후 원래 call된 위치로 돌아오는 것과 유사하다. 그리고 재귀함수처럼 컨텍스트 스위치에서도 스케쥴링 큐에 들어가있는 프로세스의 수에 따라서 context switch()를 여러 번 call하고 다시 차례가 돌아왔을 때 돌아와서 원래 하던 작업을 마저 실행한다.

Point 🧩
-컨텍스트 스위치는 커널 속에서 일어나고 그 위치에서 다시 살아난다.
-컨텍스트 스위치를 너무 많이 하면 overhead가 많이 생긴다.

profile
📝 dev wiki
post-custom-banner

0개의 댓글