교착상태 (dead lock)

PUBLISHED 2012. 2. 18. 23:11
POSTED IN 공장
교착상태는 시스템에서 4가지 조건이 동시에 발생할때 나타남
  • 상호배제 (mutual exclusion)
    • 자원이 최소 하나 이상 비공유 (한번에 한 프로세스에만 자원이 할당)
  • 점유와 대기 (hold and wait)
    • 최소 하나의 자원을 보유하면서 다른 프로세스에 할당된 자원을 대기
  • 비선점 (non-preemptive)
    • 다른 프로세스의 자원을 뺏을 수 없음
  • 순환대기 (circular wait)
    • 상대방이 가진 자원을 서로 대기


교착상태 예방(prevention) 기법

  • 상호배제조건 방지
    • 태생적으로 공유가 불가능한 자원도 있기 때문에 어려움
    • 공유가능한 자원은 원래 배타적 접근을 요구하지 않음
  • 점유와 대기조건 방지
    • 프로세스가 작업 수행 전에 필요한 모든 자원을 한꺼번에 요청하고, 획득해서 작업수행
    • 혹은 자원을 전혀 갖고 있지 않을 떄만 자원을 요청할 수 있도록 허용
  • 비선점 조건 방지
    • 어떤 자원을 가진 상태에서 새로운 자원을 얻으려는데 실패하면 가진것도 내 놓기
      • 진행중이던 작업의 상태를 쉽게 저장/복구할 수 있어야 한다는 조건이 필요함
    • 필요한 자원을 대기 프로세스가 선점하고 있다면 뺏아서 쓰기
      • 만약 필요한 자원을 추가로 얻지 못하면 자신이 대기 프로세스 상태가 되고, 누군가 자원을 뺏아갈 수 있음
  • 순환대기조건 방지
    • 자원에 일련의 순서를 부여하고, 각 프로세스는 오름차순으로만 자원을 요청할 수 있도록 하기
    • 자원의 낭비 가능성


교착상태 회피(avoidance) 기법

  • 프로세스 시작 거부
    • 프로세스의 요구가 교착상태를 발생시킬 수 있다면 프로세스 시작을 중단시킴
  • 자원할당 거부
    • 프로세스의 요구가 교착상태를 발생시킬 수 있다면 자원을 할당하지 않음
    • 은행가 알고리즘(Banker's Algorithm)


교착상태 회복(recovery) 기법

  • 프로세스 중지
    • 교착상태 프로세스를 모두 중지
    • 교착상태가 끝날때 까지 하나씩 중지
  • 자원선점
    • 어떤 프로세스의 자원을 뺏아서 다른 프로세스에게 주기
    • 사전 해결조건
      • 비용최소화를 위해 적절한 선점순서 결정 필요
      • 자원을 뺏긴 프로세스의 안정적인 상태복귀
      • 동일한 프로세스가 계속 자원을 뺏기는 일이 없도록 (기아상태 방지:식사하는 철학자 문제)




    '공장' 카테고리의 다른 글

    i-node  (0) 2012.02.19
    맥, 라이언 (Mac OS X, Lion) 시스템 폰트 바꾸기  (0) 2012.02.01
    UML - 연관, 집합, 합성, 상속  (0) 2012.01.22