///////
Search
5️⃣

연습문제 10 ~ 12 + 심화문제 1

10. 교착 상태 해결 방법 중, 프로세스가 시작 초기에 자신이 사용하려는 모든 자원을 한꺼번에 점유하거나, 그렇지 못할 경우 자원을 모두 반납하는 방법은 무엇인가?

교착 상태 발생의 필요조건 중 하나인 점유와 대기 문제 예방이다.
점유와 대기 문제는, 프로세스가 특정 자원을 점유한 상태로 다른 자원을 대기할때
대기하는 자원을 공유해서 사용할 수 없고, 빼앗아 사용할 수 없기 때문에 무한정 대기를 하게되는 문제이다.
따라서, 모든 자원을 한꺼번에 점유하거나, 그렇지 못할 경우 모두 반납해 버리면 교착상태를 피할 수 있다.

단점

프로세스가 자신이 사용하는 모든 자원을 초기부터 알기 어렵다. 후속 작업에 필요한 자원을 추가로 요청하는 경우가 있을 수 있다.
당장 사용할 자원이 아니여도 선점해버리기 때문에, 다른 프로세스 작업이 미뤄질 수 있다.
자원을 많이 필요로 하는 프로세스의 경우, 동시에 점유하기 힘들기 때문에 작업이 계속 미뤄져 아사 현상이 발생할 수 있다.
이 방법으로 프로세스 작업을 처리할 시, 일괄 작업 방식과 유사해지고 시스템 효율성이 떨어진다.

11. 교착 상태 해결 방법 중, 교착 상태가 검출되면 교착 상태를 일으킨 모든 프로세스를 종료하는 방법은 무엇인가?

교착 상태 회복이다.
먼저 교착 상태 검출은, 교착 상태 예방의 경우 임계구역과 같은 문제가 있고, 교착 상태 회피의 경우 자원 낭비를 하게되므로 사용하는 현실적인 방법이다.
교착 상태가 발생했음을 검출하면, 교착 상태를 회복하기 위해, 교착 상태를 일으킨 모든 프로세스를 종료하는 방법이 있다.
참고로, 모두 종료한 뒤 다시 실행 시킬 때, 동일한 교착상태가 발생하는 것을 막기 위해 어떤 프로세스를 먼저 실행할 것인지 기준이 필요하다.
모든 프로세스를 한번에 종료하는 것이 아닌, 교착 상태를 일으킨 프로세스를 하나씩 종료시키는 방법도 있다.
1.
우선 순위가 낮은 프로세스를 종료
2.
작업 시간이 짧은 프로세스를 종료 (우선 순위가 동일한 프로세스가 있는 경우)
3.
자원을 많이 사용하는 프로세스를 종료 (우선 순위와 작업 시간이 동일한 프로세스가 있는 경우)

12. 자원 할당 그래프에서 무엇이 발견되면 교착 상태라고 판단할 수 있는가?

하나의 자원을 하나의 프로세스만 사용할 수 있다고 가정할 때, 교착 상태 그래프에서 사이클이 존재하면, 교착 상태가 발생한 것으로 본다.
단, 여러 프로세스가 동시에 사용할 수 있는 다중 자원이 있는 경우 사이클이 있다고 해서 교착상태라고 판단할 수 없다.
교착 상태가 발생하지 않음
교착 상태가 발생함