프로세스의 상태와 상태 전이에 대한 상세 설명
운영체제는 프로세스(Process)를 관리하기 위해 여러 상태로 구분하고, 이 상태들을 전이시켜가며 효율적으로 CPU와 시스템 자원을 분배합니다. 프로세스 상태(Process State)는 각 프로세스의 실행 상황을 정의하는 논리적 구분입니다.
프로세스 상태의 종류와 상세 설명
운영체제의 종류나 구현 방식에 따라 세부 상태가 다를 수 있으나, 대표적으로 사용되는 기본 상태는 다음과 같습니다.
1. New (생성 상태)
프로세스가 생성 중인 상태입니다.
이 단계에서는 PCB가 할당되고 초기화되며, 준비 큐(Ready Queue)에 들어갈 준비를 합니다.
2. Ready (준비 상태)
실행할 준비가 완료되었으나, CPU를 할당받지 못해 대기 중인 상태입니다.
여러 프로세스가 Ready 상태일 수 있으며, 스케줄러가 우선순위나 스케줄링 정책에 따라 선택합니다.
3. Running (실행 상태)
CPU를 할당받아 명령어를 실제로 실행 중인 상태입니다.
동시에 하나의 CPU는 하나의 프로세스만 Running 상태일 수 있습니다. (멀티코어 시스템에서는 각각의 코어가 하나씩 실행 가능)
4. Waiting / Blocked (대기 상태)
프로세스가 I/O 요청 또는 다른 이벤트를 기다리는 상태입니다.
CPU를 사용하지 않고, 입출력이나 특정 조건이 만족되기를 기다립니다.
5. Terminated / Exit (종료 상태)
프로세스가 종료되어 운영체제로부터 자원이 회수되는 상태입니다.
운영체제는 PCB와 메모리 등의 자원을 정리합니다.
프로세스 상태 전이(State Transition) 상세 설명
아래는 상태 간 전이의 주요 경로입니다.
- New → Ready
프로세스가 생성되어 준비 상태 큐에 들어감 - Ready → Running
스케줄러에 의해 CPU가 할당되면 실행 상태로 전이 - Running → Waiting
I/O 요청 또는 이벤트 대기 시 실행을 멈추고 대기 상태로 전이 - Running → Ready
타이머 인터럽트 또는 더 높은 우선순위의 프로세스 등장 시 선점되어 다시 준비 상태로 전이 - Waiting → Ready
대기 조건이 만족되면 다시 실행 준비 상태로 전이 - Running → Terminated
프로세스가 종료 조건을 만나면 종료 상태로 전이
상태 전이 예시 시나리오
사용자 프로세스가 파일을 읽는 과정에서의 전이 예시:
- 프로세스 생성: New → Ready
- CPU 할당: Ready → Running
- 파일 읽기 요청: Running → Waiting
- I/O 완료 후: Waiting → Ready
- 다시 CPU 할당: Ready → Running
- 실행 종료: Running → Terminated
실무에서 프로세스 상태 정보 활용 예시
- ps, top, htop 명령어로 현재 프로세스의 상태를 확인할 수 있으며, STAT 컬럼에서 R(Running), S(Sleeping), Z(Zombie) 등의 형태로 상태를 나타냅니다.
- 모니터링 시스템에서는 CPU 부하 분석이나 스케줄링 문제 해결에 활용됩니다.
- 디버깅 중에 특정 프로세스가 왜 멈췄는지 추적할 때 상태 전이 정보가 결정적입니다.
면접 대비용 질문 및 답변 예시
Q1. Ready와 Waiting 상태의 차이점은 무엇인가요?
A. Ready는 CPU를 기다리는 상태이며, Waiting은 I/O 등 외부 이벤트를 기다리는 상태입니다.
Q2. 프로세스가 Running 상태에서 바로 Terminated로 가지 않는 이유는 무엇인가요?
A. 대부분의 경우 exit 호출 또는 예외 상황이 발생해야 Terminated 상태로 전이됩니다. 이는 OS가 명시적으로 종료 처리를 진행해야 하기 때문입니다.
Q3. 프로세스가 Running 상태임에도 작업이 안 되는 것처럼 보이는 경우는 어떤 경우인가요?
A. 실제로는 매우 짧은 시간 동안만 Running 상태이며, 대다수 시간은 Ready나 Waiting 상태에 있을 수 있습니다. 멀티태스킹 시스템에서는 스케줄링 때문에 자주 상태 전이가 일어납니다.
정리
- 프로세스 상태는 운영체제가 자원을 효율적으로 관리하기 위해 나누는 논리적 실행 단계입니다.
- 대표적인 상태는 New, Ready, Running, Waiting, Terminated 다섯 가지이며, 이들 사이에는 명확한 전이 조건이 존재합니다.
- 상태 전이는 CPU 할당, I/O 요청, 타이머 인터럽트, 프로세스 종료 등의 이벤트에 의해 발생합니다.
- 실무와 면접 모두에서 프로세스 상태 개념은 OS의 핵심 기초 지식으로 반드시 숙지해야 하며, 다양한 도구로 실시간 확인이 가능합니다.
'CS 공부일지 > 운영체제 공부일지' 카테고리의 다른 글
IPC란 무엇인가? 프로세스 간 통신 방식 (0) | 2025.05.03 |
---|---|
멀티프로세싱과 멀티스레딩 차이점 (1) | 2025.05.02 |
PCB와 컨텍스트 스위칭이란? (0) | 2025.05.02 |
프로세스 메모리 구조 정리: 코드, 스택, 힙 (0) | 2025.05.02 |
프로그램의 컴파일 과정 (컴파일러 vs 인터프리터) (1) | 2025.05.02 |