본문 바로가기

공부의 기록/Operating System

[운영 체제] 프로세스와 프로세스의 상태

728x90

⬛ Process

  • 프로그램이 메모리를 할당받으면 프로세스가 된다. → 프로세스는 실행 중인 프로그램을 의미

 

⬛ Process Control Block(PCB)

  • 프로세스가 생성되는 동시에 생성되며 각 프로세스들에 대한 정보를 저장하여 프로세스들을 관리하는 자료 구조
  • 각 프로세스에 대한 PCB는 커널 공간에 존재한다.
  • PCB가 관리하는 정보들
    • PID(Process Identification Number) : 프로세스 고유 식별 번호
    • 스케줄링 정보 : 프로세스 우선 순위 등
    • 프로세스 상태 : 생성, 준비, 실행, 대기, 완료 상태
    • 메모리 관리 정보 : 프로세스의 주소 공간 등
    • 입출력 상태 정보 : 프로세스에 할당된 입출력 장치, 파일 등에 대한 정보 등
    • 문맥 저장 영역(context save area) : 프로세스의 레지스터 상태를 저장하는 공간 등
    • 계정 정보

 

⬛ 프로세스 상태

◼ Created State 

  • 사용자가 요청한 작업이 커널에 등록되고 프로세스와 PCB가 생성되는 단계

◼ Ready State

  • 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
  • 프로세스가 메모리에 적재되고 프로세서 외에 다른 모든 필요한 자원을 할당 받은 상태
  • 프로세서를 할당받는다면 바로 실행이 가능한 상태
  • 프로세서를 할당받으면 Running 상태로 전이된다. 이러한 경우를 Dispatch(Ready → Running)라고 한다.

◼ Running State

  • 프로세서와 이외에 다른 모든 필요한 자원을 할당 받아 실행되는 상태
  • 프로세스 수행이 완료되기 전에 프로세서 할당 시간이 끝나면(Time run-out) 프로세스는 Ready 상태로 전이된다. 이러한 경우를 Preemption(Running → Ready)이라고 한다.
  • 실행중인 프로세스에 I/O등의 자원 할당이 필요할 때 자원을 기다리게 되는 Asleep 상태로 전이된다. 이러한 경우를 Block(Running → Asleep)이라고 한다.

◼ Asleep State 

  • I/O등의 자원을 할당받을 때까지 대기하고 있는 상태
  • I/O등의 자원 요청이 완료되어 할당받으면 Ready상태로 전이된다. 이러한 경우를 Wakeup(Asleep → Ready)이라고 한다.

◼ Suspended ready State

  • 프로세스가 메모리에 적재되지 못하고 프로세서 외에 다른 모든 필요한 자원을 할당 받은 상태

◼ Suspended block State

  • 프로세스가 메모리에 적재되지 못하고 프로세서 외의 다른 자원들도 할당받지 못한 상태

◼ Terminate State

  • 프로세스가 모든 자원을 반납하고 완전히 종료된 상태

 

⬛ 프로세스 상태 전이

◼ Dispatch(Schedule) : Ready → Running

  • 프로세스가 프로세서를 할당받아 Ready 상태에서 Running 상태가 되는 것

◼ Time run-out(Preemption) : Running → Ready

  • 프로세스가 프로세서를 빼앗겨 Running 상태에서 Ready 상태가 되는 것

◼ Block : Running → Asleep

  • 프로세스가 I/O와 같은 자원을 빼앗겨 자원을 기다리는 상태

◼ Wakeup : Asleep → Ready

  • 프로세스가 프로세서 외의 필요한 자원을 할당받아 Asleep 상태에서 Ready 상태가 되는 것

◼ Swap-out

  • 메모리에 적재되었던 프로세스의 적재가 해제되어 지연 상태(Suspended)가 되는 것

◼ Swap-in

  • 프로세스가 메모리에 적재되어 활동 상태(Active)가 되는 것
728x90