운영체제(OS)
교착상태(Dead Lock) 알아보기
yoongrammer
2021. 3. 26. 17:00
728x90
목차
교착상태(Dead Lock) 알아보기
교착상태(Dead Lock)은 상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한 대기
하는 현상을 의미합니다.
![](https://blog.kakaocdn.net/dn/bAL1py/btq04KQ7obK/CEr9G5bsg5sub7s0o2bRR0/img.png)
교착상태 조건
교창상태가 일어나려면 다음과 같은 네 가지 조건을 모두 충족시켜야 합니다.
- 상호 배제 (Mutual exclusion)
- 자원은 한 번에 한 프로세스만이 사용할 수 있어야 한다.
- 점유 대기 (Hold and wait)
- 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 한다.
- 비선점 (No preemption)
- 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 한다.
- 순환 대기 (Circular wait)
- 프로세스들이 순환 형식으로 서로를 기다리고 있어야 한다.
728x90
교착상태 표현 방법
자원 할당 그래프(Resource-Allocation Graphs)를 통해 시스템의 교착상태 유무를 파악할 수 있습니다.
자원 할당 그래프 요소
- 리소스 집합 {R1, R2,..., RN} : 그래프에서 정사각형 노드로 나타냅니다. 리소스 노드 내부의 점은 할당할 수 있는 인스턴트 수를 나타냅니다.
- 프로세스 집합 {P1, P2,..., PN} : 원형 노드로 프로세스를 나타냅니다.
- 요청 간선(Request Edges) : Pi → Rj로 향하는 간선입니다. Pi가 Rj를 요청했으며 현재 해당 리소스를 사용할 수 있을 때까지 기다리고 있음을 나타냅니다.
- 할당 간선(Assignment Edges) : Rj → Pi로 향하는 간선입니다. 리소스 Rj가 Pi에게 할당되었고 Pi가 리소스 Rj를 보유하고 있음을 나타냅니다.
그래프에 순환(cycle)이 있는 경우
다음과 같이 자원 할당 그래프에서 순환(cycle)이 나타나지 않으면 교착 상태가 아닙니다.
![](https://blog.kakaocdn.net/dn/cZNQsc/btq09kjni3M/wW2U6VfPjlbX1EiWm8Q7ak/img.png)
그래프에 순환(cycle)이 없는 경우
그래프에 순환이 있으면 교착상태 일 수 있습니다.
![](https://blog.kakaocdn.net/dn/8T4kE/btq06iGBfay/bUGiTwHwWsd52shIc4ClJK/img.png)
순환이 있다고 해서 무조건 교착 상태는 아닙니다.
다음과 같이 리소스 집합에 인스턴스가 둘 이상인 경우 교착 상태가 아닐 수 있습니다.
![](https://blog.kakaocdn.net/dn/Kj9nk/btq08wdwFPO/fO1s3k2pldIUMtLCFlJdy0/img.png)
위 그림에서 P2 또는 P4가 자원을 사용한 뒤 해제한다면 P1 또는 P3은 자원을 할당받을 수 있게 되어 교착상태에서 벗어나게 됩니다.
728x90