728x90
✔️ 데드락(DeadLock) 정의
데드락(DeadLock) 이란?
두 개 이상의 프로세스나 스레드가 서로서로 가진 공유 자원을 얻고자 기다리는 경우, 무한히 서로가 서로의 자원을 기다리게 되는 상태를 의미한다. 한정된 자원을 여러 프로세스가 사용하려고 할 때 발생한다.
- Thread 1은 공유 자원 L1을 갖고 있고, 공유 자원 L2 를 기다림.
- Thread 2은 공유 자원 L2을 갖고 있고, 공유 자원 L1 를 기다림.
이런 경우, 현재 서로 원하는 자원이 상대방에 할당되어 있어서 두 프로세스는 무한정 대기(wait) 상태에 빠짐 = DeadLock 상태
✔️ 데드락(DeadLock) 발생 조건
4가지 조건이 모두 성립해야 발생 ! ( 하나라도 성립하지 않으면 데드락 문제 해결 가능 )
- 상호 배제(Mutual Exclusion)
• 자원은 한 번에 한 프로세스만 사용할 수 있음. - 점유 대기(Hold and Wait)
• 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 사용하고 있는 공유 자원을 추가로 점유하기 위해 기다림. - 비선점(No Preemption)
• 다른 프로세스에 할당된 공유 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없음. - 순환 대기(Circular Wait)
• 서로가 상대방이 쥔 공유자원을 기다림. 즉, 프로세스의 집합에서 순환 형태로 자원을 대기하고 있어야함.
✔️ 데드락(DeadLock) 처리
교착상태(= 대기 상태인 프로세스들이 실행 상태로 변경될 수 없는 상태)를 예방 & 회피
- 예방 (prevention)
: deadlock 이 발생하지 않도록, deadlock이 발생하는 4가지 조건이 동시에 발생하지 않도록 한다.
- 상호배제 (Mutual Exclusion) : 여러 프로세스가 공유 자원 사용 -> 변경 x
- 점유대기(Hold and Wait) 부정 : 자원이 필요할 경우 보유 자원을 모두 내려 놓고 재요청
- 비선점 (No Preemption) 부정 : 프로세스가 어떤 자원이 필요한 경우 상대가 보유한 자원을 빼앗아 선점
- 순환대기 (Circular Wait) 부정 : 자원에 고유번호 할당 후 순서대로 자원을 요청
- 회피 (avoidance)
: 교착 상태가 되도록 허용한 다음 회복, 즉 교착 상태 발생 시 피함.
- 프로세스가 자원을 요구할 때, 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는지 사전에 검사하여 교착 상태 회피
- 안정 상태면 자원 할당, 아니면 다른 프로세스들이 자원 해지까지 대기
#참고
https://gyoogle.dev/blog/computer-science/operating-system/DeadLock.html
728x90
'CS 지식 > 운영체제' 카테고리의 다른 글
[운영체제] Semaphore(세마포어) & Mutex(뮤텍스) (0) | 2024.08.24 |
---|---|
[운영체제] Race Condition(경쟁 상태) (0) | 2024.08.24 |
[운영 체제] CPU Scheduling (1) | 2024.08.22 |
[운영 체제] PCB & Context Switching (0) | 2024.08.21 |
[운영 체제] System Call(시스템 콜)이란 무엇인가? (0) | 2024.08.20 |