Having

[OS] 프로세스 간 context switching (feat. process state, PCB) 본문

OS

[OS] 프로세스 간 context switching (feat. process state, PCB)

GHM 2023. 1. 21. 23:42
  • process state
  • PCB
  • process context switching

 

프로세스는 메모리에 올라와 실행 중인 프로그램을 말한다. 

하나의 CPU라는 가정하에, 여러 프로세스가 어떻게 동시에 실행될까?

하나의 CPU는 하나의 작업(task)만 수행할 수 있기 때문에, 여러 프로세스를 동시에 실행할 수 없다.
time-sharing을 통해 여러 프로세스가 빠르게 번걸아가며 실행되는 것이고, 이는 동시에 실행되는 것처럼 보일 뿐이다.

 

 

어떻게 여러 프로세스 간 빠른 작업 전환(process context switching)이 가능한지 알아보기에 앞서,

프로세스의 상태와 PCB가 무엇인지 먼저 확인해보자 !


Process State

: 프로세스가 생성되고 종료될 때까지의 프로세스의 상태 

 

출처 : www.learnpick.in/prime/documents/ppts/details/47/operating-system-processes

 

new : 프로세스가 생성 중인 상태

ready : 메모리에 올라와 CPU 점유를 기다리고 있는 상태

running : CPU를 점유해 instruction을 수행 중인 상태

waiting(block, sleep) : I/O 또는 특정 event 발생으로 대기 중인 상태 (당장 instruction을 수행할 수 없는 상태)

terminated : 모든 instruction 수행을 끝낸 상태

 


PCB(Process Control Block)이란?

출처 : https://yoongrammer.tistory.com/52

PCB는 프로세스에 대한 정보를 담아두는 Block이다.

정보(데이터)를 담는 공간이므로 하나의 자료구조이고, 운영 체제가 프로세스를 관리하기 때문에 운영 체제 커널의 자료구조이다.

아래에서 설명할 프로세스 간 빠른 작업전환(process context switching)을 하기 위한 필요한 정보를 가진다. (context switch에 중요한 역할)

 

PCB 구성 요소

  1. process 정보 : Process Number(고유한 process ID), Process State(new, ready, running..), Process priority
  2. CPU 수행 관련 정보 : Program Counter(해당 프로세스가 다음에 실행할 명령어의 주소), Registers
  3. 메모리 관련 정보 : 프로세스의 메모리(Code, Data, Stack) 주소
  4. 파일 관련 정보

context switching이란?

출처 : https://www.crocus.co.kr/1364

: 프로세스 간 context switching이란 CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정을 말한다. 작업 전환이라고 이해하면 쉬울 것이다.

 

context switching 과정

  1. running 상태인 P0 프로세스에 interrupt or system call 발생
  2. 운영 체제는 P0 의 정보를 PCB0 에 저장하고 실행 중단
  3. 운영 체제는 PCB1 에서 P1 의 정보를 로드하고 실행
  4. P1 에 interrupt 발생
  5. 운영 체제는 P1 의 정보를 PCB1 에 저장하고 실행 중단
  6. 운영 체제는 PCB0 에서 P0 의 정보를 로드하고 실행

 

주의할 점

  1. A 프로세스 -> 커널 -> A 프로세스
  2. A 프로세스 -> 커널 -> B 프로세스

=> 위와 같은 형태로 CPU 제어권이 넘어가면,

      1번은 context switching은 발생하지 않고, 2번은 context switching 발생

 

 

context switching의 단점 : 오버헤드 발생

위에서 process context switching을 프로세스 간 빠른 작업 전환이라고 언급했다. 컨텍스트 스위칭 작업은 빠르지만 delay가 없는 작업은 아니다. P0 에서 P1 로의 컨텍스트 스위칭이 발생할 때, P1 이 곧바로 실행되지는 않는다는 말이다.

위의 그림을 보면, P0 이 running 상태에서 idle(ready or waiting) 상태가 될 때, PCB0 에 정보를 저장하고 PCB1 에서 정보를 가져와야하기 때문이다. PCB 에 값을 넣고 가져올 때는 CPU가 아무런 일도 하지 못하게 된다.

따라서, 컨텍스트 스위칭이 너무 잦으면 오버헤드가 발생하여 성능이 떨어진다. 

 

 

참고자료 

https://www.learnpick.in/prime/documents/ppts/details/47/operating-system-processes

https://www.baeldung.com/cs/process-control-block

https://namu.wiki/w/PCB

https://www.crocus.co.kr/1364