프로세스 주요 상태 정리

2024. 10. 14. 12:56·Category/정보처리기사
728x90

프로세스 상태 전이도(Process State Transition Diagram)

프로세스 상태 전이도는 운영체제에서 프로세스가 생명 주기 동안 어떠한 상태 변화를 겪는지 설명하는 도식입니다. 프로세스는 생성부터 종료까지 다양한 상태를 거치며 실행되고, 각 상태 간의 전이는 시스템 자원의 가용성과 프로세스의 작업에 따라 달라집니다.

프로세스의 주요 상태

  1. New (생성 상태):
    • 프로세스가 처음 생성된 상태입니다. 프로세스 제어 블록(PCB)이 만들어지고, 시스템이 프로세스를 준비하는 단계입니다.
    • 이 상태에서 프로세스는 아직 CPU에 의해 실행되지 않았습니다.
  2. Ready (준비 상태):
    • 프로세스가 실행될 준비가 된 상태로, CPU를 기다리고 있는 상태입니다.
    • 프로세스는 실행 가능한 상태이지만, CPU가 다른 작업을 수행 중이어서 실행되지 않은 상태입니다.
    • 여러 프로세스가 동시에 준비 상태에 있을 수 있으며, 스케줄러가 이들 중 하나를 선택해 CPU에 할당합니다.
  3. Running (실행 상태):
    • CPU에서 실행 중인 상태입니다. 프로세스는 명령어를 수행하고, CPU를 사용하고 있습니다.
    • 하나의 CPU는 동시에 하나의 프로세스만 실행할 수 있습니다.
    • 프로세스가 완료되거나 입출력(I/O) 요청 등으로 인해 CPU를 포기해야 할 때까지 이 상태에 머무릅니다.
  4. Blocked (대기 상태):
    • 입출력(I/O) 등의 이벤트를 기다리는 상태입니다. 프로세스가 CPU를 사용하지 않고 외부 작업을 기다리고 있을 때 이 상태에 들어갑니다.
    • 예를 들어, 파일을 읽거나 쓰는 작업, 네트워크 통신 대기 등으로 인해 프로세스가 일시적으로 멈춰 있을 수 있습니다.
    • 대기 상태가 해소되면 다시 준비 상태로 전환됩니다.
  5. Terminated (종료 상태):
    • 프로세스가 실행을 완료하고 종료된 상태입니다. 프로세스가 작업을 끝마치면 운영체제는 그 프로세스를 종료 상태로 전환하고, 자원을 반환하게 됩니다.

프로세스 상태 전이 (Process State Transitions)

  1. New → Ready:
    • 프로세스가 생성되면 시스템은 초기화 작업을 수행한 후 준비 상태로 전환됩니다.
  2. Ready → Running:
    • 스케줄러가 준비 상태에 있는 프로세스 중 하나를 선택해 CPU를 할당하면, 프로세스는 실행 상태로 전환됩니다.
  3. Running → Ready:
    • 시간 할당량(Time Slice)이 끝나거나 선점 스케줄링에 의해 CPU가 다른 프로세스로 넘어가면, 실행 중이던 프로세스는 다시 준비 상태로 돌아갑니다.
  4. Running → Blocked:
    • 프로세스가 입출력(I/O) 작업을 요청하거나 이벤트를 기다릴 때, 실행 상태에서 대기 상태로 전환됩니다. 이 경우, CPU를 포기하고 외부 작업을 기다립니다.
  5. Blocked → Ready:
    • 대기 상태에서 필요한 작업(입출력 등)이 완료되면, 프로세스는 다시 준비 상태로 전환되어 CPU 할당을 기다리게 됩니다.
  6. Running → Terminated:
    • 프로세스가 작업을 모두 끝마치면 종료 상태로 전환됩니다. 프로세스는 더 이상 실행되지 않으며, 시스템 자원은 해제됩니다.
  7. Blocked → Terminated:
    • 프로세스가 대기 상태에 있는 동안 강제로 종료될 수도 있습니다(사용자 명령 또는 시스템 오류 등으로).

