7. 교착 상태 해결 방법 중, 타임아웃을 이용하여 해결하는 방법은 무엇인가?
•
구현이 어려운 교착 상태 예방과 구현할 수는 있지만 자원을 낭비하는 교착 상태 회피와는 달리 제일 현실적인 접근 방법으로 교착 상태를 해결하는 방법
•
타임아웃 이용 방법과 자원 할당 그래프 이용 방법 2가지 존재
1.
타임아웃 이용 방법
•
일정 시간 동안 작업이 진행되지 않은 프로세스를 교착 상태가 발생한 것으로 간주하여 처리
•
자주 발생하지 않을 것이라는 가정하에 진행하므로 구현은 쉬움
1.
엉뚱한 프로세스의 강제 종료
•
교착 상태가 아닌데 타임아웃 시간 동안 작업이 진행되지 않았다는 이유로 프로세스가 강제 종료될 수 있모든 시스템 적용 불가
2.
모든 시스템 적용 불가
•
분산 데이터베이스와 같은 시스템에서는 원격지에 있는 프로세스의 응답이 없는 것이 교착 상태 때문이지, 다른 문제 때문이지에 대한 판단이 어려움
2.
자원 할당 그래프 이용 방법
•
시스템 내의 프로세스가 어떤 자원을 사용하고 있는지 혹은 기다리고 있는지 확인 가능
•
사이클이 존재하면 교착 상태가 발생한 것으로 간주
•
아래의 그림에선, 동시에 사용 가능한 자원의 수를 1개로 간주하고 표시했기에 오른쪽 그림은 사이클이 존재해 교착 상태 발생
•
그래프를 유지하고, 갱신하고, 사이클을 검사하는 추가 작업으로 오버헤드 발생
8. 교착 상태 해결 방법 중, 은행원 알고리즘을 사용하여 해결하는 방법은 무엇인가?
•
프로세스에 자원을 할당할 때 어느 수준 이상의 자원을 나누어주면 교착 상태가 발생하는지 파악하여 그 수준 이하로 자원을 할당하는 방법
•
할당되는 자원의 수를 조절하여 교착 상태를 피함
•
교착 상태 예방과는 달리 시스템의 운영 방식에 변경을 가하지 않아 유연함
•
자원의 총수와 현재 할당된 자원의 수를 기준으로 시스템을 안정 상태와 불안정 상태로 구분
•
안정 상태를 유지할 수 있는 범위 내에서 자원을 할당하는 것이 교착 상태 회피
1.
프로세스가 자신이 사용할 모든 자원을 미리 선언해야 하는데 이는 쉬운 일이 아닐뿐더러 미리 선언한 자원이 정확하지 않으면 교착 상태 회피에서도 교착 상태가 발생할 수 있다.
2.
안정/불안정 상태를 파악하기 위해서는 전체 자원 수가 고정적이어야 하는데 실제로는 그러기 어렵다.
3.
자원의 낭비 : 교착 상태가 발생하지 않는데도 발생할 것이라고 예상함으로써 프로세스에 자원을 할당하는데 제약을 둠
•
은행원 알고리즘
◦
대출 금액이 대출 가능한 범위 내이면(안정 상태) 허용하고 그렇지 않으면 거부하는 것과 유사한 방법
◦
최악의 경우를 기준으로 문제 상황을 철저히 피하여 교착 상태를 피함
◦
각 프로세스의 기대 자원과 비교하여 가용 자원이 하나라도 크거나 같으면 자원 할당
◦
이런 경우가 한 번 이상인 경우를 안정 상태라고 정의
전체 자원 | 시스템 내 전체 자원 수 |
가용 자원 | 전체 자원 - 모든 프로세스의 할당 자원 |
최대 자원 | 각 프로세스가 선언한 최대 자원 수 |
할당 자원 | 각 프로세스에 현재 할당된 자원 수 |
기대 자원 | 최대 자원 - 할당 자원 |
•
은행원 알고리즘의 안정/불안정 상태
전체 자원 : 14개
최대 자원 : P1(5), P2(6), P3(10)
할당 자원 : P1(2), P2(4), P3(6) → 12개
가용 자원 : 14 - 12 = 2개
기대 자원 : P1(3), P2(2), P3(4)
9. 교착 상태 해결 방법 중, 모든 자원에 번호를 부여하고 낮은 번호의 자원을 사용할 수 없도록 하는 방법은 무엇인가?
•
자원을 한 방향으로만 사용하도록 설정함으로써 원형 대기를 예방하는 방법
•
모든 자원에 숫자를 부여해 숫자가 큰 방향으로만 자원 할당
ex) 마우스(1) < 하드디스크(2) < 프린터(3)
→ 프린터를 할당 받은 상ㅅ태에서 마우스나 하드디스크는 할당받을 수 없다.
•
점유와 대기 예방보다 완화된 방법
•
프로세스 작업 진행에 유연성 떨어짐
ex) 프린터를 사용한 다음에 마우스는 사용할 수 없는데, 사용자 입장에선 납득하기 어려운 자원 사용 방식임
•
자원의 번호 부여 기준 불명확