데드락(Dead Lock)

2024. 3. 21. 10:10·CS/OS

 

운영체제 속 데드락이란 시스템 자원에 대한 요구가 뒤엉킨 상태로, 둘 이상의 프로세스가 다른 프로세스가 소유하고 있는 자원을 서로 기다릴 때 무한 대기에 빠지는 상황

 

발생조건

  • 상호배제
    • 한 번에 프로세스 하나만 해당 자원을 사용할 수 있다.
    • 다른 프로세스가 해당 자원을 사용하고 있을 때는 접근할 수 없어야 한다.
  • 점유 대기
    • 자원을 최소한 하나 보유하고, 다른 프로세스에 할당된 자원을 점유하기 위해 대기하는 프로세스가 존재해야 한다.
  • 비선점
    • 이미 소유한 자원을 강제로 빼앗을 수 없다.
    • 자원은 해당 프로세스가 스스로 반납할 때까지 사용 가능해야 한다.
  • 순환 대기
    • 대기 프로세스의 집합이 순환 형태로 자원을 대기하고 있어야 한다.

데드락 방지

1. 예방 (Prevention)

  • 상호 배제 방지 : 한 번에 여러 프로세스가 공유 자원을 사용할 수 있게 한다.(동기화 문제 고려 필요)
  • 점유 대기 방지 : 프로세스 실행에 필요한 모든 자원을 한꺼번에 요구하고 허용할 때까지 작업을 보류한다.
  • 비선점 방지 : 이미 할당된 자원이 선점권이 없다고 가정할 때, 높은 우선순위의 프로세스가 해당 자원을 선점하도록 한다.
    • 뺏어오기 가능
  • 순환 대기 방지 : 자원이 순환 형태로 대기하지 않도록 자원에 고유한 번호를 부여하고, 번호 순서대로 자원을 요구하도록 한다.※ 단점
  • 시스템의 처리량이나 효율성이 떨어진다.
  • 가장 제한적인 방법이다.

2. 회피 (Avoidance)

  • 안전 상태 (Safe State) : 프로세스들이 요청하는 모든 자원을 데드락 없이 차례로 모두 할당해 주는 경우
  • 안전 순서 (Safe Sequence) : 데드락 없이 모든 자원을 할당해 주었을 때의 순서를 의미
  • 프로세스가 자원을 요구할 때, 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는지를 검사하여 교착 상태를 회피하는 기법이다.
  • 안정 상태에 있으면 자원을 할당하고 그렇지 않으면 다른 프로세스들이 자원을 해제할 때까지 대기한다. 

    ※ 단점
    • 미리 최대 자원 요구량을 알아야 하고, 할당할 수 있는 자원 수가 일정해야하는 제약 조건이 존재
  • ※은행원 알고리즘 다익스트라가 제안한 방법으로 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는데서 유래된 기법.

3. 탐지(Detection) & 회복(Recovery)

  • 탐지 기법 : Allocation, Request, Available 등으로 데드락의 발생 여부 탐지
  • 회복 기법 : 데드락을 탐지했다면, 순환 대기에서 벗어나는 회복 방법 사용
    • 프로세스를 종료하는 방법
      • 데드락 상태의 모든 프로세스 중단 : 중간 단계 결과가 폐기되는 단점
      • 데드락 상태가 제거될 때까지 한 프로세스씩 중지
    • 자원을 선점하는 방법
      • 프로세스에 할당된 자원을 선점하고 교착 상태를 해결할 때까지 그 자원을 다른 프로세스에 할당
      • 우선순위가 낮은 프로세스, 수행된 횟수가 적은 프로세스 등을 위주로 프로세스의 자원을 선점한다.

 

※ 참고

은행원 알고리즘

저작자표시 (새창열림)

'CS > OS' 카테고리의 다른 글

동기화 문제  (0) 2024.04.23
인터럽트(interrupt)  (0) 2024.04.05
운영체제  (0) 2024.03.29
Cache  (0) 2024.03.20
프로세스 & 스레드  (0) 2024.03.18
'CS/OS' 카테고리의 다른 글
  • 인터럽트(interrupt)
  • 운영체제
  • Cache
  • 프로세스 & 스레드
tjdgus
tjdgus
  • tjdgus
    Do It...
    tjdgus
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Language
        • Java
      • CS
        • Data Structure
        • OS
        • Algorithm
        • Network
      • 오류 모음집
      • ETC
      • 함수형 프로그래밍
      • JPA
      • Toy
      • 데이터베이스
      • Spring
      • 코딩테스트
        • 99클럽 4기
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    코딩테스트준비
    TiL
    항해99
    99클럽
    개발자취업
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
tjdgus
데드락(Dead Lock)
상단으로

티스토리툴바