[CS/운영체제] - 데드락 (DeadLock)

황제연·2025년 6월 23일
0

CS학습

목록 보기
114/193
post-thumbnail

데드락

데드락이란 둘 이상의 프로세스가 서로 상대방의 자원을 기다리며 영원이 진행할 수 없는 상태를 말합니다

데드락 발생 조건

다음 네가지 조건이 동시에 만족될 때 데드락이 발생할 수 있습니다

상호배제 (Mutual Exclusion)

하나의 자원이 한번에 하나의 프로세스만 사용 가능합니다

점유와 대기 (Hold and Wait)

프로세스가 이미 자원을 점유하면서 추가 자원을 기다립니다

비선점 (Non-preemptive)

자원을 강제로 뺏을 수 없습니다

순환대기 (Circular Wait)

각 프로세스가 순환적으로 다음 프로세스의 자원을 기다립니다

데드락 처리 방법

예방 (Prevention)

데드락의 4가지 조건 중 하나 이상을 미리 꺠뜨려 데드락을 예방합니다

회피 (Avoidance)

자원을 할당 전에 데드락 가능성을 사전에 분석해서 피합니다 (Banker's 알고리즘 사용)

탐지와 복구 (Detection & Recovery)

시스템이 주기적으로 데드락을 탐지하고, 탐지되면 복구 조치를 수행합니다 (프로세스 강제종료 등)

무시 (Ignorance)

데드락 발생 확률이 극히 낮다면 발생하지 않는다고 가정하고 무시합니다

대표적인 데드락 처리 알고리즘

데드락을 회피하기 위한 대표적인 알고리즘인 Banker's Algorithm은
자원을 할당하기 전에 자원을 요청하는 프로세스에게 자원을 줬을 때,
안전상태(Safe State)를 유지할 수 있는지 검사합니다

안전상태란?

안전상태란 데드락이 발생하지 않고 모든 프로세스가 자원을 확보하여 실행을 마칠 수 있는 상태입니다

Banker's 알고리즘은 프로세스가 자원 요청 시, 시스템은 그 요청을 임시 할당해보고
데드락이 발생할지 검사한 후에만 실제로 할당합니다

profile
Software Developer

0개의 댓글