Deadlock
- 해결법 x
- 두개 이상의 프로세스가 상대방이 가진 자원을 가지고자 함
- 자원을 가지려고 무한정 기다림 그런데 블락되어있기 때문에 영원히 아무것도 못함 -> 기아 현상
- os는 비용이 많이 들기 때문에 데드락을 무시함
- 데드락의 자원은 상호배타적임 즉 독점적으로 자원을 사용함
Resource Allocation Graph
- cycle이 존재시 데드락 발생 가능성 O
- 하나의 인스턴스를 가지는 자원이 있다면 데드락 무조건 발생, 여러개면 데드락 가능성 있음
- 즉 사이클이 없으면 데드락이 없음
발생 조건 4가지
1. 상호 배제 Mutual Exclusion
- 독점 사용, 한 프로세스만이 그 자원 사용
2. 점유하며 대기 Hold and Tight
- 하나의 자원을 가지면서 다른 프로세스가 가진 자원을 더 가지려고 기다림
3. 비선점 No-Preemptive
- 자원을 강제로 뺏을 수 없음, 자발적으로 반납해야함
4. Circular wait 순환 대기
발생조건 해결 방법
1. deadlock prevention
1. 상호 배제 Mutual Exclusion
- 해결방법 없음 자원의 속성을 바꾸기는 힘듬
2. 점유하며 대기 Hold and Tight
- 자원이 없을때만 요청
- 프로세스가 필요로 하는 자원을 한거번에 모두 요구
- 실패시 대기
*문제 : 당장 쓰지도 않는 자원을 다 요청한다면 다른 프로세스가 자원이 부족해서 실행 못할 수 있음
-> 낮은 자원이용도, 기아상태 발생
3. 비선점 No-Preemptive
- 프로세스가 자원을 요청할때 요청된 자원이 즉시 할당되지 않으면(wait 상태가 되면)
자기가 가진 자원을 모두 자진해서 반납 -> 그 자원은 다른 프로세스가 사용
*문제 : 진행했던 작업이 무효화 됨
4. Circular wait 순환 대기
- 자원의 순서를 정해서 순서대로 요청 (오름차순으로만 요청함 역방향x , circular 끊어버림)
<<<<데드락 prevention의 단점>>>>
1. 장치 이용률 낮아짐
2. 시스템 처리율 낮아짐
3. 프로세스가 기아상태에 빠질 수 있음
4. 비용 높고 자원낭비
>>장점은 데드락이 절대 발생하지 않음<<
2.deadlock avoidance
- 프로세스가 자원을 요청할 때 사전 정보를 이용하여 안전 상태(safe state)를 유지하는 방법
- 사전 정보 -> 데드락을 회피하기위한 프로세스 정보 있어야함
- 시스템을 safe 상태로만 유지할것, unsafe 상태로 들어가지 못하게 보장
<safe state>
- 모든 프로세스가 완료될 수 있는 자원의 할당 순서를 보장하는 상태
- safe sequence : 남아있던 자원을 차례로 몰아주고 -> 끝 -> 반납, 이것을 반복해서 나오는 순서
- 시스템이 safe state라면 모든 프로세스의 safe sequence가 존재해야함
장점 : 데드락 발생 막아짐, 롤백필요없음. 자원할당이 prevention에 비해 자유로움
단점 : 높은 시스템 오버헤드, 낮은 자원 활용도, 최대 자원 요구량을 os에 미리 알려줘야함
'OS' 카테고리의 다른 글
Process 동기화 (0) | 2024.10.27 |
---|---|
OS Scheduling (0) | 2024.10.27 |
Process, Thread (0) | 2024.10.26 |
Multi Programmed System : Dual- Mode, protection 기법 (0) | 2024.10.26 |
저장 구조 및 입출력 (3) | 2024.10.26 |