컴퓨터공학

프로세스 상태: 생성, 실행, 대기, 종료

nyambu 2025. 3. 6. 09:00

프로세스
프로세스

1. 프로세스란?

컴퓨터에서 프로그램이 실행되면, 운영체제는 해당 프로그램을 **프로세스(Process)**로 관리한다. 즉, 프로세스는 실행 중인 프로그램을 의미하며, CPU와 메모리를 할당받아 동작한다. 운영체제는 컴퓨터의 리소스를 효율적으로 사용하기 위해 여러 개의 프로세스를 동시에 실행할 수 있도록 멀티태스킹(Multitasking) 환경을 제공한다. 이 과정에서 운영체제는 프로세스를 여러 가지 상태로 나누어 관리하며, 각 상태 간 전환이 이루어진다.

1-1. 프로세스와 프로그램의 차이

많은 사람들이 "프로세스"와 "프로그램"을 혼동하지만, 두 개념은 다르다.

 

구분 프로그램 프로세스
정의 실행 가능한 명령어와 데이터의 집합 실행 중인 프로그램
저장 위치 하드디스크(SSD/HDD) RAM(메모리)
실행 여부 실행되지 않은 상태 운영체제에 의해 실행 중
예시 chrome.exe (실행 파일) 크롬을 실행한 후, 여러 개의 열린 탭

 

즉, 프로그램은 단순한 실행 파일이지만, 프로그램이 실행되어 CPU와 메모리를 사용하면 프로세스가 된다.

1-2. 프로세스의 주요 구성 요소

운영체제는 각 프로세스를 독립적으로 실행하기 위해 다음과 같은 주요 구성 요소를 관리한다.

  • 코드(Code) 영역: 프로그램의 실행 명령어가 저장됨
  • 데이터(Data) 영역: 전역 변수, 상수 등의 정보 저장
  • 힙(Heap) 영역: 실행 중 동적으로 할당된 메모리 공간
  • 스택(Stack) 영역: 함수 호출 시 지역 변수와 반환 주소 저장
  • 프로세스 제어 블록(PCB, Process Control Block): 운영체제가 프로세스를 관리하기 위한 정보(프로세스 ID, 우선순위, 상태 등)

1-3. 프로세스의 실무 활용 사례

  • 웹 브라우저 실행
    • 사용자가 크롬(Chrome)을 실행하면 새로운 프로세스가 생성됨
    • 각 탭은 별도의 프로세스로 실행되어 독립적으로 동작 (멀티 프로세스 구조)
  • 백그라운드 서비스
    • 운영체제는 백그라운드에서 자동으로 실행되는 프로세스를 관리함
    • 예: 바이러스 검사 프로그램, 시스템 업데이트, 네트워크 관리 서비스
  • 멀티태스킹 환경
    • 사용자가 문서 편집, 음악 재생, 웹 서핑을 동시에 수행할 때, 운영체제는 여러 개의 프로세스를 관리하여 원활한 멀티태스킹 제공

1-4. 프로세스를 효율적으로 관리하는 이유

운영체제가 프로세스를 상태별로 관리하는 이유는 다음과 같다.

  • CPU 자원을 최적화하여 멀티태스킹 가능
  • 각 프로세스 간 충돌 방지 및 독립적인 실행 보장
  • 불필요한 리소스 낭비 방지 및 성능 최적화

2. 프로세스의 주요 상태

운영체제에서 하나의 프로세스는 다음과 같은 주요 상태를 거친다.

프로세스 상태: 생성, 실행, 대기, 종료
프로세스 상태: 생성, 실행, 대기, 종료

상태 설명
생성(New) 새로운 프로세스가 생성되는 단계
준비(Ready) CPU를 기다리는 상태
실행(Running) CPU를 할당받아 실행 중인 상태
대기(Waiting) I/O 작업 등으로 인해 CPU 사용이 불가능한 상태
종료(Terminated) 실행이 끝나고 운영체제에서 제거된 상태

 

이제 각 상태에 대해 자세히 살펴보자.

2-1. 생성 상태 (New State)

새로운 프로세스가 운영체제에 의해 생성되는 단계이다.

 

✅ 생성 상태에서의 주요 과정

  1. 프로세스 요청
    • 사용자가 응용 프로그램을 실행하거나, 시스템 내부에서 새로운 프로세스를 생성할 경우 발생
    • 예: 사용자가 웹 브라우저(Chrome, Edge)를 실행하면 새로운 프로세스가 생성됨
  2. 운영체제의 초기화 과정
    • 운영체제는 **프로세스 제어 블록(PCB, Process Control Block)**을 생성하여 프로세스를 관리
    • 프로세스의 고유한 ID(PID), 상태 정보, 메모리 할당 정보, 우선순위 등을 설정
  3. 준비 상태로 전환
    • 프로세스가 정상적으로 생성되면 준비(Ready) 상태로 이동하여 실행을 대기

