본문 바로가기

CS/O.S

(운영체제) 프로세스와 컨텍스트 스위칭

콘텍스트 스위칭이란?

어떠한 프로세스가 실행상태일 때 (CPU를 소유하고 있을 때) 스케줄러가 다른 프로세스를 CPU의 소유권을 넘겨주는 것을 의미한다.

 

이때 중요한 레지스터가 PC, SP이다.


어떠한 프로세스가 어떠한 프로그래밍 언어를 실행한다고 가정하자

PC는 현재 실행되고 있는 라인의 주소를 가리키고 있고 SP는 Stack에 현재 쌓여있는 가장 최상단에 있는 주소를 가리키고 있을 때

 

컨텍스트 스위칭이 발생하였다.

 

그러면 현재 실행 중의 프로세스에 대한 PC, SP 값을 PCB에 저장해둔다.

 

 

다시 이전에 ready 상태로 전환하였던 프로세스를 실행한다면 저장해두었던  PCB를 참조하여서 되돌아간다.

(이때 현재 ready상태의 프로세스는 PCB에 저장한다.)

 


Process Control Block (PCB)

Process Context Block이라고도 한다.

 

들어있는 정보

1. Process ID 

2. 주요 레지스터 값 (PC, SP 등)

3.  Scheduling Info (Process 상태)

4. Memory Info (메모리 사이즈 limit)

 

즉 프로세스가 실행 중인 상태를 캡처/구조화해서 저장한다.


정리

  1. 실행 중지할 프로세스 정보를 해당 프로세스의 PCB에 업데이트해서 메인 메모리에 저장
  2. 다음 실행할 프로세스 정보를 메인 메모리에 있는 해당 PCB 정보를 CPU에 넣고 실

 

디스패치 (Dispatch) : ready 상태의 프로세스를 running상태로 바꾸는 것

 

실제로 콘텍스트 스위칭은 굉장히 짧은 시간 (ms) 단위로 프로세스 스위칭이 일어난다.

그래도 콘텍스트 스위칭의 시간을 짧게 하는 것이 코드 성능 측면에서 이득이다.