-
[운영체제] 데드락(Dead lock), 교착상태가 뭐지? + 해결방법ComputerScience/운영체제 2020. 6. 13. 17:27
데드락(Dead lock)이란?
'교착 상태'라고 하며 한정된 자원을 여러 곳에서 사용하려고 할 때 발생할 수 있다.
(DB의 트랜잭션들이 하나의 Table에 대해 연산을 시도할 때도 발생할 수 있다)
데드락 발생 요건
네 가지 조건을 모두 충족할 때 발생한다.
1. 상호배제(Mutal exclusion)
프로세스들이 필요로 하는 자원에 대해 배타적인 통제권을 요구한다.
2. 점유와 대기(Hold and Wait)
자원을 가지고 있는 상태에서 다른 프로세스가 사용하고 있는 자원의 반납을 기다리는 것.
3. 비선점(Non Preemptive)
다른 프로세스의 자원을 강제로 가져올 수 없음.
4. 환형대기(Circle wait)
각 프로세스가 순환적으로 다음 프로세스가 요구하는 자원을 갖고 있는 것
데드락 해결 방법
예방, 회피, 회복, 무시의 4가지 방법이 있다.
1. 예방(Prevention)
네 가지 조건 중 하나를 해결하면 교착상태는 해결된다.
2. 회피(Avoidance)
교착상태의 발생조건을 없애는것 보다는 애초에 발생하지 않도록 알고리즘을 적용하는 방법으로, 자원할당 그래프 알고리즘과 은행원 알고리즘이 있다.
회피 알고리즘 두가지 설명 (클릭)
2020/06/13 - [운영체제] - [운영체제]데드락을 회피할 수 있는 자원할당 그래프, 은행원 알고리즘
3. 회복(Recovery)
교착상태가 발생하는 것을 아예 막지 않고, 만약 교착상태가 발생하면 이후에 문제를 해결하는 방법
4. 무시(Ignore)
그냥 무시하는 방법. 해결할 때 드는 오버헤드로 인한 성능저하가 방치할 때의 성능저하보다 큰 경우 그냥 무시한다.
'ComputerScience > 운영체제' 카테고리의 다른 글
[운영체제] 스핀락(Spinlock)은 무엇인가? (0) 2020.06.14 [운영체제] 뮤텍스(Mutex), 세마포어(Semaphore) 그리고 모니터(Monitor) (0) 2020.06.14 [운영체제]데드락을 회피할 수 있는 자원할당 그래프, 은행원 알고리즘 (0) 2020.06.13 [운영체제/OS] 스레드(Thread), 그리고 프로세스와의 차이 (0) 2020.06.04 [운영체제/OS] 프로세스/문맥교환/스케줄링 (0) 2020.06.03