1) 프로세스 네가지 상태
- 생성 상태(Create Status)
- 프로세스가 메모리에 올라와 실행준비를 완료한 상태
- PCB(Process Control Block, 프로세스 제어 블록)생성
- 준비 상태(Ready Status)
- 생성된 프로세스가 CPU를 받을 때까지 기다리는 상태
- CPU가 하나인 컴퓨터에서는 한번에 하나의 프로세스만 실행 할 수 있다.
- 실행 상태(Running Status)
- 준비 상태에 있는 프로세스 중 하나가 CPU를 얻어 실제 작업을 수행하는 상태
- 완료 상태(Terminate Status)
- 실행 상태의 프로세스가 주어진 시간 동안 작업을 마치면 완료상태로 진입한다.
- PCB 제거
- 준비상태에 있는 여러 프로세스 중 다음에 실행할 프로세스를 선정하는 일은 CPU 스케줄러가 담당한다.
- CPU 스케줄러에 의해 선택된 프로세스는 실행상태에서 일정 시간동안 작업을 하는데, 프로세스에 해당된 작업 시간을 타임 슬라이스 또는 타임 퀀텀이라고 부른다.
- 프로세스는 자신에게 주어진 타임 슬라이스 동안 작업을 끝내지 못하면 다시 준비 상태로 돌아가는데 이를 타임 아웃이라 한다.
- 일정시간이 다 되면 클록은 인터럽트를 사용하여 일정시간이 흘렀다고 CPU에 알려준다.
2) 프로세스 다섯가지 상태
- 만약 어떤 프로세스가 실행상태에 들어가 입출력을 요구했다고 가정하면, 프로세스는 입출력 작업이 끝날때까지 다음 작업을 할 수 없다.
- 이러한 문제를 해결하는 방법이 대기 상태(Blocking Status)
- 생성 상태
- 프로그램을 메모리에 가져와 실행 준비가 완료된 상태
- 메모리 할당, PCB 생성
- 준비 상태
- 실행을 기다리는 모든 프로세스가 자기 차례를 기다리는 상태
- 실행될 프로세스를 CPU 스케줄러가 선택한다.
- dispatch(PID) : 준비 → 실행
- 실행 상태
- 선택된 프로세스가 타임슬라이스를 얻어 CPU를 사용
- 프로세스 사이의 문맥교환이 발생
- timeout(PID) : 실행 → 준비
- exit(PID) : 실행 → 완료
- block(PID) : 실행 → 대기
- 대기 상태
- 실행 상태에 있는 프로세스가 입출력을 요청하면 입출력이 완료될 때까지 기다리는 상태
- 완료되면 준비상태로 간다.
- wakeup(PID) : 대기 → 준비
- 완료 상태
- 프로세스가 종료된 상태
- 정상 종료 : exit
- 비정상 종료 : abort
- 메모리 삭제, PCB 삭제
3) 추가적인 상태 : 보류상태
- 보류 상태(Suspend Status)
- 프로세스가 메모리에서 잠시 쫓겨난 상태
- ‘일시 정지 상태’
- 다음과 같은 경우에 발생
- 메모리가 꽉차서 일부 프로세스를 메모리 밖으로 내보낼때
- 프로그램에 오류가 있어서 실행을 미루어야 할때
- 바이러스와 같이 악의적인 공격을 하는 프로세스라고 판단될때
- 매우 긴 주기를 반복하는 프로세스라서 메모리 밖으로 쫓아내도 큰 문제가 없을때
- 입출력을 기다리는 프로세스의 입출력이 계속 지연될 때
- 보류 상태에 들어간 프로세스는 메모리 밖으로 쫓겨나 스왑 영역(Swap Area)에 보관된다.