프로세스 상태 전이도 요약

  1. New → Ready: 프로세스 생성 후 준비 완료.
  2. Ready → Running: CPU 할당을 받아 실행.
  3. Running → Ready: 시간 종료 또는 선점으로 다시 준비 상태로.
  4. Running → Blocked: 입출력 또는 이벤트 대기.
  5. Blocked → Ready: 대기 작업 완료 후 다시 CPU 할당 대기.
  6. Running → Terminated: 작업 완료 후 종료.

프로세스 상태 전이도의 예시

  • 멀티태스킹 시스템에서는 여러 프로세스가 동시에 실행되는 것처럼 보이지만, 실제로는 스케줄러가 프로세스를 빠르게 전환하며 CPU를 할당하는 방식입니다.
  • 입출력 요청이 많은 프로세스는 자주 대기 상태로 전환되며, 대기 상태에서 입출력 작업이 완료되면 다시 준비 상태로 돌아갑니다.

결론

프로세스는 시스템 자원을 사용하며 여러 상태를 전이합니다. 이러한 상태 전이 과정을 이해하면 운영체제의 스케줄링과 자원 관리 방식을 보다 깊이 있게 이해할 수 있습니다. 프로세스 상태 전이도는 프로세스가 CPU와 자원을 효율적으로 사용할 수 있도록 관리하는 핵심 개념입니다.

728x90

'Category > 정보처리기사' 카테고리의 다른 글

데이터베이스 회복(Recovery) 기법 정리  (2) 2024.10.14
데이터베이스 이상 현상(Anomalies) 정리  (2) 2024.10.14
테스트 오라클(Test Oracle)이란?  (0) 2024.10.14
가용성(Availability)이란?  (0) 2024.10.14
유닉스(Unix)란?  (0) 2024.10.14
'Category/정보처리기사' 카테고리의 다른 글
  • 데이터베이스 회복(Recovery) 기법 정리
  • 데이터베이스 이상 현상(Anomalies) 정리
  • 테스트 오라클(Test Oracle)이란?
  • 가용성(Availability)이란?
Corinee
Corinee
  • Corinee
    Coding Note
    Corinee
  • 전체
    오늘
    어제
    • 분류 전체보기 (356) N
      • Category (351) N
        • Algorithm (7)
        • SQL (2) N
        • Java (4)
        • C (9)
        • React (7)
        • JavaScript (9)
        • CSS (2)
        • Node (1)
        • SpringBoot (26)
        • Database (3)
        • Network (1)
        • Django (6)
        • Python (21)
        • Flask (4)
        • iOS (25)
        • Swift (4)
        • Flutter (11)
        • Dart (3)
        • Git (1)
        • Firebase (1)
        • Gof (1)
        • 정보처리기사 (112)
        • AI (5)
        • NestJs (4)
        • Docker (1)
        • 사이드 프로젝트 (1)
        • Note (78) N
        • Socket (1)
        • 개인 정보 처리 방침 (1)
        • 회고 (0)
        • Vue.js (0)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    javascript 필수 문법
    stdlib.h
    소프트웨어 버전 관리
    Jest
    math.h
    inp
    useEffect
    Collections
    jackson 라이브러리
    semver)
    react
    x.y.z (메이저.마이너.패치)
    프로세스 강제 종료
    json.parse(json.stringify())
    react router
    structuredclone()
    defaultdict
    named export vs default export
    mermaid-cli
    core web vitals
    ajax (asynchronous javascript and xml)
    intellij 콘솔 한글 깨짐
    public vs assets
    원시값(primitive)
    시맨틱 버전(semantic versioning
    counter
    쉽게 풀어쓴 C언어 Express
    중첩 함수(nested function)
    chrome extension 자동 배포
    styled-components
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Corinee
프로세스 주요 상태 정리
상단으로

티스토리툴바