728x90
데드락 (교착상태)
- 첫 번째 스레드는 두 번째 스레드가 들고 있는 객체의 락이 풀리기를 기다리고 있고, 두 번째 스레드 역시 첫 번째 스레드가 들고 있는 객체의 락이 풀리기를 기다리는 상황
- 모든 스레드가 락이 풀리기를 기다리고 있기 때문에, 무한 대기 상태에 빠지게 되며 이런 스레드를 교착상태라 함
데드락 (교착상태)의 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 |