본문 바로가기

면접 질문지 소스

면접질문: Context-Switching에 대해 설명해주세요.

728x90

컴퓨터가 매번 하나의 프로세스만 처리할 수 있다면?

- 해당 Task가 끝날때까지 다음 Task는 기다릴 수 밖에 없습니다.

- 반응속도가 매우 느리고 사용하기 불편합니다.

 

Context-Switching이란?

- 여러개의 프로세스가 실행되고 있을 때 기존에 실행했던 프로세스를 중단하고 다른 프로세스를 실행시키는 기술입니다.

- CPU에 실행할 프로세스를 교체하는 기술입니다.

 

PCB

- PCB(Process Context Block)이라고 하는 메모리의 별도 공간에 프로세스 상태값들을 저장하고 찾는다.

- 프로세스가 실행 중인 상태를 스냅샷을 찍어 저장한다고 생각하면 좋습니다.

 

PCB 구성요소

- 프로세스 ID

- 레지스터값((1)PC,(2)SP)

 

(1) PC (Process Counter)

다음 실행할 명령어의 주소값

 

(2) SP (Process state)

프로세스상태

 

- Memory Info : 전체 프로세스 사이즈

 

 

Context Switching 작동순서

 

- 스케줄러가 A 프로세스를 중단하고 B프로세스를 실행하는 것을 요청합니다

- A프로세스에서 Stack의 데이터 위치를 가리키고 있는 SP(Stack Pointer)의 값과 다음 실행해야하는 코드의 주소값을 가지고 있는 PC의 값을 PCB에 저장합니다.

- A프로세스는 ready에서 block 상태로 바뀌고 CPU에서 B프로세스를 실행합니다. 이 과정에서 B프로세스가 ready에서 running으로 바뀌는데 이를 디스패치(dispatch)라고 합니다.

- 반대로 다시 B프로세스에서 A프로세스로 콘텍스트 스위칭을 하게 된다면, B프로세스의 SP값,PC값을 PCB에 저장하고 A프로세스 PCB에서 SP값과 PC값을 찾아 덮어씌웁니다