Related to: Operating System
참조
https://cocoon1787.tistory.com/858
교착상태란?
- 두 개 이상의 프로세스가 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며, 서로의 작업을 끝나기만을 기다리며 둘 다 영원히 끝나지 않는 상황
발생 조건
교착상태는 아래의 4가지 조건이 모두 만족되는 경우(필요충분조건)에 발생할 가능성이 있으며,
하나라도 만족하지 않으면 교착상태가 발생하지 않습니다.
- 상호 배제(Mutual Exclusion)
- 한 번에 한 개의 프로세스만이 공유자원을 사용할 수 있음
- 점유 대기(Hold and Wait)
- 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다림
- 비선점(No Preemption)
- 프로세스가 작업을 마친 후 자원을 자발적으로 반환할 때까지 기다림(이미 할당된 자원을 강제적으로 빼앗을 수 없음)
- 순환 대기(Circular Wait)
-
프로세스의 자원 점유 및 점유된 자원의 요구 관계가 원형을 이루면서 대기하는 조건.각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있음
-
예방 방법
교착상태 발생조건을 방지해서 데드락을 예방하는 방법은 시스템 처리량이나 자원 사용의 효율성을 떨어트리는 단점이 있습니다
-
상호 배제 부정
- 여러 개의 프로세스가 동시에 공유자원을 사용할 수 있음
-
점유 대기 부정
- 프로세스가 실행되기 전에 필요한 모든 자원을 할당하여 프로세스 대기를 없애거나, 자원이 점유되지 않은 상태에서만 자원 요청을 받도록 함
-
비선점 부정
- 모든 자원에 대한 선점을 허용
-
순환 대기 부정
- 자원을 선형으로 분류하여 고유 번호를 할당하고, 각 프로세스는 현재 점유한 자원의 고유번호보다 앞이나 뒤 한쪽 방향으로만 자원을 요구하도록 함