#28 TIL - DeadLock

X's Dev·2024년 7월 3일
0

TIL

목록 보기
26/38

교착 상태(데드락)

이번 포스트에서는 네트워크와 관련된 교착 상태(데드락, Deadlock)에 대해 알아보려 한다.


이미지 출처 -https://www.geeksforgeeks.org/introduction-of-deadlock-in-operating-system/

교착 상태의 정의

교착 상태(데드락, Deadlock)는 두 개 이상의 프로세스가 서로 상대방의 작업이 끝나기만을 기다리고 있어 결국 아무 작업도 진행되지 않는 상태를 말한다. 네트워크 환경에서는 자원 할당 문제, 데이터베이스 잠금 문제 등에서 교착 상태가 발생할 수 있다.

교착 상태의 발생 조건

교착 상태는 네 가지 조건이 모두 만족될 때 발생한다.
1. 상호 배제(Mutual Exclusion): 자원은 한 번에 하나의 프로세스만 사용할 수 있다.
2. 점유와 대기(Hold and Wait): 자원을 점유하고 있는 프로세스가 다른 자원을 기다린다.
3. 비선점(No Preemption): 할당된 자원을 강제로 빼앗을 수 없다.
4. 순환 대기(Circular Wait): 자원을 기다리는 프로세스들이 순환 형태로 대기한다.

이미지 출처 - https://www.javatpoint.com/os-deadlock-prevention

교착 상태의 해결 방법

교착 상태를 해결하기 위해 여러 가지 방법이 사용된다.
1. 예방(Prevention): 교착 상태의 발생 조건 중 하나 이상을 제거해 발생을 원천적으로 막는다.
2. 회피(Avoidance): 자원 할당 시 교착 상태가 발생하지 않도록 주의해서 할당한다. 은행원 알고리즘(Banker's Algorithm)이 대표적이다.

이미지 출처 - https://www.javatpoint.com/bankers-algorithm-java
  1. 탐지(Detection) 및 복구(Recovery): 교착 상태를 허용하되, 발생 시 이를 탐지하고 적절히 복구한다. 주기적으로 시스템 상태를 확인하고, 교착 상태를 발견하면 프로세스를 종료하거나 자원을 강제로 해제한다.

네트워크에서의 교착 상태 관리

네트워크 환경에서 교착 상태를 방지하기 위해 다음과 같은 방법을 사용할 수 있다.
1. 자원 할당 그래프(Resource Allocation Graph)를 이용해 교착 상태를 감시하고 관리한다.

이미지 출처 - https://www.geeksforgeeks.org/resource-allocation-graph-rag-in-operating-system/
  1. 타임아웃 기법을 사용해 일정 시간 동안 자원을 할당받지 못하면 해당 프로세스를 중단시킨다.
  2. 네트워크 프로토콜 설계 시 교착 상태를 고려해 프로토콜을 설계한다.

네트워크에서의 교착 상태는 시스템의 성능 저하와 서비스 중단을 초래할 수 있으므로, 이를 방지하고 관리하는 것이 중요하다.
이를 위해 적절한 자원 관리 전략을 수립하고, 시스템을 지속적으로 모니터링하는 것이 필요하다.

profile
성장 기록하기

0개의 댓글