반응형

컨택스트 스위칭(Context Switching)이란?



위의 그림을 통해 설명하고자 한다.


프로세스 P0와 P1이 존재할 때, P0가 CPU를 점유중(excuting)이었고 P1이 대기중(idle)이었는 상태이다가 얼마후에는 P1이 실행이 되고 P0가 대기가 되는 상태가 찾아온다.


이때 P0가 실행중에서 대기로 변하게 될 때는 지금까지 작업해오던 내용을 모두 어딘가에 저장해야하는데 그것이 PCB라는 곳이다.

즉, P0는 PCB에 저장해야하고 P1이 가지고 있던 데이터는 PCB에서 가져와야한다. 


이러한 과정 즉, P0와 P1이 서로 대기<->실행을 번갈아가며 하는 것을 컨텍스트 스위칭이라고 한다.



컨텍스트 스위칭(Context Switching)을 정리하자면


CPU가 어떤 프로세스를 실행하고 있는 상태에서 인터럽트에 의해 다음 우선 순위를 가진 프로세스가 실행되어야 할 때 기존의 프로세스 정보들은 PCB에 저장하고 다음 프로세스의 정보를 PCB에서 가져와 교체하는 작업을 컨텍스트 스위칭이라 한다.

이러한 컨텍스트 스위칭을 통해 우리는 멀티 프로세싱, 멀티 스레딩 운영이 가능하다.





컨텍스트 스위칭 단점


위의 그림을 보면 P0가 Excute에서 idle이 될 때 P1이 바로 Excute가 되지 않고 idle을 좀 더 하다가 Excute가 된다.


그 이유는 P0 상태를 PCB에 저장하고 P1 상태를 PCB에서 가져와야 하기 때문이다.


위 과정에서 PCB를 저장하고 가져올때는 CPU가 아무런 일도 하지 못하게 된다.


따라서 컨텍스트 스위칭이 너무 잦으면 오버헤드가 발생하여(비용이 높아) 성능이 떨어진다. 





컨텍스트 스위칭 인터럽트


컨텍스트 스위칭은 다음과 같은 상황에서 일어난다.


1. I/O interrupt

2. CPU 사용시간 만료

3. 자식 프로세스 Fork

등등이 있다.


이러한 컨텍스트 스위칭이 일어날 때 다음번 프로세스는 스케줄러가 결정하게 된다.


즉, 컨텍스트 스위칭을 하는 주체는 스케줄러이다.





스레드 VS 프로세스(In Context Switching)


이때 스레드가 프로세스보다 빠른 이유도 컨텍스트 스위칭이 한몫한다.


스레드는 컨텍스트 스위칭 될때 text, data, heap 영역은 프로세스 것이기에 자신의 PCB에는 스택 및 간단한 정보만 저장하기에 프로세스 컨텍스트 스위칭 보다 훨씬 바르다.





PCB(Process Control Block)



출처 : https://blog.naver.com/chanheeis/221269778250


이전에 PCB에 프로세스 정보를 저장한다 하였는데 PCB는 프로세스의 정보를 저장하는 Block을 의미한다.


이때 PCB에 저장되는 정보는 프로세스 번호, 포인터, 프로세스 상태, 레지스터, 프로그램 카운터(코드 위치) 등등이 저장된다.







반응형