꾸준한 개발자

계속적인 성장을 추구하는 개발자입니다. 꾸준함을 추구합니다.

계속 쓰는 개발 노트

운영체제 (OS)

프로세스와 컨텍스트 스위칭

gold_dragon 2021. 4. 19. 20:38

스케줄러가 하나의 응용 프로그램의 A 프로세스를 running 상태로 바꿔주다가 어느순간 B 프로세스를 running 상태로 바꿔주는 것이 컨텍스트 스위칭입니다.

 

전환할 때 PC와 SP의 데이터를 PCB라는 저장 메모리에 따로 저장합니다. 그 후 컨텍스트 스위칭이 이루어집니다. 다시 이전의 프로세스를 running 시킬 때, PCB 메모리를 확인합니다. 그 값을 CPU 레지스터 값에 덮어씌웁니다.

 

PCB (Process Control Block)에는 Process ID, Register 값, Scheduling Info (Process State), Memory Info (메모리 사이즈 limit) 등이 저장됩니다.

 

정리해서 PCB는 프로세스가 실행 중인 상태를 캡쳐 / 구조화해서 저장하는 메모리 공간입니다.

컨텍스트 스위칭

CPU에 실행할 프로세스를 교체하는 기술입니다. 실행 중지할 프로세스 정보를 해당 프로세스의 PCB에 업데이트해서, 메인 메모리에 저장합니다. 다음 실행할 프로세스 정보를 메인 메모리에 있는 해당 PCB 정보를 CPU에 넣고 실행합니다.

 

추가적으로 ready 상태의 프로세스를 running 상태로 바꾸는 것을 디스패치(dispatch)라 합니다.