2-2. 준비 상태 (Ready State)

프로세스가 CPU를 할당받을 준비가 완료된 상태이다.

 

✅ 특징

  • 프로세스가 실행될 준비가 되었지만, CPU가 다른 작업을 수행 중이라 아직 실행되지 않음
  • CPU 스케줄러에 의해 실행 순서가 결정됨
  • 운영체제는 여러 개의 프로세스를 Ready Queue(준비 큐)에 저장하여 관리

✅ 예시

  • 사용자가 여러 개의 응용 프로그램을 실행했을 때, 모든 프로그램이 동시에 실행될 수 없으므로 일부는 준비 상태에서 대기
  • 게임을 실행할 때, 메뉴 화면에서 시작 버튼을 누르기 전까지 프로세스는 Ready 상태에 있음

2-3. 실행 상태 (Running State)

프로세스가 CPU를 할당받아 실행 중인 상태이다.

 

✅ 특징

  • 운영체제는 CPU 스케줄링 알고리즘을 사용하여 Ready 상태의 프로세스 중 하나를 선택해 CPU를 할당
  • 멀티코어 CPU 환경에서는 여러 개의 프로세스가 동시에 실행될 수 있음
  • 특정 조건이 발생하면 대기(Waiting) 상태 또는 준비(Ready) 상태로 변경될 수 있음

✅ 상태 전환 조건

  • I/O 요청 발생대기(Waiting) 상태로 이동
  • CPU 할당 시간이 초과됨다른 프로세스에 CPU 할당 (Ready 상태로 전환)
  • 프로세스가 정상적으로 종료됨종료(Terminated) 상태로 이동

✅ 예시

  • 문서 편집기를 실행하여 타이핑할 때, CPU가 해당 프로세스에 할당되어 실행됨
  • 동영상 플레이어가 영상을 재생할 때, CPU가 지속적으로 데이터를 처리하여 화면에 출력

2-4. 대기 상태 (Waiting State)

프로세스가 I/O 작업을 기다리는 상태이다.

 

✅ 특징

  • CPU를 사용하지 않고, 입출력 작업(I/O)을 대기 중인 상태
  • 키보드 입력, 파일 읽기/쓰기, 네트워크 요청 등의 작업이 발생하면 대기 상태로 이동
  • I/O 작업이 완료되면 다시 Ready 상태로 돌아가 CPU를 기다림

✅ 예시

  • 사용자가 웹 브라우저에서 웹사이트를 열면, 네트워크에서 데이터를 받아오는 동안 대기 상태로 전환됨
  • 프린터에 문서를 출력할 때, 프린터가 준비될 때까지 프로세스는 Waiting 상태로 이동

2-5. 종료 상태 (Terminated State)

프로세스가 실행을 완료하고 운영체제에서 제거되는 상태이다.

 

✅ 특징

  • 정상적인 종료 또는 오류로 인해 프로세스가 종료됨
  • 운영체제는 PCB(프로세스 제어 블록)를 삭제하고, 할당된 메모리를 해제
  • 일부 프로세스는 자식 프로세스를 생성 후 종료될 수도 있음 (예: 부모 프로세스가 자식 프로세스를 실행한 후 종료됨)

✅ 예시

  • 사용자가 엑셀, 크롬, 게임 등의 프로그램을 종료하면 해당 프로세스가 Terminated 상태로 이동
  • 프로그램이 비정상적으로 충돌(크래시)하여 종료되면 운영체제가 강제로 프로세스를 종료함

3. 프로세스 상태 전이 (State Transition)

운영체제에서 하나의 프로세스는 실행되는 동안 여러 상태를 오가며 동작한다.
이러한 상태 전이를 운영체제가 관리하여, CPU 자원을 효율적으로 사용하고 멀티태스킹을 원활하게 수행할 수 있도록 한다.

3-1. 프로세스 상태 전이 흐름

하나의 프로세스는 다음과 같은 상태 전이를 거친다.

 

1️⃣ 생성(New) → 준비(Ready)

  • 새로운 프로세스가 생성되면, 운영체제는 해당 프로세스를 준비 상태(Ready)로 이동시킨다.
  • 예시: 사용자가 웹 브라우저를 실행하면, 브라우저 프로세스가 생성되며, CPU 할당을 기다리는 준비 상태가 된다.

