06. 운영체제

민주·2023년 11월 21일
0

CS

목록 보기
14/22

데드락(Deadlock) 은 멀티태스킹 시스템에서 발생하는 주요 문제 중 하나. 데드락이 발생하면 여러 프로세스들이 서로 필요로 하는 자원을 가지고 있어서 상호간에 무한히 기다리는 상황이 발생. 데드락을 이해하고 해결하기 위해서는 먼저 그 원인과 특성을 파악하는 것이 중요.

데드락의 특성 및 필요 조건

데드락은 다음 네 가지 기본적인 조건이 모두 충족될 때 발생:

상호 배제(Mutual Exclusion): 자원은 한 번에 하나의 프로세스에 의해서만 사용될 수 있음.

보유 대기(Hold and Wait): 최소한 하나의 자원을 보유한 상태에서 다른 프로세스가 사용 중인 추가 자원을 기다림.

비선점(No Preemption): 프로세스가 자원을 스스로 내어놓을 때까지 다른 프로세스에 의해 자원이 강제로 빼앗길 수 없음.

순환 대기(Circular Wait): 프로세스의 집합에서 각 프로세스는 다음 프로세스가 요구하는 자원을 보유하고 있어서 순환적인 대기 관계를 형성.

데드락의 처리 방법

데드락을 처리하는 방법은 크게 세 가지로 나뉨: 예방(Prevention), 회피(Avoidance), 탐지 및 복구(Detection and Recovery).

데드락 예방(Deadlock Prevention):

데드락이 발생하지 않도록 시스템 설계 단계에서부터 조치를 취하는 방법. 상기 네 가지 필요 조건 중 하나 이상을 제거함으로써 데드락을 예방할 수 있음.

데드락 회피(Deadlock Avoidance):

시스템 상태를 지속적으로 체크하면서 자원 할당이 데드락을 유발할 수 있는 상태로 가지 않도록 관리하는 방법. 가장 유명한 데드락 회피 알고리즘 중 하나는 '은행원 알고리즘(Banker's Algorithm)'.

데드락 탐지 및 복구(Deadlock Detection and Recovery):

데드락이 발생한 후에 이를 탐지하고 해결하는 방법. 자원 할당 그래프를 사용하여 데드락을 탐지하고, 이후 프로세스를 종료하거나 자원을 선점하여 문제를 해결.

데드락 무시(Deadlock Ignorance) :

일부 운영 시스템은 데드락을 무시하는 전략을 사용. 이는 데드락이 드물게 발생하고, 데드락에 대한 대처가 더 큰 오버헤드를 유발할 수 있기 때문. 이 경우, 사용자가 시스템의 비정상적인 동작을 감지하고 직접 프로세스를 종료하는 방식으로 대처.

추가 설명

자원 종류와 인스턴스 수: 시스템에서 관리해야 하는 자원의 종류와 각 자원별 인스턴스 수도 데드락 처리 전략을 선택하는 데 중요한 요소. 예를 들어, 한 자원 유형당 단일 인스턴스만 있는 경우와 여러 인스턴스가 있는 경우에는 데드락 회피 전략이 달라질 수 있음.
시스템 성능과 자원 활용: 데드락 예방 및 회피 전략은 시스템 성능과 자원 활용에 영향을 줄 수 있음. 예방 전략은 일반적으로 자원 활용도를 낮출 수 있고, 회피 전략은 시스템의 복잡성을 증가시킬 수 있음.
데드락과 스타베이션(Starvation): 데드락을 처리하는 과정에서 발생할 수 있는 또 다른 문제는 스타베이션. 스타베이션은 특정 프로세스가 자원을 무기한 대기하는 상황을 의미하며, 데드락 해결 과정에서 이러한 상황이 발생하지 않도록 주의해야 함.

profile
일단 가보면 뭐든 있겠지

0개의 댓글