∞. 기술 면접/3. 운영체제

09. 기술면접 - 운영체제 - 교착상태의 개념과 조건

THE HEYDAZE 2021. 10. 6. 10:19
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다

교착상태(데드락, Deadlock) 란

- 첫 번째 스레드는 두 번쨰 스레드가 들고 있는 객체의 락(lock)이 풀리기 기다리고 있고,
  두 번째 스레드 역시 첫 번째 스레드가 들고있는 객체의 락(lock)이 풀리기를 기다리고 있는 상황을 일컷는다

- 모든 스레드가 락이 풀리기를 기다리고 있기 때문에, 무한 대기 상태에 빠지게 된다. 이런 스레드를 교착상태에 빠졌다고 한다

 

교착 상태가 되는 4가지 조건

- 상호배체 (mutual exclusion)
  - 한 번에 한 프로세스만 공유 자원을 사용할 수 있다

- 점유대기 (hold and wait) = 들고 기다리기
  - 공유 자원에 대한 접근 권한을 갖고 있는 프로세스가, 그 접근 권한을 양보하지 않은 상태에서 다른 자원에 대한 접근
    권한을 요구할 수 있다

- 비선점형 = 선취=선점 (preemption) 불가능
  - 한 프로세스가 다른 프로세스의 자원 접근 권한강제로 취소할 수 없다

- 순환대기 = 대기 상태의 사이클 (circular wait)
  - 두 개 이상의 프로세스가 자원 접근을 기다리는 데, 그 관계에서 사이클이 존재한다

 

교착 상태(데드락) 방지

- 위 4가지 조건 중 1개만 제거하면 된다
- 공유 자원 중 많은 경우가 한 번에 한 프로세스만 사용할 수 있기 때문에 (예를들어, 프린트) 1번 조건은 제거하기 어렵다 - 동기화를 하기 위해서는 필연적인 방법인 것 이다
- 대부분의 교착상태 방지 알고리즘은 4번 조건, 즉 대기 상태의 사이클이 발생하는 일을 막는 데 초점이 맞춰진다