운영체제 | Deadlock

성수당·2025년 9월 5일

운영체제

목록 보기
7/31
post-thumbnail

🥔 Deadlock이란?

운영체제에서 Deadlock(교착 상태)둘 이상의 프로세스가 서로 자원을 점유한 채, 상대방의 자원을 기다리며 무한히 대기하는 상태를 말한다.

이러한 상태가 발생하면, 해당 프로세스들은 더 이상 진행되지 못하고 정지하게 된다. 특히 멀티프로세스 환경에서 자원 공유가 많은 시스템일수록 주의해야 할 중요한 개념이다.

🥔 Deadlock 발생 조건 (Coffman의 4조건)

Deadlock이 발생하려면 다음의 네 가지 조건이 동시에 성립되어야 한다:

조건설명
상호 배제(Mutual Exclusion)자원은 한 번에 한 프로세스만 사용할 수 있다
점유와 대기(Hold and Wait)자원을 가진 채, 다른 자원을 기다린다
비선점(No Preemption)할당된 자원은 강제로 빼앗을 수 없다
환형 대기(Circular Wait)서로가 상대방의 자원을 기다리는 원형 구조가 존재

이 네 가지 중 하나라도 깨지면 Deadlock은 발생하지 않는다.

🥔 Deadlock 예시

다음은 두 개의 프로세스가 각각 프린터와 파일 자원을 점유한 채, 서로의 자원을 기다리는 상황이다:

P1: 프린터 획득 → 파일 요청 (대기)
P2: 파일 획득 → 프린터 요청 (대기)

두 프로세스 모두 대기 상태로 진입하며, 영원히 빠져나오지 못한다.

🥔 해결 방법 (Deadlock Handling)

🥔 1. 예방 (Deadlock Prevention)

4가지 발생 조건 중 하나 이상을 제거하여 deadlock 자체를 미리 방지하는 방법.

예시:

  • 점유와 대기 금지: 자원을 모두 한 번에 요청
  • 비선점 제거: 자원을 점유한 프로세스를 강제로 preempt
  • 환형 대기 제거: 자원에 고정된 순서 부여 (자원 할당 순서 제한)

🥔 2. 회피 (Deadlock Avoidance)

  • 자원을 할당하기 전에, deadlock이 발생하지 않을 안전 상태(Safe State) 인지 확인
  • 대표 알고리즘: Banker’s Algorithm (은행가 알고리즘)

자원 요청 시 시스템이 위험 상태로 진입하는 것을 막는다

🥔 3. 탐지 및 복구 (Detection & Recovery)

  • Deadlock 발생을 허용하고, 정기적으로 탐지하여 복구 작업 수행

  • 복구 방법:

    • 프로세스 강제 종료
    • 자원 회수 및 재할당

🥔 4. 무시 (Ignore)

  • Deadlock은 드물게 발생하며, 시스템이 알아서 처리하도록 놔두자”는 방식
  • 대표적으로 UNIX, Linux는 대부분 이 방식을 채택함

🥔 Banker’s Algorithm 간략 개념

  • 각 프로세스가 최대 자원 수를 시스템에 미리 알림
  • 현재 할당 상태와 사용 가능 자원 수를 기반으로 요청을 수락 또는 거절
  • 항상 시스템이 Safe State를 유지하도록 보장

🥔 데드락 탐지 예시: 자원 할당 그래프

자원 할당 상태를 그래프로 표현한 후, 사이클이 존재하면 Deadlock 발생 가능성 존재

P1 → R1 → P2 → R2 → P1 (사이클 발생 → 데드락)

🥔 실제 적용 예시

상황설명
데이터베이스 트랜잭션두 트랜잭션이 서로의 lock을 기다림
파일 시스템하나의 파일을 점유한 채, 다른 파일 lock 요청
멀티 스레드 서버각 스레드가 락을 여러 개 사용하며 충돌 발생

🥔 정리

  • Deadlock은 시스템 자원을 병렬로 사용하는 구조에서 빈번하게 발생
  • 4가지 발생 조건을 기억하고, 설계 단계에서 예방 또는 회피 전략을 포함하는 것이 중요
  • 실무에서는 Deadlock 발생 빈도와 처리 비용을 고려하여 전략적으로 대응
profile
말하는 감자🥔

0개의 댓글