본문 바로가기
카테고리 없음

[CE] Process State (or Process Life Cycle)

by ds31x 2024. 5. 14.

Process States (or Process Life Cycle)

이는 프로세스가 가질 수 있는 상태를 가르키며, 프로세스의 life cycle을 보여준다.

 

프로세스는 프로그램이 실행되기 위해 메인메모리에 적재된 프로그램의 instance라고 할 수 있다.

2023.12.27 - [개발환경] - [CE] Process versus Thread

 

[CE] Process versus Thread

Process versus Thread Process (프로세스) Process는 자신을 위한 독립된 메모리 공간 등의 리소스를 차지한 상태에서 실행 중인 프로그램의 instance 라고 볼 수 있음. 독립된 execution unit (실행 단위)이며, sel

ds31x.tistory.com

 

다음 그림은 프로세스의 life cycle을 7-state 로 나타낸 다이아그램임.

Ready와 Suspended Ready를 묶어 Ready로 표현하고,
Asleep와 Suspeded block을 묶어 Sleep로 표현한
5-state diagram도 있음.

Created (or New) State

해당 프로세스의 관리를 위해 필요한 모든 정보를 저장하게 되는 Process Control Block (PCB)를 OS가 생성한 상태임
(PCB는 main memory에서 OS의 kernel에 할당된 영역에 존재함.)

위 그림에서 Memory는 main memory이고, 이미 Process_1이 할당된 상태(검은색 박스)이므로 Ready State라고 봐야함.

가능한 상태변화

  • Created (or New)상태에서 main memory 에 공간이 충분하면 Ready 상태가 된다 (이 상태변화를 admit이라고 칭함)
  • main memory 공간이 부족하면 swap 영역에 할당되어 Suspended Ready 상태가 된다.

어떤 job을 main memory에 올릴지를 결정하는
Long-term Scheduler에 의해
선택된 프로세스들이 Ready State가 된다.
즉, Job Scheduler라고도 불리는 Long-term Scheduler에 의해
Ready Queue에 어떤 프로세스가 올려질지가 결정됨.


Ready State

프로세스가 생성된 상태로 프로세스가 실행되기 위한 모든 resource를 CPU만 제외하고 할당받은 상태임.
Process Scheduling에 의해 CPU 에 할당되기 전의 대기 상태로 즉시 실행이 가능한 상태임.

Von Neuman Architecture에서
모든 실행될 명령어의 집합(프로그램)main memory에 올려져야 함.

 

 

CPU 할당을 대기하고 있는 Ready State의 프로세스 들은 ready queue에 들어가 있는 상태임.

  • ready queue에서는 FIFO가 기본이나, 사용하는 Process Scheduling에 따라 다름.
  • Process Scheduling 을 하는 스케쥴러를 Short-term Scheduler라고도 부름.

가능한 상태변화

  • Ready 상태에서 CPU를 할당받게 되면,
    PCB의 정보가 CPU내의 register로 복사되고 실제 실행이 되는 running상태가 됨. (이 상태변화를 dispatch라고 칭함)
  • 이 상태에서 main memory가 부족해지는 등의 이유로 Suspended Ready 상태가 될 수도 있음 (이 상태변화를 swap out 또는 suspend 라고 함)

Suspended Ready

main memory에 할당될 공간 등의 부족으로 인해 main memory에 할당을 대기하고 있는 상태.
main memory에 할당될 데이터(memory image라고 불림)를 main memory 대신 swap 공간 (=virtual memory)에 할당된 상태임.

 

가능한 상태변화

  • main memory에 공간이 충분해지면 Ready 상태가 된다. (이를 swap in 또는 Resume 이라고 부름)

어떤 프로세스를 Swap-out 시킬지와 Swap-in 시킬지의 결정은
Medium-term Scheduler에 의해 결정됨.


Running State

프로세스가 실제로 수행되는 상태임.
(하나의 core에서는 오직 하나의 process만이 Running State임.)

 

참고로, 이 상태에서 다른 상태가 되는 모든 경우에 해당 프로세스와 관련된 cpu의 register의 정보로 PCB가 업데이트

