OS #16 컨텍스트 스위칭 원리

underlier12·2020년 3월 18일
0

OS

목록 보기
16/35
post-custom-banner

16. 컨텍스트 스위칭 원리

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

이전에 여러 프로세스들을 아주 짧은 시간동안 교체하면서 실행하는 것을 컨텍스트 스위칭이라고 했다. 이제 Program Counter와 Stack Pointer의 동작에 주목하면서 과정을 훑어 본다.

컨텍스트 스위칭 동작

다음과 같이 프로그램이 2개가 존재하고 각각 해당하는 프로세스를 Process A, Process B라고 할 때 CPU Context에는 PC, SP의 정보를 가지고 있다. Process A부터 실행을 진행하며 PC가 각 코드를 가리키면서 지나가고 SP도 알맞게 값이 변경된다.

그러다가 스케쥴러의 요청(명령)에 의해 컨텍스트 스위칭을 실시하게되고 이 때 다음과 같은 순서로 진행이 된다.

  • 먼저 CPU Context 정보를 PCB에 저장한다.(좌측 하단)
  • 넘어가는 프로세스의 PCB 정보를 불러온다.(현재는 없으므로 신규로 진행)
  • PCB 정보를 토대로 CPU Context에 정보를 이어나가며 작업을 처리한다.

위의 순서에 따라서 Process B의 작업도 진행하다가 또 다시 컨텍스트 스위칭이 진행되고 동일한 절차로 실행이 된다.

Process Control Block

위에서 언급한 PCB는 Process Control Block을 의미하며 Process Context Block이라고도 한다. 이 PCB에는 다양한 정보가 담겨있는데 주로 다음과 같은 정보들이 담긴다.

PCB 정보

  • Process ID
  • Register 값 (PC, SP 등)
  • Scheduling Info (Process State)
  • Memory Info (Memory Size Limit)

PCB 구조

PCB의 정보를 저장하는 구조는 다음과 같다.

profile
logos and alogos
post-custom-banner

0개의 댓글