[CS] Context Switching에 대한 나름의 이해

2023. 10. 28. 22:06CS

context switching은 현재 프로세스에서 다른 프로세스로 CPU의 권한이 넘어가는 것이다.

이때 현재 프로세스에 대한 PCB를 작성하여 커널의 데이터 영역에 저장한다. 그리고 이번에 쓸 프로세스에 대한 PCB로부터 레지스터 정보, 스택, PC 정보 등 프로세스 실행에 필요한 내용을 불러온다. 

 

여기서 한가지 헷갈리기 쉬운 개념이 있다.

Interrupt가 일어나고 시스템콜이 불린다고 context switching이 일어나는 것은 아니라는 것이다.

다음 그림을 참고해보자

만약 I/O 작업이 끝나서 interrupt를 걸거나 시스템콜을 사용하면 kernal mode로 갔다고 다시 원래의 프로세스에게 권한을 넘겨준다. 이건 context switching이 아니다.

하지만 현재 프로세스가 I/O 요청을 걸면 당장에 해야할 일은 없을 것이다.(비동기는 예외) 그러면 OS는 다른 프로세스에게 CPU 권한을 넘겨주는 것이 현명하다. 또한 주어진 시간을 다 써서 timer interrupt가 발생했을 경우 권한을 넘겨주어야 한다. 이러한 경우가 context switching이다.

앞의 두 작업은 시간상으로도 차이가 크다. 첫번째 경우는 cache memory를 날리지 않아도 되지만 두번째 경우는 날려야 한다. 또한 첫번째 경우는 PCB에도 context의 일부만 저장해도 되는데 두번째는 모두 저장해야 한다.

 

Reference


https://core.ewha.ac.kr/publicview/C0101020140318134023355997?vmode=f