OS

[OS] 데드락

집한구석 2021. 11. 6. 15:26
728x90

데드락 (교착상태)

  • 첫 번째 스레드는 두 번째 스레드가 들고 있는 객체의 락이 풀리기를 기다리고 있고, 두 번째 스레드 역시 첫 번째 스레드가 들고 있는 객체의 락이 풀리기를 기다리는 상황
  • 모든 스레드가 락이 풀리기를 기다리고 있기 때문에, 무한 대기 상태에 빠지게 되며 이런 스레드를 교착상태라 함 

데드락 (교착상태)의 4가지 조건

  1. 상호배제 : 자원에 대해서 여러 프로세스가 동시에 접근 불가한 것을 뜻함
  2. 점유대기 : 공유 자원에 대한 접근 권한을 갖고 있는 프로세스가, 그 접근 권한을 양보하지 않은 상태에서 다른 자원에 대한 접근 권한을 요구하는 것 
  3. 비선점 : 한 프로세스가 다른 프로세스의 자원 접근 권한을 가져 올 수 없음을 뜻함
  4. 순환대기 : 두 개 이상의 프로세스가 자원 접근을 기다리는데, 그 관계에 사이클이 존재하는 것을 뜻함

데드락 (교착상태) 방지 

  • 데드락 (교착상태) 4가지 조건중 하나만 제거하면 됨
  • 공유 자원 중 많은 경우가 한 번에 한 프로세스만 사용할 수 있기 때문에(예를 들어, 프린트) 상호배제는 제거하기 어려움
  • 대부분의 교착상태 방지 알고리즘은 순환대기를 제거하는 것, 즉 대기 상태의 사이클이 발생하는 일을 막는 데 초점이 맞춰져 있음

'OS' 카테고리의 다른 글

[OS] 멀티프로세스 대신 멀티쓰레드 사용이유  (0) 2021.11.06
[OS] Thread Safe  (0) 2021.11.06
[OS] Thread (쓰레드)  (0) 2021.10.03
[OS] Process (프로세스)  (0) 2021.07.11
[OS] 뮤텍스 / 세마포어  (0) 2021.06.13