데드락 (Deadlock)

이혜란·2025년 9월 29일
0

기타 자료 공유

목록 보기
10/11

교착상태 (Deadlock)

공유 자원 사용으로 여러 프로세스가 서로 자원을 기다리다 무한 대기에 빠져 아무 작업도 진행하지 못하는 상태

교착상태 발생 필요조건 (4가지)

  1. 상호배제: 한 자원은 한 번에 하나의 프로세스만 사용 가능
  2. 비선점: 자원을 강제로 빼앗을 수 없음
  3. 점유와 대기: 자원을 가진 상태에서 다른 자원을 기다림
  4. 원형 대기: 프로세스들이 원형 구조로 서로의 자원을 기다림

네 가지 조건 중 하나라도 깨지면 교착상태 발생하지 않음

교착상태 해결 방법

1. 회피

  • 교착상태가 발생하지 않도록 자원 할당 조절
  • 시스템은 항상 안정 상태를 유지해야 함
  • 불안정 상태 = 교착상태로 이어질 가능성 있음

은행원 알고리즘

  • 운영체제가 전체 자원의 수를 알고 있어야 함
  • 프로세스는 필요한 최대 자원 수를 운영체제에 알려야 함
  • 안정 상태를 유지하도록 자원 할당
  • 단점: 계산 비용이 크고 비효율적

2. 검출

교착상태를 허용하되, 발생하면 찾아내어 복구

  • 가벼운 검출
    • 타이머 사용 → 일정 시간 동안 작업이 진행되지 않으면 교착상태로 판단
    • 체크포인트에서 롤백
  • 무거운 검출
    • 자원 할당 그래프를 이용해 교착상태 탐지
    • 운영체제가 자원 사용 상황을 지속적으로 추적
    • 오버헤드가 크지만 정확도 높음

0개의 댓글