-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
교착 상태 해결 방법 3️⃣
1. 교착 상태 예방
- 프로세스들에 자원을 할당할 때 상호 배제, 점유와 대기, 비선점, 원형 대기 중 하나의 조건이라도 만족시키지 않게 할당하면 된다.
상호 배제를 없애는 방법
- 모든 자원을 공유 가능하게 만든다.
- 하지만 현실적으로 모든 자원의 상호 배제를 없애기는 어렵기에 현실에서 사용하기에는 무리가 있다.
점유와 대기 없애는 방법
- 운영체제는 특정 프로세스에 자원을 모두 할당하거나, 아예 할당하지 않는 방식으로 배분하게 된다.
- 단점
- 자원의 활용률이 낮아진다. 당장 자원이 필요해도 기다릴 수 밖에 없는 프로세스와 사용되지 않으면서 오랫동안 할당되는 자원을 다수 양산하기 때문이다.
- 많은 자원을 사용하는 프로세스가 불리해진다. 자원을 사용할 타이밍을 확보하기 어렵기 때문에 무한정 기다리게 되는 기아 현상이 발생할 수 있기 때문이다.
비선점 없애는 방법
- 선점하여 사용할 수 있는 일부 자원에 대해서는 효과적이다. 예를 들어 CPU는 프로세스들이 선점할 수 있는 대표적인 자원이다.
- 하지만 한 프로세스의 작업이 끝날 때까지 다른 프로세스가 기다려야 하는 자원도 있기 때문에 범용성이 떨어지는 해결 방법이다.
원형 대기 없애는 방법
- 모든 자원에 번호를 붙이고, 오름차순으로 자원을 할당하면 된다.
- 모든 컴퓨터 시스템 내에 존재하는 수많은 자원에 번호를 붙이는 것은 매우 어렵고, 각 자원에 어떤 번호를 붙이는지에 따라 특정 자원의 활용률이 떨어질 수 있다.