OS

[운영체제] 프로세스의 상태(Process State) 란?

ch010104 2025. 3. 26. 12:37

1. 다중 프로그래밍 (Multiprogramming)

  • 정의: 여러 작업을 메모리에 동시에 올려두고, CPU가 놀지 않도록 다른 작업을 실행하는 기법

    - 예를 들어, CPU가 입출력 장치 작업(프린터기 복사)을 하고 있다고 하면, 이는 매우 오래 걸리는 작업이기 때문에 해당 프로세스를 Waiting 상태로 돌림(이후, CPU가 입출력 완료 인터럽트를 받게 되면 다시 Ready 상태로 전환).

    - 프로세스가 Waiting 상태일 경우, CPU는 놀고 있는 상태이기 때문에, 메모리에 있는 다른 프로세스의 작업을 수행(CPU가 입출력 완료 인터럽트를 받으면 이 작업도 중지하여, Ready 상태로 전환)
  • 장점:
    • CPU 사용률을 높임
    • I/O 때문에 하나의 작업이 대기할 때 → 다른 작업이 CPU 사용 가능
  • 단점 (단일 작업 기법의 경우):
    • I/O 동안 CPU가 놀게 됨 (유휴 상태 발생)
    • CPU와 I/O 장치를 동시에 사용 못 함

2. 시분할 시스템 (Timesharing) / 멀티태스킹 (Multitasking)

  • 정의: 여러 프로세스(또는 사용자)가 CPU 시간을 분할해서 번갈아 사용하는 방식
  • 특징:
    • CPU를 짧은 시간 단위로 나눠 각 프로세스에 배분
    • 빠른 전환 덕분에 동시 실행되는 것처럼 보임
  • 다중 사용자 시스템 지원:
    • 여러 사용자가 하나의 시스템을 공유하지만, 마치 자신이 단독으로 사용하는 것처럼 느끼게 됨(실제로는, CPU가 여러 사용자의 요청을 빠르게 전환하면서 처리)

3. 프로세스 상태 (Process States)

상태 설명
New 프로세스가 생성되는 중
Ready 실행 준비 완료, CPU 할당 대기 중
Running CPU를 사용 중인 상태 (오직 1개만 존재)
Waiting I/O 같은 이벤트를 기다리는 상태
Terminated 프로세스 실행 종료 상태
  • 한순간에 CPU는 오직 하나의 프로세스만 실행할 수 있음
  • 나머지는 Ready 또는 Waiting 상태에 있음

  • New 상태에서 프로세스가 생성됨.
    - 프로세스가 생성되면서 메모리의 비어 있는 공간을 찾아서, 이 프로세스의 PCB에 주소를 할당해서 저장해줌.
  • Ready 상태에서 요청이 들어온 프로세스에 대해 실행 권한이 있는지 판단 후 통과
    - 다중 사용자 프로그램(리눅스) 에서 다른 사용자가 내 프로세스를 실행하면 안되게 때문에 권한 확인(파일의 rwx 권한 확인)
  • Running 상태에서는 프로세스의 작업을 처리함
    - 입출력 작업 등 오래 걸리는 작업의 경우 waiting 상태로 바꿔, 입출력 작업 완료 인터럽트를 받을 때까지 대기
    - 대기하는 동안에는 CPU는 다른 프로세스 작업을 처리
    - 이 과정에서 프로세스의 PCB에 저장된 프로세스의 주소값을 PC에 넘겨주는데, 인터럽트 요청으로 인해 프로세스가 실행되는 경우에는 그 프로세스의 PCB에서 주소값을 가져와 PC에 저장함.( 어떠한 프로세스를 우선적으로 처리할 것인가는 scheduler dispatch의 프로그래밍 내용에 따라 판단)
  • Waiting 상태에서는 입출력 완료 인터럽트를 받을 때까지 대기
    - 인터럽트를 받으면 Running이 아닌 Ready로 돌아가서 scheduler dispatch의 우선순위에 따라 다시 실행될 프로세스를 선택
  • Terminated 상태에서는 작업이 완료된 프로세스를 제거함.

4. 프로세스 상태 변화 예시( I/O 요청 발생 )

  1. PID=1이 CPU에서 실행 중 (Running)
  2. I/O 요청 발생 → Waiting 상태로 전환
  3. Ready 상태에 있던 PID=2가 CPU를 할당받아 Running 상태로 전환(CPU가 놀게 하지 않기 위함)

  1. PID=1은 I/O 완료 후 인터럽트를 통해 Ready 상태로 복귀
  2. 현재 CPU를 사용 중이던 PID=2가 일정 시간 사용 후 Ready 상태로 이동
  3. PID=3이 CPU를 할당받아 Running 상태로 전환(스케줄러가 PID 3번을 다음 작업으로 선택)

➡️ 여기서 포인트는 CPU의 프로세스 할당은 Ready 상태 중에서 스케줄러가 선택한다는 점!( 어떤 기준으로 선택하는지는 scheduler의 프로그래밍된 내용에 따라 달라짐 )