(이 과정을 context switching이라고 부름).

 

가능한 상태변화

  • 프로세스들에 할당된 time 이 종료(time out interrupt 발생)되면 다시 Ready State가 됨. (이 상태 변화를 preemption 이라고 함)
  • 혹은 I/O 작업 요청 처럼 특정 resource의 할당이 필요해지는 경우 해당 resource가 할당되는 event를 기다리는 Asleep State가 됨. (Blocked 라고도 불리며, 이 상태 변화를 sleep 또는 block이라고 부름)
  • 또는 이 상태에서 실행 결과로 해당 프로세스에 주어진 job이 종료된 경우엔 terminated 상태가 된다.
더보기

Time SlicingTime Quantum

  • Time Slicing은 대표적인 process scheduling 방식의 하나로, 각 프로세스에 고정된 시간을 할당하여 CPU를 공정하게 분배하는 메커니즘을 의미함.
  • Round Robin 방식(time slicing의 대표적인 예)의 process scheduling에서 각 프로세스가 cpu에서 실행되도록 지정된 고정된 시간을 Time Quantum 이라고 부름.
  • Time Qunatum이 지나치게 짧으면 context switching 이 너무 빈번하게 발생하여 실제 수행보다 더 긴 시간을 context switching에 보내게 되어 성능 감소로 이어짐.
  • 반대로 너무 길면, 컴퓨터 시스템의 responsiveness(반응성)이 떨어진다.

결론적으로 Time Quantum은 Time Slicing (CPU시간을 분배하는 메커니즘)에서 프로세스에게 할당한 CPU사용시간이라고 할 수 있음.


Asleep State

프로세스가 다른 자원이 필요하여 이를 요청하고 할당(~event)을 기다리는 상태(event wait)이다.

프로세스가 요청하는 각 resource별로 Queue가 존재(e.g. I/O Queue)하며 해당 Queue에서 resouce를 대기함

 

가능한 상태변화

  • 요청한 자원을 할당 받으면(=event completion) 실행을 계속할 수 있게 되나 곧바로 Running 상태가 되지는 못하고, 다시 Ready 상태가 된다. (이 상태변화를 wake up이라고 부름)
  • Asleep 상태에서 main memory 공간 부족 등이 발생하면 swap out되어 Suspended Blocked 상태가 될 수도 있다.

Suspended Blocked State

프로세스가 특정 자원을 요청하고 나서 해당 자원의 할당을 기다리는 상태인 점은 Asleep State와 같으나
main memory를 할당받지 못하여 정보가 swap 영역에 있는 상태를 가르킴.

 

가능한 상태변화

  • 요청한 자원을 할당 받으면 Suspended Ready 상태가 된다 (이 상태변화를 wake up이라고 한다.)
  • main memory를 할당 받을 경우 swap in이 일어나서 Asleep 상태가 된다.

Terminated State

프로세스의 수행이 종료된 상태로, 할당받은 자원들을 반납이 이루어지고 해당 프로세스는 소멸됨.
(OS는 이 과정에서 비슷한 job수행들을 위해 커널의 일부 PCB 정보는 남기고 프로세서 관리를 위한 정보를 수집함)

 

종료된 프로세스의 데이터가 OS가 의도치 않게 main memory에 남아 소멸이 제대로 이루어지지 않을 경우를
Zombie State라고도 부름.


참고자료

https://itwiki.kr/w/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_%EC%83%81%ED%83%9C

 

IT위키

IT에 관한 모든 지식. 함께 만들어가는 깨끗한 위키

itwiki.kr

 

https://vmilsh.tistory.com/374

 

운영체제 프로세스 생애주기(Process Lifecycle)에 대해서

안녕하세요? 허니입니다. 운영체제의 프로세스 생애주기(Process Life Cycle)에 대해 포스팅을 하려고 합니다. 프로세스 라이프사이클은 마치 한 사람의 삶의 모습과 닯아 있기 때문에 이해하기 쉬운

vmilsh.tistory.com

-  end -