[OS]프로세스 상태

2025. 3. 23. 13:40·CS/운영체제

1. 프로세스의 주요 상태

1-1. 생성 상태(New)

프로세스가 생성되고 메모리에 적재될 준비가 된 상태

커널 영역에 새로운 프로세스 제어 블록(PCB)이 생성됨

프로세스가 생성되면 준비 상태로 이동

1-2. 준비 상태(Ready)

CPU를 점유하기 위해 대기하는 상태

준비 큐(Ready Queue)에서 차례를 기다림

CPU 스케줄러에 의해 실행될 프로세스가 결정됨

1-3. 실행 상태(Running)

CPU를 점유하고 있는 상태

주어진 시간(Time Slice) 동안 실행됨

다음과 같은 경우 상태가 변경됨

타임아웃이 발생하면 준비 상태로 전환

입출력을 요청하면 대기 상태로 전환

작업이 완료되면 종료 상태로 전환

1-4. 대기 상태(Wait/Block)

실행 중인 프로세스가 입출력(I/O) 작업을 요청하면, I/O가 완료될 때까지 기다리는 상태

예시:

디스크에서 파일을 읽어오는 동안 대기

키보드 입력을 기다리는 동안 대기

입출력이 완료되면 준비 상태로 전환됨

1-5. 완료 상태(End/Termination)

프로세스의 실행이 종료된 상태

모든 자원을 반납하고 PCB가 삭제됨

2. 추가적인 프로세스 상태

2-1. 보류 상태(Suspend State)

프로세스가 메모리에서 잠시 쫓겨난 상태

"일시 정지 상태"라고도 하며, 메모리 밖(스왑 영역)에 임시 보관됨

다음과 같은 경우 발생

1. 실행 메모리가 부족할 때

2. 프로그램 오류로 인해 실행이 미뤄지는 경우

3. 악의적인 공격(잘못된 자원 접근)이 의심될 때

4. 입출력 지연으로 인해 대기가 길어지는 경우

2-2. 휴식 상태(Pause State)

프로세스가 일시적으로 실행을 멈춘 상태

PCB와 메모리에 데이터는 그대로 유지됨

Unix/Linux 명령어에서 예시

1. [Ctrl + Z] 입력 시 프로세스 상태가 stopped로 변경

2. fg 명령어로 포그라운드에서 다시 실행 가능

3. bg 명령어를 사용하면 백그라운드에서 실행 가능

4. [Ctrl + C] 입력 시 프로세스를 강제 종료

3. CPU 스케줄러(CPU Scheduler)

준비 상태에 있는 여러 프로세스 중 다음에 실행할 프로세스를 선정하는 역할

CPU 점유 기회를 공정하게 분배하는 것이 핵심

3.1 디스패치(Dispatch)

준비 상태에서 실행 상태로 프로세스를 이동시키는 과정

CPU 스케줄러가 실행할 프로세스를 선정하면, 디스패처(Dispatcher)가 이를 CPU에 할당

컨텍스트 스위칭(Context Switching)을 수행하여 이전 프로세스의 상태를 저장하고 새 프로세스를 불러옴

매우 빠르게 수행되어야 하며, 스케줄링 오버헤드 최소화가 중요함

4. 상태 전이(Process State Transition)

현재 상태 이벤트 다음 상태
생성 프로세스 생성 완료 준비
준비 CPU 할당 실행
실행 타임아웃 발생 준비
실행 입출력 요청 대기
실행 실행 종료 완료
대기 입출력 완료 준비
준비 또는 대기 메모리 부족 보류
보류 메모리 공간 확보 준비

 

'CS > 운영체제' 카테고리의 다른 글

[OS]프로세스 구조, 오버 플로우  (0) 2025.03.23
[OS]문맥 교환  (0) 2025.03.23
[OS]프로세스 제어 블록(PCB, Process Control Block)  (0) 2025.03.23
[OS]프로그램, 프로세스, 프로세서  (0) 2025.03.23
[OS]일괄 작업 방식, 시분할 방식  (0) 2025.03.22
'CS/운영체제' 카테고리의 다른 글
  • [OS]프로세스 구조, 오버 플로우
  • [OS]문맥 교환
  • [OS]프로세스 제어 블록(PCB, Process Control Block)
  • [OS]프로그램, 프로세스, 프로세서
yxxjxxeee
yxxjxxeee
  • yxxjxxeee
    공부 일지
    yxxjxxeee
  • 전체
    오늘
    어제
    • study N
      • Framework
        • Spring
      • Language
        • JavaScript
        • C | C++
        • JAVA
        • PHP
      • CS
        • 네트워크
        • 자료구조
        • 데이터베이스
        • 운영체제
      • DBMS
        • MySQL
      • 코딩테스트 N
        • 백준 N
        • 프로그래머스
        • LeetCode
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 쇼핑몰 제작 프로젝트(PHP)
    • github
  • 공지사항

  • 인기 글

  • 최근 글

  • hELLO Designed By 정상우
    Version v4.10.2
yxxjxxeee
[OS]프로세스 상태
상단으로

티스토리툴바