(1) Read / Ready / Running / Wait / Zombie 상태

Read 상태는 태스크가 생성되서 실행큐에 들어가 CPU를 할당 받기(dispatch)위해 기다리는 상태이다.

○ 스케줄러에 의해 태스크가 실행되면 running 상태가 된다.

○ 할당된 시간을 다쓰면(timeout or timer runout) ready로 돌아간다.

○ ready와 running은 하나의 상태로 관리.

○ running 상태였던 태스크가 특정 사건 (sleep()함수 호출, lock걸린 자원 요청 후 기다림)을 기다려야 할 필요가 있으면, wait(or blocked)상태로 들어간다.

○ wait상태에는 대기큐에 연결된다. 특정 사건이 들어와 깨어나면(wake up) 대기큐에서 삭제되고 다시 실행큐에 삽입된다.(ready로 돌아감)

○ 이렇게 wait 상태로 전이 함으로써 CPU이용률이 높아진다.

○ 태스크가 자신의 일을 마치고 exit()함수를 호출하면 zombie 상태가 된다.

○ zombie상태가 되면 (자신이 소멸된 원인, 자신이 사용한 자원의 통계정보를 제외한) 대부분의 자원을 커널에 반납하고 부모프로세스가 남은 정보를 수집하길 기다린다. 부모프로세스가 수집하면 완전히 소멸된다. 만약 부모프로세스가 수집하지 않고 먼저 소멸하면 연결되었던 자식 프로세스들을 init태스크에 연결시켜준다.(zombie 안되고 소멸되게끔)


※ 출처 : http://idkkangjs.blog.me/30091117058

by 민트앤라떼 2011. 9. 27. 09:56