[OS] 컨텍스트 스위칭(Context Switching, PCB, PC, SP)

2020. 12. 20. 14:21프로그래밍/운영체제

반응형

Context Switching

 

🅰process ---> 🅱process

                         ⬆

                  Scheduler가 프로세스를 바꿔주는 메커니즘을 컨텍스트 스위칭이라고 한다.

 

 

선행으로 알아야 할 개념 (PCB, PC, SP)

PCB (Process Control Block)

    ‣ ProcessID, PC, SP 등 프로세스가 실행중인 상태정보를 구조화해서 저장하는 곳

PC (Program Counter)

    ‣ 다음에 실행할 명령어의 주소 저장, 제어 레지스터*

SP (Stack Pointer)

    ‣ 현재 스택 영역에서 가장 마지막 부분(가장 최근에 저장된)을 가르킴, 데이터 레지스터*

 

* 제어 레지스터    : 현재의 동작에 이어 다음 단계에 수행할 명령어의 주소를 갖는 레지스터
* 데이터 레지스터 : 데이터의 일시적인 저장에 사용되는 특정의 레지스터

 

실행순서

1. 🅰process 를 중지하고 🅱process 로 전환 될 때, 

  🅰가 어디까지 실행되었고 메모리영역은 어디를 바라보는지 등등의 정보를 PCB에 업데이트해서 메인메모리에 저장.

 

2. 🅱의 PCB 정보를 메인메모리에서 로드해서 실행

 

3. 다시 🅰를 실행하게 되면 🅱의 프로세스정보를 PCB에 저장.

  🅰의 PCB정보 확인해서 CPU의 레지스터에 넣고 실행!

 

 

컨텍스트 스위칭은 1초에 100번정도 일어날 수 도 있음.

빈번하게 일어나기 때문에 Context switching 시간을 줄일 필요가 있다.

➡ 어셈블리어로 작성하면 시간

    Linux의 경우 컨텍스트 스위칭 코드는 각 CPU마다 별도로 존재

 

반응형