Process States Model
Not-running Processes

프로세스를 생성하면 (enter) 바로 Admit 과정을 거쳐 Ready queue로 들어감
Ready Queue에서 OS 스케쥴러 정책에 따라 Dispatch될 작업이 선정되서 Running상태에 돌입
실행상태에 있는 프로세스는 CPU 자원을 할당받아서 프로그램 명령어 처리중임
따라서, 여러개의 CPU를 가진 멀티 프로세싱 시스템에서는, 어떤 한시점에 여러개의 프로세스가 실행 중일 수 있음 (Parall System)
실행상태에 있는 프로세스에게 발생하는 이벤트에 따라서 운영체제 프로세스 관리 기능은 프로세스 상태를 변화시킴.
1) 자신이 해야할 일을 다 끝내고 exit or kill 호출시 종료 상태 (Terminated, Zombie)로감, 통계정보를 유지할 자원 외 필요 없음
Terminated 도 프로세스로 남아있긴함. 단, wait system call 시 완전히 시스템에서 사라짐
부모 프로세스가 wait 호출 (통계 정보 수집 시스템콜)시 완전히 프로세스 세계에서 나감 == 컴퓨터 시스템에서 없어짐
2) Timeout
다시 Ready 상태로 변화, Ready queue로 들어감. 다시 Dispatch 과정을 거침
3) 프로세스가 특정한 이벤트를 기다릴 경우
ex ) 입출력,
입력, 출력이 끝날때 까지 Blocked 상태
Blocked는 CPU 못씀
이벤트 발생시(깨울시)
Ready로 보냄
이때, Blocked에서 바로 Running으로 가는게 아닌 다시 Ready로 먼저 가야함.


하드웨어 관점으로 표현

Event queue를 하나로만 한다면 해당 queue를 일일히 비교해야하기때문에 event 종류 마다 queue 만듦
참고 :
프로세스는 메인 메모리에 들어와 있어야 실행할 수 있음
운영체제는 CPU 활용도를 높이기 위해 여러개의 프로세스를 넣어 실행
Suspended Processes
Suspended Processes로 만드는 이유

Suspended sleep = Suspended block
왜 Suspended process가 필요한 이유
공통 : 메인 메모리 공간을 확보하기 위해, 불필요한 공간을 차지 않게 하기 위해