프로그램
저장장치에 저장되어 있는 정적인 상태
프로세스
실행을 위해 메모리에 올라온 동적인 상태
프로세스의 상태
일괄 작업 시스템에서
프로세스가 생성된 후 CPU를 얻어 실행하고 작업을 마치면 종료
생성, 실행, 완료
시분할 시스템에서
CPU를 얻어 실행 중인 프로세스가 중간에 다른 프로세스에 CPU를 넘겨주는 일이 빈번
프로세스 제어 블록(Process Controll Block, PCB) 생성생성 상태
프로세스가 메모리에 올라와 실행 준비를 완료한 상태
준비 상태
생성된 프로세스가 CPU를 얻을 때 까지 기다리는 상태
실행 상태
준비 상태에 있는 프로세스 중 하나가 CPU를 얻어 실제 작업을 수행하는 상태
실행 상태에 들어간 프로세스는 일정 시간동안 CPU를 사용할 권리를 가짐
주어진 시간을 다 사용하고도 작업이 끝나지 않았다면 프로세스는 준비 상태로 감완료 상태
실행 상태의 프로세스가 주어진 시간 동안 작업을 마치면 완료 상태로 진입
프로세스 제어 블록(Process Controll Block, PCB) 제거
CPU 스케쥴러
준비 상태에 있는 여러 프로세스 중 다음에 실행할 프로세스를 선정
준비 상태에서 큐를 몇 개 운영할지, 큐에 있는 어떤 프로세스의 프로세스 제어 블록을 실행 상태로 보낼지 결정
디스패치(Dispatch)
준비 상태의 프로세스 중 하나를 골라 실행 상태로 바꾸는 작업
타임 슬라이스, 퀀텀
CPU 스케쥴러에 의해 선택된 프로세스는 실행 상태에서 일정 기간 동안 작업하는데, 프로세스에 배당된 작업 시간
타임 아웃
자신에게 주어진 하나의 타임 슬라이스 동안 작업을 끝내지 못하면 다시 준비상태로 돌아가는 것
프로세스의 다섯 가지 상태
프로세스는 생성, 준비, 실행, 완료 네 가지 상태만으로도 작업을 진행하는 데 큰 문제는 없으나
운영체제의 효율성을 고려해 한가지 상태를 더 추가(대기 상태)
상태 | 설명 | 작업 |
---|---|---|
생성 | 프로그램을 메모리에 가져와 실행 준비가 완료된 상태 | 메모리 할당, 프로세스 제어 블록 생성 |
준비 | 실행을 기다리는 모든 프로세스가 자기 차례를 기다리는 상태 실행될 프로세스를 CPU 스케쥴러가 선택 |
dispatch(PID): 준비 -> 실행 |
실행 | 선택된 프로세스가 타임 슬라이스를 얻어 CPU를 사용하는 상태 | timeout(PID): 실행 -> 준비 exit(PID): 실행 -> 완료 block(PID): 실행 -> 대기 |
대기 | 실행 상태에 있는 프로세스가 입출력을 요청하면 입출력이 완료될 떄까지 기다리는 상태 입출력이 완료 되면 준비 상태로 감 |
wakeup(PID): 대기 -> 준비 |
완료 | 프로세스가 종료된 상태 사용하던 모든 데이터가 정리 |
메모리 삭제, 프로세스 제어블록 삭제 |
dispatch(PID)
해당 프로레스가 준비 상태에서 실행 상태로 바뀌어 작업이 이루어짐
timeout(PID)
타임 슬라이스 시간을 다 사용하면 실행
제어 블록을 실행 상태에서 준비 상태로 옮김
exit(PID)
실행 상태 동안 작업이 완료되면 실행
프로세스 정상 종료
block(PID)
실행 상태에 있는 프로세스가 입출력을 요청하면 CPU는 입출력 관리자에게 입출력을 요청하고 실행
입출력이 완료될 떄까지 작업을 진행할 수 없기 때문에 대기 상태로 옮김
이 후 CPU 스케쥴러는 새로운 프로세스를 실행 상태로 가져옴(Dispatch)
대기 상태 추가 설명
wait status라고도 부르며, 작업의 효율을 위해 만들어 졌음
입출력이 완료되면 인터럽트가 발생
대기 상태에 있는 여러 프로세스 중 해당 인터럽트로 깨어날 프로세스를 찾음(wakeup(PID))
인터럽트 때문에 대기 상태에서 준비 상태로 이동함