中庸
article thumbnail

1. 프로세스 스위칭 (혹은 컨텍스트 스위칭)

프로세스 스위칭이란, CPU 가 처리하는 프로세스가 바뀌는 것을 의미합니다. 단, 이것은 Mode Change 와는 다릅니다.

"프로세스가 스위칭되었다" 라고 이야기하기 위해서는 프로세스의 컨텍스트가 완전히 바뀌어야합니다. 아래 그림을 살펴봅시다.

모드 체인지는 일어났으나, 프로세스 스위칭은 일어나지 않았다.

언뜻 보면 위 그림에서 "task A 를 처리하다가 Kernel Execution 을 하고 있으니 커널 프로세스로 간 것이 아닌가?" 라고 착각할 수 있습니다.

 

하지만 커널 내부의 인스트럭션을 수행하는 것은 "모드 체인지"이지 "컨텍스트 스위칭 (혹은 프로세스 스위칭)" 이 아닙니다. 커널은 각 프로세스마다 마치 라이브러리처럼 있는 것입니다. 이전 포스팅에서 살펴봤던 Virtual Address Space 를 떠올려보면 각 프로세스는 제것의 커널을 갖고 있는 것처럼 묘사되어있습니다. 즉, 커널 내부로 들어가는 것은 같은 프로세스에서 라이브러리를 호출하는 것처럼 묘사됩니다. (실상은 여러 프로세스는 메인 메모리의 물리적 주소에서 하나의 커널을 공유해서 사용합니다.)

 

여기서 추가로 알아둬야 할 점은, 유저 컨텍스트와 시스템 컨텍스트는 동시에 수행될 수 없다는 것입니다. CPU 는 기본적으로 한번에 한 인스트럭션만 수행합니다. 따라서, CPU는 유저 컨텍스트의 인스트럭션을 수행하고 있거나, 시스템 컨텍스트의 인스트럭션을 수행하고 있거나 둘 중 하나의 상태입니다.

 

2. 프로세스 스위칭 (컨텍스트 스위칭) 은 언제 일어나는가?

컨텍스트 스위칭은 다음과 같은 때에 발생합니다.

Five-State Process Model 과 연관지어 살펴봅시다.

Released 는 컨텍스트 스위칭이 일어나는 이유 중 Termination of a process 에 해당합니다.

Event wait 은 컨텍스트 스위칭이 일어나는 이유 중 Blocking System Call 에 해당합니다.

Timeout 은 컨텍스트 스위칭이 일어나는 이유 중 Expiration of time slice 에 해당합니다.

Event Occurs 는 컨텍스트 스위칭이 일어나는 이유 중  I/O Interrupt 에 해당합니다.

 

3. 컨텍스트 스위칭은 어떻게 수행되는가? (컨텍스트 스위칭의 절차)

컨텍스트 스위칭이 일어나는 절차, 4번 과정에는 CPU Scheduler 가 동작한다.

이전 포스팅에서 아래와 같은 그림을 보신 적이 있으실겁니다.

컨텍스트 스위칭이 일어나는 과정

위의 그림과 같이 CPU 의 레지스터에 저장되어있던 값들을 현재 실행 중인 프로세스(old process)의 Context 에 저장하고 PCB 의 메모리 포인터 및 Process State 상태를 Update 합니다. 그 후 실행할 프로세스(new process)의 PCB 의 Process State 상태를 업데이트하고 메모리에 저장되어 있던 new process 의 register 값들을 CPU 에 적재합니다.

 

그리고 커널이 시그널, 인터럽트와 같은 다른 특이사항(Exceptional Control Flow) 들을 체크하고 이상이 없으면 그것을 먼저처리하거나 이상이 없으면 CPU 로 하여금 new process 의 next Instruction 을 수행하게합니다.

 

이 일련의 과정이 컨텍스트 스위칭입니다.

profile

中庸

@짱일모

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!