///////
Search
2️⃣

연습문제 3 ~ 4

3. 네가지 교착 상태 필요조건에 대해 설명하시오

교착 상태는 상호 배제, 비선점, 점유와 대기, 원형 대기 이 4가지 조건이 모두 충족되야 발생한다.
1.
상호 배제 (mutual exlcusion)
프로세스가 사용하는 자원은 다른 프로세스와 공유할 수 없는 배타적인 자원이다
배타적인 자원을 여러 프로세스가 사용해야 하는 경우 교착 상태가 발생한다
2.
비선점 (non-preemption)
한 프로세스가 사용 중인 자원은 중간에 다른 프로세스가 빼앗을 수 없는 자원이다
3.
점유와 대기 (hold and wait)
다른 프로세스가 필요로 하는 자원을 점유하고 있으면서 또 다른 자원을 기다리는 상태
4.
원형 대기 (circular wait)
점유와 대기를 하는 프로세스들이 서로 방해하는 방향이 원을 이루면 프로세스들의 서로 양보하지 않기 때문에 교착 상태에 빠진다.

4. 교착 상태 해결 방법 중, 교착 상태를 유발하는 네 가지 조건을 무력화하는 방법은 무엇인가?

교착 상태를 해결하는 방법은 예방, 회피, 검출, 회복이 있다. 이 중, 교착 상태를 유발하는 조건들을 무력화 하는 방법은 예방이다.
교착 상태는 상호 배제, 비선점, 점유와 대기, 원형 대기라는 네 가지 조건을 동시에 충족해야 발생하기 때문에 이 중 하나라도 막는다면 교착 상태가 발생하지 않는다.
실효성이 적어 잘 사용되지 않는다
1.
상호 배제 예방
시스템 내의 모든 자원을 공유할 수 있도록 한다.
eg) 철학자 문제에서 모든 철학자가 포크를 공유할 수 있다면 교착 상태가 발생하지 않듯이 변수나 파일도 공유하면 교착 상태가 나지 않는다.
하지만 시스템 내에는 공유할 수 없는 자원이 있다
지난 주 임계구역이 보호 받지 못하면 작업의 결과가 달라지는 것을 보았듯이 입금한 돈이 사라지거나 프린터의 출력물이 뒤죽박죽이 될 것이다
상호 배제를 예방하는 것은 사실상 어렵다
2.
비선점 예방
모든 자원을 빼앗을 수 있도록 한다
철학자 문제에서 옆 사람의 포크를 빼앗는 것
사실상 불가능하다
하지만 임계구역을 보호하기 위해 잠금을 사용하면 자원을 빼앗을 수 없고, 상호배제 (한 프로세스가 임계구역에 들어가면 다른 프로세스는 임계구역에 들어갈 수 없다) 도 보장할 수 없다. 사실상 시스템의 모든 자원을 빼앗을 수 있도록 하지 못한다
또한 그럴 수 있더라도 어떤 기준으로 자원을 빼앗을지, 빼앗은 시간 중 얼마나 사용할 지 등을 결정하기 어렵고 우선순위가 높은 프로세스가 우선순위가 낮은 프로세스의 자원을 무조건 빼앗을 수 있기 때문에 아사 현상을 일으킨다
아사 현상: 스케줄링 정책 문제로 특정 프로세스의 작업이 이루어 지지 않는 것
우선 순위가 낮은 프로세스가 몇번을 양보한 끝에 무조건 자원을 사용하게 되면, 이 프로세스가 점유하고 있는 자원은 비선점 자원이 되서 다시 교착 상태에 빠질 수 있다.
c.
점유와 대기 예방
프로세스가 자원을 점유한 상태에서 다른 자원을 기다리지 못하게 하는방법
전부 할당하거나 아예 할당하지 않는 방식
프로세스는 시작 초기에 자신이 사용하려는 모든 자원을 한꺼번에 점유하거나, 그렇지 못할 경우 자원을 모두 반납해야 한다
단점
프로세스가 자신이 사용하는 모든 자원을 알기 어려운데, 추가로 필요한 자원이 생기면 이를 다시 확보하기 어렵다
프로세스가 앞으로 사용할 예정이지만 당장 사용하지 않아도 되는 자원까지 미리 선점해버리기 때문에 그 자원을 필요로 하는 프로세스의 작업이 지연된다
많은 자원을 사용하는 프로세스는 자원을 적게 사용하는 프로세스보다 자원을 동시에 확보하기 어렵기 때문에 작업이 지연되는 아사 현상이 발생
점유와 대기 예방을 실제로 구현하면 거의 모든 프로세스가 일괄 작업 방식으로 처리된다. 자원을 확보한 순서대로 실행하면 그 자원을 획득한 프로세스가 작업을 끝내야 다른 프로세스가 작업을 할 수 있기 때문에 시스템의 효율이 떨어진다
d.
원형 대기 예방
점유와 대기를 하는 프로세스들이 원형을 이루지 못하도록 막는 방법
자원을 한 방향으로만 사용하도록 설정한다
모든 자원에 숫자를 부여하고 숫자가 작은 자원을 잡은 상태에서 큰 숫자를 잡는 것은 허용하지만 숫자가 큰 자원을 잡은 상태에서 작은 숫자를 잡은 것은 허용하지 안흔다
단점
프로세스 작업 진행에 유연성이 떨어진다
프린터(3)가 마우스(1) 보다 더 높은 숫자를 가지고 있다면, 프린터를 사용한 다음 마우스를 할당받지 못하기 때문에 프린트를 사용한 다음에는 마우스를 사용할 수 없는 사용자 입장에서는 납득하기 어려운 현상이 일어나다.
자원의 번호를 어떻게 부여할 것인지가 명확하지 않다
결론: 교착 상태 예방은 상호 배제와 비선점을 예방하기 어려우며, 점유와 대기, 원형 대기는 프로세스 작업 방식을 제한하고 자원을 낭비하기 떄문에 사용할 수 없다.