교착상태(Deadlock)

야란·2021년 8월 20일
0
post-thumbnail

교착상태란?

상호 배제에 의해 나타나는 문제점으로, 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상을 의미함

프로세스는 실행을 위해 여러자원을 필요로 하는데, 어떤 자원은 갖고 있으나 다른자원을 갖지 못할 경우 대기 상태에 들어가서 기다려야함. 자원은 한정되어 있는데 여러 프로세스가 같이 동작하는 상황에서 발생함.
운영체제는 이러한 자원을 프로세스들에게 잘 할당 해줘야 하는데 잘 못해주면 교착상태에 빠짐. 프로세스가 작동할 때는 거미줄처럼 이어져 있기 때문에 교착상태에 빠지면 전체가 멈추게 되는 위험상태에 빠짐. 교착상태를 해결하는 일은 매우 중요함


교착상태 발생의 필요 충분 조건

  • 상호배제(Mutual Exclusion)
    한번에 한개의 프로세스만이 쟈원을 사용할 수 있어야 한다.(이미 점유 된 자원을 다른 프로세스들이 접근 할 수 없다.)
  • 점유와 대기(Hold and wait)
    이미 자원을 보유한 프로세스가 다른 자원을 요청하면서 기다리고 있다.
  • 비선점(Non-Preemption)
    프로세스에 의해 점유된 자원을 다른 프로세스가 강제적으로 빼앗을 수 없다.
  • 환형 대기(Circular wait)
    프로세스가 어떤 자원을 필요로 하지만 그 자원은 다른 프로세스에 의해 사용중이며 반환되지 않은 상태가 환형으로 이뤄진 상태를 말한다.

교착상태 예방

위의 네가지 조건을 허용하지 않는 것이 예방 방법
but, 상호배제와 점유&대기 조건을 배제하는 것은 좋지 않음

  • 상호배제: 한번에 여러개의 프로세스가 공유자원을 사용할 수 있도록 함
  • 점유와 대기: 프로세스 실행 전에 필요한 자원을 할당해서 대기를 없애거나 자원이 점유되지 않은 상태에서 자원을 요구하도록함
  • 비선점: 프로세스가 요구한 자원을 보유하고 있는 프로세스가 자원을 반납 하도록 하면됨
  • 환형 대기: 자원 할당에 순서를 부여하면됨

교착상태 회피

주로 은행원 알고리즘(뱅커 알고리즘, 다익스트라 제안)사용된다.

은행원 알고리즘 설명 :
https://jhnyang.tistory.com/102?category=815411

참고: https://jhnyang.tistory.com/4
참고 : https://coding-factory.tistory.com/311

profile
🤦🏻‍♀️ 아차차

0개의 댓글