2️⃣ 준비(Ready) → 실행(Running)

  • 운영체제의 **CPU 스케줄러(CPU Scheduler)**가 준비 큐(Ready Queue)에 있는 프로세스 중 하나를 선택하여 실행한다.
  • 예시: 사용자가 브라우저에서 검색 버튼을 클릭하면, 해당 요청을 처리하기 위해 브라우저 프로세스가 CPU를 할당받아 실행된다.

3️⃣ 실행(Running) → 대기(Waiting)

  • 실행 중인 프로세스가 I/O 작업(입출력, 네트워크 요청 등)을 수행해야 하는 경우, CPU를 반납하고 대기 상태로 전환된다.
  • 예시: 사용자가 웹사이트를 방문하면, 네트워크에서 데이터를 다운로드하는 동안 브라우저는 대기 상태가 된다.

4️⃣ 대기(Waiting) → 준비(Ready)

  • 대기 상태에 있던 프로세스가 I/O 작업이 완료되면 다시 준비 상태로 돌아가 CPU를 기다린다.
  • 예시: 웹 브라우저가 네트워크에서 데이터를 다 받아오면 다시 실행 가능 상태가 되어 준비 큐로 이동한다.

5️⃣ 실행(Running) → 종료(Terminated)

  • 프로세스가 실행을 마치고 더 이상 수행할 작업이 없으면 운영체제는 해당 프로세스를 종료 상태로 이동시킨다.
  • 예시: 사용자가 브라우저를 닫으면, 관련된 모든 프로세스가 종료(Terminated) 상태로 이동하고 운영체제에서 제거된다.

3-2. 프로세스 상태 전이의 주요 원인

  • CPU 할당 (Ready → Running)
    • CPU가 준비 상태의 프로세스 중 하나를 선택하여 실행할 때 발생
    • 예시: 다중 작업 환경에서 특정 응용 프로그램이 CPU를 할당받아 실행됨
  • I/O 요청 (Running → Waiting)
    • 프로세스가 파일 읽기/쓰기, 네트워크 요청 등의 작업을 수행하기 위해 CPU를 반납할 때 발생
    • 예시: 음악 스트리밍 서비스에서 새로운 곡을 불러오는 동안 대기 상태가 됨
  • I/O 완료 (Waiting → Ready)
    • 대기 상태에 있던 프로세스가 I/O 작업을 완료하고 다시 CPU 실행 대기 상태로 돌아올 때 발생
    • 예시: 네트워크 요청이 완료되어 웹 페이지가 로드되면 다시 실행 가능 상태가 됨
  • 타임 슬라이스 초과 (Running → Ready)
    • 선점형 스케줄링 방식에서, 프로세스가 CPU를 일정 시간 사용한 후 다른 프로세스에게 CPU를 넘겨줄 때 발생
    • 예시: 라운드 로빈(Round Robin) 스케줄링 방식에서 일정 시간 동안만 CPU를 사용한 후 다른 프로세스로 교체됨
  • 프로세스 종료 (Running → Terminated)
    • 프로그램이 정상적으로 실행을 완료하거나, 오류가 발생하여 종료될 때 발생
    • 예시: 문서 편집기를 닫으면 해당 프로세스가 종료됨

3-3. 프로세스 상태 전이 예제 (실제 시나리오)

예제: 사용자가 웹 브라우저를 실행하는 과정

 

1️⃣ 사용자가 크롬 브라우저 실행 버튼을 클릭New (생성 상태)

  • 운영체제가 새로운 크롬 프로세스를 생성

2️⃣ 운영체제가 크롬을 준비 상태로 이동Ready (준비 상태)

  • 크롬 프로세스가 실행 대기 큐에 등록됨

3️⃣ CPU가 크롬 프로세스를 선택하여 실행Running (실행 상태)

  • 크롬이 실행되며, 메인 창이 표시됨

4️⃣ 사용자가 웹사이트를 입력하고 접속 버튼을 누름Waiting (대기 상태)

  • 크롬이 네트워크에서 데이터를 받아오는 동안 CPU를 반납하고 대기 상태로 전환

5️⃣ 웹사이트 데이터 다운로드 완료Ready (준비 상태)

  • 데이터가 모두 로드되면, 크롬 프로세스는 다시 준비 상태가 됨

6️⃣ CPU가 크롬을 다시 실행하여 웹페이지를 렌더링Running (실행 상태)

  • 페이지가 완전히 로드되고 사용자가 볼 수 있도록 화면에 표시됨

7️⃣ 사용자가 브라우저를 닫음Terminated (종료 상태)

  • 크롬 프로세스가 종료되고, 운영체제에서 제거됨