교착 상태(Deadlock)?

0️⃣1️⃣·2021년 5월 13일
0

면접 준비

목록 보기
9/11

교착 상태?

각 프로세스는 일부 리소스를 보유한 상태로 다른 프로세스가 보유한 리소스를 기다리기 때문에 교착 상태가 발생

발생 조건 4가지?

상호 배제

  • 리소스를 동시에 사용할 수 없는 조건

점유와 대기

  • 리소스를 점유한 채로, 다른 리소스를 대기하는 조건

비선점

  • 리소스가 사용되어지고 있다면, 선점할 수 없는 조건

환형대기

  • 리소스를 요구하는 방향이 순환을 만드는 조건

예방 방법?

예방하기 위해서는 단순히, 발생 조건들을 하나라도 부정하면 예방할 수 있지만 자원 활용도 문제나 비용 문제가 발생

상호 배제 부정

  • 리소스를 동시에 사용하기 위해서는 리소스를 동시에 사용할 수 있는 장치가 필요하므로 비용적인 문제 고려 필요

점유와 대기 부정

  • 리소스를 점유할 때, 대기 조건이 발생하지 않도록 미리 확인하는 방법이므로 자원 활용도 문제나 기아 문제가 발생 가능

비선점 부정

  • 리소스가 선점되어진다는 것은, 리소스를 언제든지 가질 수 있다는 것을 의미하므로 교착이 발생하지 않지만, 선점시에 기존 정보들의 저장이나 반영이 필요하므로 비용적인 측면이 발생

  • 특정 주체만 리소스를 선점한다면 기아 상태 발생 가능

환형대기 부정

  • 리소스를 요구하는 주체가 환형대기를 만들지 않도록, 주체마다 동작하는 방식을 다르게 설정하도록 설계 필요

회피 방법?

은행원 알고리즘

  • 은행이 사람들에게 돈을 빌려주는 과정에서 유래

  • 안정 상태는 교착 상태가 발생할 가능성 X, 모든 요구를 만족시킬 방법이 존재

  • 불안정 상태는 교착 상태가 발생할 가능성 O, 모든 요구를 만족시킬 방법이 존재하지 않음

  • 불안정 상태와 교착 상태는 동일하지 않음, 불안정 상태는 안정 상태로 갈 수 있음

탐지 방법?

  • 데드락이 발생했을 때, 리소스를 차지하고 있는 프로세스나 쓰레드를 죽이는 방식

  • 어떤 프로세스나 쓰레드를 죽일지 결정하는 알고리즘이 필요

0개의 댓글