문맥교환이라고도 한다.
CPU를 사용하는 프로세스가 변경될 때 발생하는 CPU 교환 작업이라고 생각하면 될 것 같다.
Context Switch가 발생할때 수행되는 커널의 함수
SystemCall 과는 다르게 외부에서 호출할 수 없으며 커널 내에서만 호출이 가능하다.
이때 schedule() 을 호출하게 되는 SystemCall이 read(), wait(), exit() 등등 이 있다.
System Call이 외부에서 호출된 후에 커널로 이동하여 커널 내에서 schedule() 함수를 호출하고 이로 인해 Context Switch가 발생한다고 생각하면 될 것 같다.
(System Call은 외부 ( 커널 밖 ) 에서 호출이 가능하다.)
Program Counter (PC) : 다음 시작할 명령어의 메모리 주소를 저장하는 레지스터
Stack Pointer (SP) : 스택의 마지막 프로그램 요청 주소를 저장하는 레지스터
이러한 구조가 있다고 가정했을 때
이때 Process 1이 현재 CPU를 가지고 돌아가고 있다고 하자,
Process 1에서 Process 2로의 Context Switch 과정은 다음과 같다.
앞서 나왔던 Child를 생성하는 과정에서 Context Switch가 발생되는 시기는
발생한다.
고건 교수님 강의
https://olc.kr/course/course_online_view.jsp?id=35&cid=51