이 글은 공부를 하면서 알게 된 내용들을 기록하는 글입니다. 오류나 고쳐야 할 사항들이 있다면 지적 부탁드립니다!
✅ Process State (프로세스 상태)
실행되고 있는 각 프로세스는 고유의 상태(state)를 가지고 있고, 프로세스가 생성되서 종료될 때까지 상태(state)가 변한다.
프로세스의 상태의 종류에는 5가지가 있으며, 운영체제는 프로세스 스케쥴링 전략을 통해 프로세스의 상태를 변경하여 관리하고 제어한다.
프로세스 상태 | 설명 |
new | 프로세스를 생성하려는 단계이며, 아직 프로세스가 생성되지 않은 상태이다. 아직은 보조 메모리에 있는 프로그램으로 OS가 프로세스 생성을 위해 사용할 것이다. |
ready | 프로세스 생성이 완료되어 메인 메모리에 적재되었으며, processor의 할당을 기다리고 있는 상태(CPU 할당 시 바로 사용 가능한 상태) 실행 준비가 완료된 프로세스들을 위한 ready queue에서 관리된다. |
running | processor가 ready queue에서 프로세스를 선택하여 실행되고 있는 상태 (i.e. processor에 할당되어 실행되고 있는 상태) |
waiting / blocked | 특정 이벤트(ex: I/O에 대한 접근을 요청하거나, 입력이 필요하거나, critical region에 대한 접근이 필요할 때)가 발생하여 대기하고 있는 상태. 프로세스는 메인 메모리에서 대기하고 있지만 processor의 할당은 풀린 상태. 작업이 완료되면 해당 프로세스는 ready queue로 이동하여 processor의 할당을 다시 기다린다. |
terminated | 프로세스가 종료(killed)되며 PCB 또한 함께 삭제된다. 프로세스에게 할당되어 있던 자원들이 할당 해제된다. |
suspended ready | 프로세스가 ready 상태였으나, 스케쥴러에 의해 메인 메모리에서 swap-out 되어 외부 저장장치에 옮겨진 상태 프로세스가 메인 메모리로 다시 적재(swap-in)된다면 프로세스는 다시 ready 상태가 된다. |
suspended wait / suspended blocked |
프로세스가 I/O 작업을 진행하다, 사용하던 메인 메모리가 부족하여 보조 메모리로 이동한 상태 작업이 완료되면 suspended ready 상태가 된다. |
✅ 프로세스의 상태 전이
✏️ Admit (new → ready)
프로세스가 생성된 직후에 그 프로세스는 new 상태이다.
OS가 해당 프로세스에게 자원 할당을 완료하여 실행할 준비가 완료되었을 때 ready 상태로 전환되며,
ready queue로 이동하여 할당을 기다린다.
✏️ schedular dispatch (ready → running)
CPU(processor)가 사용 가능하게 되었을 때, OS는 다양한 스케쥴링 알고리즘(scheduling algorithm)을 통해 다음에 실행할 프로세스를 ready queue에서 선택한다.
선택된 프로세스는 running 상태로 전환된다.
✏️ event wait (running → blocked(waiting))
프로세스가 기다려야하는 이벤트(ex: I/O operation 혹은 system call)가 발생했을 때, 해당 프로세스는 blocked(waiting) 상태로 전환된다.
예를 들어, 프로세스가 사용자의 입력을 받아야 하는 경우, 사용자가 입력을 할 때까지 해당 프로세스는 blocked(waiting) 상태에서 대기한다.
✏️ interrupt / time-out (running → ready)
프로세스가 OS에 의해 선점되는 경우에, 해당 프로세스는 ready 상태로 전환된다.
예를 들어, 현재 실행 중인 프로세스보다 우선순위가 더 높은(higher-priority) 프로세스가 ready 상태가 진입하면,
OS는 해당 프로세스를 실행시키기 위해 현재 실행 중인 프로세스를 ready 상태로 전환할 것이다.
Time-out에 의해서도 interrupt가 발생할 수 있다.
시분할방식에서의 운영체제는 해당 프로세스가 processor를 계속 독점하지 않도록 시간제한을 두는데,
프로세스가 실행되던 중, 주어진 시간(제한 시간)을 모두 사용하면 interrupt를 발생시킨다.
✏️ event occur (blocked(waiting) → ready)
blocked(waiting) 상태의 프로세스가 대기하고 있는 이벤트가 완료되었을 때, 해당 프로세스는 ready 상태로 전환된다.
사용자의 입력이 필요하여 blocked 상태로 전환된 후 대기하고 있던 프로세스를 예로 들어보자.
사용자의 입력이 주어진 경우, 해당 프로세스는 ready 상태로 전환되며 ready queue로 이동한다.
✏️ running → terminated
프로세스의 실행이 완료되거나, OS에 의해 종료되는 경우, 해당 프로세스는 terminated 상태로 전환된다.
✅ 참고 자료 & 링크
- Operating System Concepts 에센셜 2판
- https://www.geeksforgeeks.org/states-of-a-process-in-operating-systems/