DeadLock

재능없는 개발자·2023년 2월 4일
0

프로세스를 실행하기 위해서는 자원이 필요한데, 두 개 이상의 프로세스가 각자 가지고 있는 자원을 무작정 기다린다면 그 어떤 프로세스도 더이상 진행할 수 없는 교착상태가 된다.

교착 상태 발동 조건

  • 상호 배제
    한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없을 때 발생할 수 있다.
  • 점유와 대기
    자원을 할당받은 상태에서 다른 자원을 할당받기를 기다릴때 발생할 수 있다.
  • 비선점
    프로세스가 자원을 비선점 하고있어, 어떤 프로세스도 다른 프로세스의 자원을 강제로 빼앗지 못하기 때문에 발생한다.
  • 원형 대기
    자원할당 그래프가 원의 형태로 그려졌을때 발생할 수 있다.

교착 상태 해결 방법

교착상태 예방

  • 상호배제 없애기
    모든 자원을 공유 가능하게 만든다. 하지만 현실적으로 불가능하다
  • 점유와 대기 없애기
    한번에 하나의 자원만 사용할 수 있게한다. 하지만 자원의 활용률이 낮아진다. 또한 자원을 많이 요하는 프로세스가 불리해진다.
  • 비선점 없애기
    자원을 이용중인 프로세스로부터 자원을 뺏을 수 있게한다. 일부 자원에 대해선 효과적이지만 프린터 같은 것들에게는 불가능
  • 원형대기 없애기
    모든 자원에 번호를 붙히고, 오름차순으로 자원을 할당한다. 하지만 컴퓨터 내의 모든 자원에 번호를 붙이기는 단순한 작업이 아니다.

교착상태 회피

교착상태 회피는 교착상태가 발생하지 않을 정도로만 조심스럽게 자원을 할당하는 방식이다.
프로세스들에게 할당할 수 있는 자원이 한정된 상황에서 프로세스들이 한번에 많은 자원을 요구할때 교착 상태가
발생할 위험이 증가한다. 때문에 프로세스들에게 배분할 수 있는 자원의 양을 고려하여 교착상태가 발생하지 않을 정도의 양만큼만 자원을 배분하면된다.

안전 순서열은 교착 상태 없이 안전하게 프로세스들에 자원을 할당할 수 있는 순서를 의미한다. 메모장, 웹, 게임이 동시에 자원을 요구하였을때, 웹 - 메모장 - 게임 순서대로 자원을 할당하면 교착상태가 발생하지 않는다 했을때 웹 - 게임 - 메모장이 안전 순서열이 된다. 이렇게 안전 순서열대로 프로세스들 자원을 배분하여 교착상태가 발생하지 않는 상태를 안전 상태라하고, 안전 순서열이 없는 상황을 불안전 상태라고 한다.

교착상태 검출 후 회복

  • 선점을 통한 회복
    교락 상태가 해결될 떄까지 한 프로세스 씩 자원을 몰아주는 방식이다. 교축 상태가 해결될 때까지 다른 프로세스로부터 자원을 강제로 빼앗고 한 프로세스에 할당하는 방식이다.
  • 프로세스 강제 종료를 통한 회복
    모든 프로세를 강제로 종료하거나, 교착상태가 없어질 때까지, 한 프로세스 씩 강제 종료하는 방밥이다. 전자는 가장 단순하면서 확실한 방법이지만, 그만큼 많은 프로세스들이 작업 내역을 일게 될 가능성이 있다. 후자는 작업 내용을 잃는 프로세스는 최대한 줄일 수 있지만, 교착상태가 없어졌는지 확인하는 과정에서 오버헤드를 야기한다.
profile
https://www.youtube.com/watch?v=__9qLP846JE

0개의 댓글