
운영체제에서 프로세스(Process)는 실행 중인 프로그램을 의미합니다. 하지만 하나의 프로그램이 항상 실행 상태에 있는 것은 아닙니다. 프로세스는 실행을 준비하거나, 대기하거나, 종료되는 등 다양한 상태를 거칩니다. 이러한 상태를 시각적으로 나타낸 것이 Process State Transition Diagram입니다. 이번 글에서는 프로세스의 상태와 전이 과정을 쉽게 이해할 수 있도록 정리해 보겠습니다.

프로세스의 주요 상태
- Created (생성 상태)
- 프로세스가 막 생성된 초기 상태입니다.
- 아직 CPU를 할당받지 않았으며 실행 준비 중입니다.
- 다음 상태: Ready 상태로 전환.
- Ready (준비 상태)
- 프로세스가 실행 준비를 마친 상태로, CPU를 할당받기 위해 대기합니다.
- CPU 스케줄러에 의해 선택되면 Running 상태로 전환됩니다.
- 특징: 메모리와 필요한 자원이 할당된 상태지만 아직 실행 중은 아님.
- Running (실행 상태)
- 프로세스가 CPU를 할당받아 실행 중인 상태입니다.
- 이 상태에서 실제 작업(명령어 실행)을 수행합니다.
- 다음 상태:
- 작업이 완료되면 Terminated로 전환.
- I/O 요청 등으로 대기 상태가 필요하면 Asleep으로 전환.
- 선점형 스케줄러에 의해 CPU가 다른 프로세스로 넘어가면 다시 Ready로 전환.
- Asleep (차단 상태)
- 프로세스가 I/O 작업이나 자원 대기로 인해 실행을 멈춘 상태입니다.
- 예: 파일 읽기, 네트워크 응답 대기 등.
- I/O 작업이 완료되면 Ready 상태로 전환되어 다시 실행 준비를 합니다.
- Suspended Ready (준비 상태에서 일시 중단)
- Ready 상태의 프로세스가 메모리 부족 등으로 디스크로 스왑 아웃된 상태입니다.
- 다음 상태: 스왑 인 후 Ready로 복귀.
- Suspended Blocked (차단 상태에서 일시 중단)
- Asleep 상태에서 메모리 부족으로 인해 스왑 아웃된 상태입니다.
- 다음 상태: 스왑 인 후 Asleep으로 복귀.
- Terminated (종료 상태)
- 프로세스가 모든 작업을 완료한 상태입니다.
- CPU와 메모리 등 자원이 해제되며, 더 이상 실행되지 않습니다.
상태 간 전이 과정 (프로세스가 프로세서를 할당받는 경우 포함)
- Created → Ready:
- 프로세스가 생성되고 실행 준비를 마친 상태입니다.
- 이 시점에서 CPU는 아직 할당되지 않았습니다.
- Ready → Running:
- CPU 스케줄러에 의해 선택된 프로세스가 CPU를 할당받으면 실행 상태로 전환됩니다.
- 이 전이는 운영체제의 스케줄링 정책에 따라 결정됩니다(예: 우선순위, 타임슬라이스 등).
- Running → Ready:
- 프로세스가 실행 도중 타임아웃(타임 슬라이스 종료)되거나, 선점형 스케줄러에 의해 CPU를 다른 프로세스에 넘기게 되면 다시 준비 상태로 돌아갑니다.
- Running → Asleep:
- 실행 중인 프로세스가 I/O 작업을 요청하거나 자원을 기다리게 되면 Asleep 상태로 전환됩니다.
- 예: 디스크에서 파일 읽기 요청, 네트워크 데이터 대기.
- Asleep → Ready:
- 대기하던 작업(I/O 등)이 완료되면 다시 준비 상태로 돌아옵니다.
- 이때, CPU는 여전히 다른 프로세스가 사용 중일 수 있습니다.
- Running → Terminated:
- 작업을 모두 완료한 프로세스는 종료 상태로 전환됩니다.
- CPU와 메모리 등 모든 자원이 해제됩니다.
- Ready ↔ Suspended Ready:
- 준비 상태의 프로세스가 메모리 부족으로 일시 중단되거나, 다시 활성화되면 전환됩니다.
- Asleep ↔ Suspended Blocked:
- 차단 상태의 프로세스가 메모리 부족으로 일시 중단되거나 복구됩니다.
CPU와 자원의 관점에서 본 상태 이해
- CPU 할당:
프로세스가 Ready 상태에서 Running으로 전환되려면 반드시 CPU를 할당받아야 합니다.
이 과정은 스케줄러가 우선순위, 실행 시간 등을 고려해 결정합니다. - 자원 요청:
프로세스가 실행 중에 I/O 작업이나 자원을 요청하면 Asleep 상태로 전환됩니다.
작업이 완료되면 Ready 상태로 복귀하여 다시 CPU 할당을 기다립니다. - 메모리 부족:
운영체제는 메모리 부족 시 프로세스를 디스크로 스왑 아웃(Swap Out)하여 Suspended 상태로 전환합니다.
스왑 인(Swap In)되면 다시 활성화됩니다.
핵심 요약
- 프로세스는 생성 → 준비 → 실행 → 대기/종료의 상태 전이를 거칩니다.
- 실행 상태(Running)로 전환되려면 CPU를 할당받아야 하며, 이는 스케줄러가 결정합니다.
- 자원 요청이나 메모리 부족 등으로 인해 차단 상태(Asleep)나 일시 중단 상태(Suspended)로 이동할 수 있습니다.
반응형
'Computer Science > Operating System' 카테고리의 다른 글
[Operating System & Concurrency] 프로세서, 프로세스, 스레드, 코루틴의 개념과 관계 정리 (0) | 2025.03.06 |
---|---|
[Operating System] 프로세서, 코어, 프로세스, 스레드를 쉽게 이해하기: 공장 비유로 살펴보기 (0) | 2025.02.26 |
프로세스와 스레드 (0) | 2025.01.24 |
운영체제란 무엇인가? (0) | 2025.01.24 |