2023. 10. 28. 22:06ㆍCS
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
'CS' 카테고리의 다른 글
[CS] 요구 페이징에 대한 나름의 이해 (0) | 2023.10.30 |
---|---|
[CS] 가상 메모리에 대한 나름의 이해 (0) | 2023.10.28 |
[CS] 메모리 할당 방식에 대한 나름의 이해 (0) | 2023.10.27 |
[CS] 컴퓨터 구조에 대한 나름의 이해 (0) | 2023.10.22 |
[CS] 논리 메모리와 물리 메모리에 대한 나름의 이해 (0) | 2023.10.22 |