1. 데드락이란?
프로세스가 다른 프로세스로부터 자원을 얻고 다음 작업을 진행해야 하지만
자원을 얻지 못하고 다음 작업으로 진행하지 못하는 상황을 데드락이라고 한다.
예시로, 프로세스 1, 프로세스 2가 A, B라는 자원이 필요하고
프로세스 1은 A, 프로세스 2는 B를 할당 받았다고 가정하자.
그러면 프로세스 1은 B를 얻기 위해 프로세스 2에게 요청을 하고
프로세스 2는 A를 얻기 위해 프로세스 1에게 요청을 한다.
이에 따라, 프로세스 1과 2는 서로 요청만 할뿐이지 자원을 얻지 못하여
데드락 상태에 걸리게 된다.
2. 데드락의 조건
데드락의 조건으로 총 4가지가 있다.
상호 배제 - 자원은 한 번에 하나의 프로세스만이 사용할 수 있어야 한다.
-> 한 번에 자원을 두개 이상의 프로세스가 사용할 수 있다고 하면
프로세스 1이 가지고 있는 A를 프로세스 2도 같이 사용할 수 있게 되어 데드락이 걸리지 않는다.
점유 대기 - 최소한 하나의 자원을 가지면서 다른 프로세스에
할당된 자원을 얻기 위해 대기하는 프로세스가 있어야 한다.
-> 자원을 가지고 있지 않은 프로세스가 다른 프로세스에게 자원을 요청한다면
대기 상태가 발생하지 않기 때문에 데드락이 걸리지 않는다.
비선점 - 다른 프로세스에 할당된 자원은 사용이 끝날 때 까지 강제로 빼앗을 수 없다.
-> 프로세스 1이 프로세스 2의 자원을 얻기 위해 대기 하다가 그냥 강제로 빼앗아
버린다면 대기 상태가 사라지기 때문에 데드락이 걸리지 않는다.
순환 대기 - 프로세스의 집합{p1, p2, p3 ... pn}이 있을 때 p1은 p2를 대기하고
p2는 p3를 대기하고 p3... pn-1 까지 진행 후 pn은 p1을 대기하고 있어야 한다.
-> 이전에 말했던 프로세스 1과 프로세스 2 처럼 서로를 순환의 구조로 대기하는 것이 아니라
각각 다른 프로세스를 대기하고 있다면 무한히 대기가 걸리지 않기 때문에 데드락이 걸리지 않는다.
'간단한 IT 지식' 카테고리의 다른 글
[오늘의 지식] TCP, UDP (0) | 2024.04.22 |
---|---|
[오늘의 지식] OSI 7계층 (0) | 2024.04.18 |
[오늘의 지식] CPU 스케줄러 (0) | 2024.04.15 |
[오늘의 지식] 프로세스와 스레드 (0) | 2024.04.11 |
[오늘의 지식] 트리의 순회 (0) | 2024.03.08 |