1) 프로세스 네가지 상태

  • 생성 상태(Create Status)
    • 프로세스가 메모리에 올라와 실행준비를 완료한 상태
    • PCB(Process Control Block, 프로세스 제어 블록)생성
  • 준비 상태(Ready Status)
    • 생성된 프로세스가 CPU를 받을 때까지 기다리는 상태
    • CPU가 하나인 컴퓨터에서는 한번에 하나의 프로세스만 실행 할 수 있다.
  • 실행 상태(Running Status)
    • 준비 상태에 있는 프로세스 중 하나가 CPU를 얻어 실제 작업을 수행하는 상태
  • 완료 상태(Terminate Status)
    • 실행 상태의 프로세스가 주어진 시간 동안 작업을 마치면 완료상태로 진입한다.
    • PCB 제거

process_status1

  • 준비상태에 있는 여러 프로세스 중 다음에 실행할 프로세스를 선정하는 일은 CPU 스케줄러가 담당한다.
  • CPU 스케줄러에 의해 선택된 프로세스는 실행상태에서 일정 시간동안 작업을 하는데, 프로세스에 해당된 작업 시간을 타임 슬라이스 또는 타임 퀀텀이라고 부른다.
  • 프로세스는 자신에게 주어진 타임 슬라이스 동안 작업을 끝내지 못하면 다시 준비 상태로 돌아가는데 이를 타임 아웃이라 한다.
  • 일정시간이 다 되면 클록은 인터럽트를 사용하여 일정시간이 흘렀다고 CPU에 알려준다.

2) 프로세스 다섯가지 상태

  • 만약 어떤 프로세스가 실행상태에 들어가 입출력을 요구했다고 가정하면, 프로세스는 입출력 작업이 끝날때까지 다음 작업을 할 수 없다.
  • 이러한 문제를 해결하는 방법이 대기 상태(Blocking Status)

process_status2

  • 생성 상태
    • 프로그램을 메모리에 가져와 실행 준비가 완료된 상태
    • 메모리 할당, PCB 생성
  • 준비 상태
    • 실행을 기다리는 모든 프로세스가 자기 차례를 기다리는 상태
    • 실행될 프로세스를 CPU 스케줄러가 선택한다.
    • dispatch(PID) : 준비 → 실행
  • 실행 상태
    • 선택된 프로세스가 타임슬라이스를 얻어 CPU를 사용
    • 프로세스 사이의 문맥교환이 발생
    • timeout(PID) : 실행 → 준비
    • exit(PID) : 실행 → 완료
    • block(PID) : 실행 → 대기
  • 대기 상태
    • 실행 상태에 있는 프로세스가 입출력을 요청하면 입출력이 완료될 때까지 기다리는 상태
    • 완료되면 준비상태로 간다.
    • wakeup(PID) : 대기 → 준비
  • 완료 상태
    • 프로세스가 종료된 상태
    • 정상 종료 : exit
    • 비정상 종료 : abort
    • 메모리 삭제, PCB 삭제

3) 추가적인 상태 : 보류상태

  • 보류 상태(Suspend Status)
    • 프로세스가 메모리에서 잠시 쫓겨난 상태
    • ‘일시 정지 상태’
    • 다음과 같은 경우에 발생
      • 메모리가 꽉차서 일부 프로세스를 메모리 밖으로 내보낼때
      • 프로그램에 오류가 있어서 실행을 미루어야 할때
      • 바이러스와 같이 악의적인 공격을 하는 프로세스라고 판단될때
      • 매우 긴 주기를 반복하는 프로세스라서 메모리 밖으로 쫓아내도 큰 문제가 없을때
      • 입출력을 기다리는 프로세스의 입출력이 계속 지연될 때
    • 보류 상태에 들어간 프로세스는 메모리 밖으로 쫓겨나 스왑 영역(Swap Area)에 보관된다.
    • process_status3